Integración de Estudio de Machine Learning (clásico) en Stream Analytics

Importante

La compatibilidad con Estudio de Azure Machine Learning (clásico) finalizará el 31 de agosto de 2024. Se recomienda realizar la transición a Azure Machine Learning antes de esa fecha.

Desde el 1 de diciembre de 2021, no se puede crear nuevos recursos de Estudio de Machine Learning (clásico) (área de trabajo y plan de servicio web). Hasta el 31 de agosto de 2024, podrá seguir usando los experimentos y servicios web existentes de Estudio de Machine Learning (clásico). Para más información, vea:

La documentación de Estudio de Machine Learning (clásico) se está retirando y es posible que no se actualice en el futuro.

Azure Stream Analytics admite funciones definidas por el usuario (UDF) que llaman a puntos de conexión de Estudio de Azure Machine Learning (clásico). La biblioteca de API de REST de Stream Analytics describe la compatibilidad con la API de REST para esta característica.

Este artículo proporciona la información adicional necesaria para una implementación correcta de esta capacidad en Stream Analytics. También tiene disponible un tutorial.

Información general: terminología de Estudio de Machine Learning (clásico)

Estudio de Machine Learning (clásico) de Microsoft proporciona una herramienta colaborativa de arrastrar y colocar que le permite crear, probar e implementar soluciones de análisis predictivo en sus datos. Puede usar Estudio de Machine Learning (clásico) para interactuar con estos recursos de aprendizaje automático:

  • Área de trabajo: un contenedor con todos los demás recursos de Machine Learning en un solo lugar para la administración y el control.
  • Experimento: una prueba que los científicos de datos crean para usar conjuntos de datos y entrenar un modelo de aprendizaje automático.
  • Punto de conexión: un objeto que se usa para tomar características como entrada, aplicar un modelo de aprendizaje automático especificado y devolver la salida puntuada.
  • Servicio web de puntuación: una colección de puntos de conexión.

Cada punto de conexión tiene varias API para la ejecución de lotes y la ejecución sincrónica. Stream Analytics usa la ejecución sincrónica. El servicio específico se denomina servicio de solicitud y respuesta en Estudio de Machine Learning (clásico).

Recursos de Estudio de Machine Learning (clásico) necesarios para trabajos de Stream Analytics

Ejecutar correctamente el procesamiento de trabajos de Stream Analytics requiere un punto de conexión de solicitud/respuesta, una clave de API y una definición de Swagger. Stream Analytics tiene un punto de conexión adicional que construye la dirección URL de Swagger, busca en la interfaz y devuelve al usuario una definición de UDF predeterminada.

Configuración de una UDF de Stream Analytics y Estudio de Machine Learning (clásico) a través de la API de REST

Mediante las API de REST, puede configurar un trabajo para que llame a funciones de Estudio de Machine Learning (clásico):

  1. Crear un trabajo de Stream Analytics.
  2. Definir una entrada.
  3. Definir una salida.
  4. Crear una UDF.
  5. Crear una transformación de Stream Analytics que llame a la UDF.
  6. Inicie el trabajo.

Crear una UDF con las propiedades básicas

Por ejemplo, el siguiente código de muestra crea una UDF escalar denominada newudf que enlaza con un punto de conexión de Estudio de Machine Learning (clásico). Puede encontrar el valor de endpoint (URI de servicio) en la página de ayuda de la API del servicio elegido. Puede encontrar el valor de apiKey en la página principal del servicio.

PUT : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.StreamAnalytics/streamingjobs/<streamingjobName>/functions/<udfName>?api-version=<apiVersion>

Ejemplo del cuerpo de solicitud:

    {
        "name": "newudf",
        "properties": {
            "type": "Scalar",
            "properties": {
                "binding": {
                    "type": "Microsoft.MachineLearning/WebService",
                    "properties": {
                        "endpoint": "https://ussouthcentral.services.azureml.net/workspaces/f80d5d7a77fb4b46bf2a30c63c078dca/services/b7be5e40fd194258796fb402c1958eaf/execute ",
                        "apiKey": "replacekeyhere"
                    }
                }
            }
        }
    }

Llamada al punto de conexión RetrieveDefaultDefinition para la UDF predeterminada

Una vez creada la estructura de la UDF, se necesita la definición completa de esta. El punto de conexión RetrieveDefaultDefinition ayuda a obtener la definición predeterminada de una función escalar enlazada a un punto de conexión de Estudio de Machine Learning (clásico).

La siguiente carga requiere obtener la UDF predeterminada para una función escalar enlazada a un punto de conexión de Estudio (clásico). No especifica el punto de conexión real, ya que la solicitud de PUT ya lo proporcionó.

Stream Analytics llama al punto de conexión desde la solicitud, si la solicitud proporcionó explícitamente un punto de conexión. De lo contrario, Stream Analytics usa el punto de conexión al que se hizo referencia originalmente. Aquí, la UDF toma un único parámetro de cadena (una oración) y devuelve una salida única de tipo string que indica la etiqueta Sentiment para esa oración.

POST : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.StreamAnalytics/streamingjobs/<streamingjobName>/functions/<udfName>/RetrieveDefaultDefinition?api-version=<apiVersion>

Ejemplo del cuerpo de solicitud:

    {
        "bindingType": "Microsoft.MachineLearning/WebService",
        "bindingRetrievalProperties": {
            "executeEndpoint": null,
            "udfType": "Scalar"
        }
    }

La salida de esta solicitud tiene un aspecto similar al del ejemplo siguiente:

    {
        "name": "newudf",
        "properties": {
            "type": "Scalar",
            "properties": {
                "inputs": [{
                    "dataType": "nvarchar(max)",
                    "isConfigurationParameter": null
                }],
                "output": {
                    "dataType": "nvarchar(max)"
                },
                "binding": {
                    "type": "Microsoft.MachineLearning/WebService",
                    "properties": {
                        "endpoint": "https://ussouthcentral.services.azureml.net/workspaces/f80d5d7a77ga4a4bbf2a30c63c078dca/services/b7be5e40fd194258896fb602c1858eaf/execute",
                        "apiKey": null,
                        "inputs": {
                            "name": "input1",
                            "columnNames": [{
                                "name": "tweet",
                                "dataType": "string",
                                "mapTo": 0
                            }]
                        },
                        "outputs": [{
                            "name": "Sentiment",
                            "dataType": "string"
                        }],
                        "batchSize": 10
                    }
                }
            }
        }
    }

Revisión de la UDF con la respuesta

Ahora, debe aplicar revisiones a la UDF con la respuesta anterior.

PATCH : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.StreamAnalytics/streamingjobs/<streamingjobName>/functions/<udfName>?api-version=<apiVersion>

Cuerpo de la solicitud (salida de RetrieveDefaultDefinition):

    {
        "name": "newudf",
        "properties": {
            "type": "Scalar",
            "properties": {
                "inputs": [{
                    "dataType": "nvarchar(max)",
                    "isConfigurationParameter": null
                }],
                "output": {
                    "dataType": "nvarchar(max)"
                },
                "binding": {
                    "type": "Microsoft.MachineLearning/WebService",
                    "properties": {
                        "endpoint": "https://ussouthcentral.services.azureml.net/workspaces/f80d5d7a77ga4a4bbf2a30c63c078dca/services/b7be5e40fd194258896fb602c1858eaf/execute",
                        "apiKey": null,
                        "inputs": {
                            "name": "input1",
                            "columnNames": [{
                                "name": "tweet",
                                "dataType": "string",
                                "mapTo": 0
                            }]
                        },
                        "outputs": [{
                            "name": "Sentiment",
                            "dataType": "string"
                        }],
                        "batchSize": 10
                    }
                }
            }
        }
    }

Implementación de una transformación de Stream Analytics que llame a la UDF

Consulte la UDF (aquí llamada scoreTweet) para cada evento de entrada y escriba una respuesta para ese evento en una salida:

    {
        "name": "transformation",
        "properties": {
            "streamingUnits": null,
            "query": "select *,scoreTweet(Tweet) TweetSentiment into blobOutput from blobInput"
        }
    }

Obtener ayuda

Para obtener más ayuda, consulte la página de preguntas y respuestas de Microsoft sobre Azure Stream Analytics.

Pasos siguientes