Puede utilizar Microsoft Azure ML Service para realizar el registro de carga útil, el registro de retroalimentación y para medir la precisión del rendimiento, la detección de sesgos en tiempo de ejecución, la explicabilidad y la función de autodebias para las evaluaciones de modelos.
Los siguientes marcos de servicios Microsoft Azure Machine Learning son compatibles con las evaluaciones de modelos:
Tabla 1. Detalles del soporte de las infraestructuras
Infraestructura | Tipo de problema | Tipo de datos |
---|---|---|
Nativa | Clasificación | Estructurada |
scikit-learn | Clasificación | Estructurada |
scikit-learn | Regresión | Estructurada |
Para generar el modelo de detección de desviación, debe utilizar la versión de scikit-learn 0.20.2 en cuadernos.
Azure Automated Machine Learning managed endpoints y Azure models se gestionan con cuadernos para evaluaciones de modelos.
Añadir el servicio Microsoft Azure ML
Puede configurar las evaluaciones de modelos para que funcionen con Microsoft Azure ML Service mediante uno de los métodos siguientes:
- La primera vez que añada un proveedor de aprendizaje automático, puede utilizar la interfaz de configuración. Para obtener más información, consulte Especificación de una instancia de Microsoft Azure ML Service.
- También puede añadir el proveedor de aprendizaje automático utilizando el SDK de Python. Debe utilizar este método si desea tener más de un proveedor. Para obtener más información, consulte Añada el motor de aprendizaje automático de Microsoft Azure.
Se llama a varios puntos finales REST necesarios para interactuar con el servicio Azure ML. Para ello, debe vincular Azure Machine Learning Service.
- Cree un principal de Azure Active Directory Service.
- Especifique los detalles de las credenciales cuando añada la vinculación del servicio Azure ML Service, ya sea a través de la interfaz de usuario o del SDK de Python.
Requisitos de los archivos de solicitud y respuesta JSON
Para que las evaluaciones de modelos funcionen con Azure ML Service, las implementaciones de servicios web que cree deben cumplir ciertos requisitos. Los despliegues del servicio web que se crean deben aceptar solicitudes JSON y devolver respuestas JSON, de acuerdo con los siguientes requisitos.
Formato de solicitud JSON de servicio web necesario
- El cuerpo de la solicitud de API REST debe ser un documento JSON que contenga una sola matriz JSON de objetos JSON
- La matriz JSON debe denominarse
"input"
. - Cada objeto JSON solo puede incluir pares de clave-valor simples, donde los valores pueden ser una serie, un número,
true
,false
onull
- Los valores no pueden ser un objeto o matriz JSON
- Cada objeto JSON de la matriz debe tener todas las mismas claves (y, por lo tanto, el número de claves) especificadas, independientemente de si hay un valor no
null
disponible
El siguiente archivo JSON de ejemplo cumple los requisitos anteriores y se puede utilizar como plantilla para crear sus propios archivos de solicitud JSON:
{
"input": [
{
"field1": "value1",
"field2": 31,
"field3": true,
"field4": 2.3
},
{
"field1": "value2",
"field2": 15,
"field3": false,
"field4": 0.1
},
{
"field1": null,
"field2": 5,
"field3": true,
"field4": 6.1
}
]
}
Formato de respuesta JSON de servicio web necesario
Tome nota de las consideraciones siguientes al crear un archivo de respuesta JSON:
El cuerpo de respuesta de API REST debe ser un documento JSON que contenga una matriz JSON de objetos JSON
La matriz JSON debe denominarse
"output"
.Cada objeto JSON solo puede incluir pares de clave-valor, donde los valores pueden ser una serie, un número,
true
,false
,null
o una matriz que no contenga ningún otro objeto JSON o matricesLos valores no pueden ser un objeto JSON
Cada objeto JSON de la matriz debe tener todas las mismas claves (y número de claves) especificadas, independientemente de si hay un valor no
null
disponiblePara modelos de clasificación: el servicio web debe devolver una matriz de probabilidades para cada clase y la ordenación de las probabilidades debe ser coherente para cada objeto JSON de la matriz
- Ejemplo: supongamos que tiene un modelo de clasificación binaria que predice el riesgo de crédito, donde las clases son
Risk
oNo Risk
- Para cada resultado devuelto en la matriz "output", los objetos deben contener un par de clave-valor que incluya las probabilidades en un orden fijo, de la forma siguiente:
{ "output": [ { "Scored Probabilities": ["Risk" probability,"No Risk" probability ] }, { "Scored Probabilities": ["Risk" probability,"No Risk" probability ] } ]
- Ejemplo: supongamos que tiene un modelo de clasificación binaria que predice el riesgo de crédito, donde las clases son
Para ser coherente con las herramientas visuales de Azure ML que se utilizan en Azure ML Studio y Service, utilice los siguientes nombres de claves:
- el nombre de clave
"Scored Labels"
para la clave de salida que indica el valor predicho del modelo - el nombre de clave
"Scored Probabilities"
para la clave de salida que indica una matriz de probabilidades para cada clase
El siguiente archivo JSON de ejemplo cumple los requisitos anteriores y se puede utilizar como plantilla para crear sus propios archivos de respuesta JSON:
{
"output": [
{
"Scored Labels": "No Risk",
"Scored Probabilities": [
0.8922524675865824,
0.10774753241341757
]
},
{
"Scored Labels": "No Risk",
"Scored Probabilities": [
0.8335192848546905,
0.1664807151453095
]
}
]
}
Cuadernos de ejemplo
Los siguientes cuadernos muestran cómo trabajar con Microsoft Azure ML Service:
Especificación de una instancia de Microsoft Azure ML Service
El primer paso para configurar las evaluaciones de modelos es especificar una instancia de Microsoft Azure ML Service. La instancia de Azure ML Service es dónde se almacenan los modelos y despliegues de inteligencia artificial.
Los modelos y despliegues de IA se conectan en una instancia de Azure ML Service para las evaluaciones de los modelos. Para conectar su servicio a, vaya a la pestaña Configurar ' , añada un proveedor de aprendizaje automático y haga clic en el icono Editar ' . Además de un nombre y una descripción y de especificar si el entorno es Preproducción o Producción, debe proporcionar la siguiente información:
- ID de cliente: El valor de serie real del ID de cliente, que verifica quién es y autentica y autoriza las llamadas que realiza a Azure Service.
- Secreto de cliente: El valor de serie real del secreto, que verifica quién es y autentica y autoriza las llamadas que realiza a Azure Service.
- Arrendatario: El ID de arrendatarioo correspondiente a su organización y que es una instancia dedicada de Azure AD. Para buscar el ID de arrendatario, pase el puntero del ratón sobre el nombre de la cuenta para obtener el directorio y el ID de arrendatario, o seleccione Azure Active Directory > Propiedades > ID de directorio en el portal de Azure.
- ID de suscripción: Credenciales de suscripción que identifican de forma exclusiva su suscripción a Microsoft Azure. El IDforms de suscripción forma parte del URI para cada llamada de servicio.
Consulte Cómo utilizar el portal para crear una entidad de servicio y una aplicación de Azure AD que puedan acceder a recursos para ver instrucciones sobre cómo obtener sus credenciales de Microsoft Azure.
Ahora está preparado para seleccionar los modelos desplegados y configurar los supervisores. Sus modelos desplegados en el panel Insights, donde puede hacer clic en Añadir al panel. Seleccione los despliegues que desea supervisar y pulse Configurar.
Para obtener más información, consulte Configurar supervisores.
Registro de carga útil con el motor de Microsoft Azure ML Service
Añadir el motor de Microsoft Azure ML Service
Un motor de ejecución watsonx.ai que no sea IBM IBM se vincula como Personalizado y consta de metadatos. No hay integración directa con el servicio watsonx.ai Runtime que IBM sea de IBM.
service_type = "azure_machine_learning_service"
added_service_provider_result = wos_client.service_providers.add(
name=SERVICE_PROVIDER_NAME,
description=SERVICE_PROVIDER_DESCRIPTION,
service_type = service_type,
credentials=AzureCredentials(
subscription_id= AZURE_ENGINE_CREDENTIALS['subscription_id'],
client_id = AZURE_ENGINE_CREDENTIALS['client_id'],
client_secret= AZURE_ENGINE_CREDENTIALS['client_secret'],
tenant = AZURE_ENGINE_CREDENTIALS['tenant']
),
background_mode=False
).result
Puede ver el enlace de servicio con el mandato siguiente:
client.service_providers.list()
Salida de ejemplo:
uid name service_type created
410e730f-8462-45fe-8b41-a029d6d6043a My Azure ML Service engine azure_machine_learning_service2019-06-10T22:10:29.398Z
Añadir suscripción de Microsoft Azure ML Service
Añadir suscripción
asset_deployment_details = wos_client.service_providers.list_assets(data_mart_id=data_mart_id, service_provider_id=service_provider_id).result
asset_deployment_details
deployment_id=''
for model_asset_details in asset_deployment_details['resources']:
if model_asset_details['metadata']['guid']==deployment_id:
break
azure_asset = Asset(
asset_id=model_asset_details["entity"]["asset"]["asset_id"],
name=model_asset_details["entity"]["asset"]["name"],
url=model_asset_details["entity"]["asset"]["url"],
asset_type=model_asset_details['entity']['asset']['asset_type'] if 'asset_type' in model_asset_details['entity']['asset'] else 'model',
input_data_type=InputDataType.STRUCTURED,
problem_type=ProblemType.BINARY_CLASSIFICATION
)
deployment_scoring_endpoint = model_asset_details['entity']['scoring_endpoint']
scoring_endpoint = ScoringEndpointRequest(url = model_asset_details['entity']['scoring_endpoint']['url'],request_headers = model_asset_details['entity']['scoring_endpoint']['request_headers'],
credentials = None)
deployment = AssetDeploymentRequest(
deployment_id=model_asset_details['metadata']['guid'],
url=model_asset_details['metadata']['url'],
name=model_asset_details['entity']['name'],
description=model_asset_details['entity']['description'],
deployment_type=model_asset_details['entity']['type'],
scoring_endpoint = scoring_endpoint
)
asset_properties = AssetPropertiesRequest(
label_column="Risk ",
prediction_field='Scored Labels',
probability_fields=['Scored Probabilities'],
training_data_reference=training_data_reference,
training_data_schema=None,
input_data_schema=None,
output_data_schema=None,
)
subscription_details = wos_client.subscriptions.add(
data_mart_id=data_mart_id,
service_provider_id=service_provider_id,
asset=azure_asset,
deployment=deployment,
asset_properties=asset_properties,
background_mode=False
).result
Obtener lista de suscripciones
subscription_id = subscription_details.metadata.id
subscription_id
details: wos_client.subscriptions.get(subscription_id).result.to_dict()
Habilitar registro de carga útil
Habilitar el registro de carga útil en la suscripción
payload_data_set_id = None
payload_data_set_id = wos_client.data_sets.list(type=DataSetTypes.PAYLOAD_LOGGING,
target_target_id=subscription_id,
target_target_type=TargetTypes.SUBSCRIPTION).result.data_sets[0].metadata.id
Obtener detalles de registro
subscription.payload_logging.get_details()
Puntuación y registro de carga útil
Puntúe el modelo. Para ver un ejemplo completo, consulte el cuaderno Trabajar con Azure Machine Learning Service Engine.
Almacene la solicitud y respuesta en la tabla de registro de carga útil:
wos_client.data_sets.store_records(data_set_id=payload_data_set_id, request_body=[PayloadRecord(
scoring_id=str(uuid.uuid4()),
request=request_data,
response=response_data,
response_time=460
)])
Para los idiomas distintos de Python, también puede registrar la carga útil utilizando una API REST.
Tema principal: Motores, infraestructuras y modelos de aprendizaje automático soportados