Marcos de aprendizaje automático personalizados
Puedes utilizar tu propio marco de aprendizaje automático para llevar a cabo el registro de cargas útiles y de retroalimentación, así como para medir la precisión del rendimiento, detectar sesgos en tiempo de ejecución, evaluar la explicabilidad, detectar desviaciones y aplicar la función de corrección automática de sesgos en las evaluaciones de modelos. El marco de aprendizaje automático personalizado debe ser equivalente a IBM Watson Machine Learning.
Los siguientes marcos de aprendizaje automático personalizados admiten evaluaciones de modelos:
| Infraestructura | Tipo de problema | Tipo de datos |
|---|---|---|
| Equivalente a IBM Watson Machine Learning | Clasificación | Estructurados |
| Equivalente a IBM Watson Machine Learning | Regresión | Estructurados |
Si el modelo no es equivalente a IBM Watson Machine Learning, debes crear un envoltorio para el modelo personalizado que exponga los puntos finales de la API REST necesarios. Además, debes establecer una conexión entre Watson OpenScale y el motor de aprendizaje automático personalizado.
¿Cuándo es un motor de aprendizaje automático personalizado la mejor opción para mí?
Un motor de aprendizaje automático personalizado es la mejor opción cuando se cumplen las situaciones siguientes:
- No estás utilizando ningún producto ya disponible para implementar tus modelos de aprendizaje automático. Dispones de un sistema para gestionar tus modelos, pero no existe soporte directo para esa función en las evaluaciones de modelos.
- El servidor que está utilizando, proporcionado por un proveedor externo, aún no es compatible con las evaluaciones de modelos. En este caso, considere el desarrollo de un motor de aprendizaje automático personalizado que englobe los despliegues originales o nativos.
Cómo funciona
En la imagen siguiente se muestra el soporte de entorno personalizado:

También puede consultar los enlaces siguientes:
Watson OpenScale API de registro de carga útil
Criterios de entrada para que el modelo admita supervisores
En el siguiente ejemplo, el modelo toma como entrada un vector de características, que es básicamente un conjunto de campos con nombre y sus valores.
{ "fields": [ "name", "age", "position" ], "values": [ [ "john", 33, "engineer" ], [ "mike", 23, "student" ] ]Se puede evaluar la imparcialidad del
“age”campo.Si la entrada es un tensor o una matriz, transformados a partir del espacio de características de entrada, ese modelo no se puede evaluar. Por extensión, los modelos de aprendizaje profundo con entradas de texto o imágenes no se pueden gestionar para la detección y mitigación de sesgos.
Además, es necesario cargar los datos de entrenamiento para garantizar la explicabilidad.
Para la explicabilidad de texto, el texto completo debe ser una de las características. En el release actual no se da soporte a la explicabilidad de imágenes para un modelo personalizado.
Criterios de salida para que el modelo admita supervisores
Tu modelo genera el vector de características de entrada junto con las probabilidades de predicción de las distintas clases de ese modelo.
{ "fields": [ "name", "age", "position", "prediction", "probability" ], "labels": [ "personal", "camping" ], "values": [ [ "john", 33, "engineer", "personal", [ 0.6744664422398081, 0.3255335577601919 ] ], [ "mike", 23, "student" "camping", [ 0.2794765664946941, 0.7205234335053059 ] ] ] }En este ejemplo,
"personal”y“camping”son las clases posibles, y las puntuaciones de cada salida de puntuación se asignan a ambas clases. Si faltan las probabilidades de predicción, la detección de sesgos funciona, pero la corrección automática de sesgos no.Puedes acceder a los resultados de la puntuación a través de un punto final de puntuación en tiempo real al que puedes acceder mediante la API REST para las evaluaciones del modelo. En el caso de CUSTOMML, Amazon SageMaker, y IBM Watson Machine Learning, Watson OpenScale se conectan directamente a los puntos finales de puntuación nativos.
Motor de aprendizaje automático personalizado
Un motor de aprendizaje automático personalizado proporciona las prestaciones de infraestructura y alojamiento para modelos de aprendizaje automático y aplicaciones web. Los motores de aprendizaje automático personalizados compatibles con las evaluaciones de modelos deben cumplir los siguientes requisitos:
Exponga dos tipos de puntos finales de API REST:
- punto final de descubrimiento (lista GET de despliegues y detalles)
- puntos finales de puntuación (puntuación en línea y en tiempo real)
Todos los puntos finales deben ser compatibles con la especificación de swagger a la que se va a dar soporte.
La carga útil de entrada y salida a y desde el despliegue deben ser compatibles con el formato de archivo JSON que se describe en la especificación.
En las versiones anteriores a 4.0.5, Watson OpenScale solo admite los formatos BasicAuth none o. Watson OpenScale Las versiones 4.0.6 y posteriores incorporan compatibilidad con el formato apiKey de autenticación.
Para consultar la especificación de los puntos finales de la API REST, consulta la API REST.
Incorporación de un motor de aprendizaje automático personalizado
Puedes configurar las evaluaciones de modelos para que funcionen con un proveedor de aprendizaje automático personalizado mediante uno de los siguientes métodos:
- Puedes utilizar la interfaz de configuración para añadir tu primer proveedor de aprendizaje automático personalizado. Para obtener más información, consulta la sección «Especificar una instancia de aprendizaje automático personalizada ».
- 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, consulta «Añadir tu motor de aprendizaje automático personalizado ».
Explorar más
Puedes utilizar un monitor de aprendizaje automático personalizado para crear una forma de interactuar con otros servicios.
Especifique una instancia de servicio de Machine Learning personalizado
El primer paso para configurar las evaluaciones de modelos es especificar una instancia de servicio. La instancia de servicio es dónde se almacenan los modelos y despliegues de inteligencia artificial.
Conecte su instancia de servicio personalizado
Los modelos de IA y las implementaciones se conectan en una instancia de servicio para la evaluación de los modelos. Puede conectar un servicio personalizado. Para conectar tu servicio, ve a la pestaña
«Configurar », añade un proveedor de aprendizaje automático y haz clic en el icono
«Editar ». Además del nombre, la descripción y la especificación del tipo de entorno (preproducción o producción ), debe proporcionar la siguiente información específica de este tipo de instancia de servicio:
- Nombre de usuario
- Contraseña
- Punto final de API que utiliza el formato
https://host:port, como por ejemplohttps://custom-serve-engine.example.net:8443
Elige si deseas conectarte a tus implementaciones solicitando una lista o introduciendo puntos finales de puntuación individuales.
Solicitar la lista de despliegues
Si ha seleccionado el mosaico Solicitar la lista de despliegues, especifique sus credenciales y punto final de API, y a continuación guarde la configuración.
Proporcionar puntos finales de puntuación individuales
Si ha seleccionado el mosaico Especificar puntos finales de puntuación individuales, especifique sus credenciales para el punto final de API y a continuación guarde la configuración.
Ahora está preparado para seleccionar los modelos desplegados y configurar los supervisores. Los modelos que has implementado aparecen en el panel de Insights, donde puedes hacer clic en «Añadir al panel ». Selecciona las implementaciones que deseas supervisar y haz clic en «Configurar ».
Para obtener más información, consulta «Configurar monitores ».
Ejemplos de motor de aprendizaje automático personalizado
Utiliza las siguientes ideas para configurar tu propio motor de aprendizaje automático personalizado.
Python y flask
Puedes utilizar Python y Flask para implementar un modelo de scikit-learn.
Para generar el modelo de detección de desviación, debe utilizar la versión de scikit-learn 0.20.2 en el cuaderno.
La aplicación se puede implementar localmente con fines de prueba y como aplicación en IBM Cloud.
Node.js
Aquí también puedes encontrar un ejemplo de un motor de aprendizaje automático personalizado escrito en Node.js.
Patrón de código End2end
Patrón de código que muestra un ejemplo de end2end sobre la implementación de un motor personalizado y su integración con evaluaciones de modelos.
Registro de carga útil con el motor de aprendizaje automático personalizado
Para configurar el registro de datos de carga útil para un motor de aprendizaje automático que no sea de IBM Watson Machine Learning o un motor personalizado, debes vincular el motor de aprendizaje automático como «personalizado».
Añade tu motor de aprendizaje automático personalizado
Se añade un motor que no es de Watson Machine Learning como personalizado mediante metadatos, y no existe ninguna integración directa con el servicio Watson Machine Learning de IBM. Puedes añadir más de un motor de aprendizaje automático para las evaluaciones de modelos utilizando el wos_client.service_providers.add método.
CUSTOM_ENGINE_CREDENTIALS = {
"url": "***",
"username": "***",
"password": "***",
}
wos_client.service_providers.add(
name=SERVICE_PROVIDER_NAME,
description=SERVICE_PROVIDER_DESCRIPTION,
service_type=ServiceTypes.CUSTOM_MACHINE_LEARNING,
credentials=CustomCredentials(
url= CUSTOM_ENGINE_CREDENTIALS['url'],
username= CUSTOM_ENGINE_CREDENTIALS['username'],
password= CUSTOM_ENGINE_CREDENTIALS['password'],
),
background_mode=False
).result
Puedes ver quién es tu proveedor de servicios con el siguiente comando:
client.service_providers.get(service_provider_id).result.to_dict()

Configurar la seguridad con una clave API
Para configurar la seguridad de tu motor de aprendizaje automático personalizado, puedes utilizar IBM Cloud y IBM Cloud Pak for Data como proveedores de autenticación para las evaluaciones de tus modelos. Puedes utilizar la URL https://iam.cloud.ibm.com/identity/tokenURL para generar un token de IAM para IBM Cloud y utilizar la URL https://<$hostname>/icp4d-api/v1/authorizeURL para generar un token para Cloud Pak for Data.
Puedes utilizar la POST /v1/deployments/{deployment_id}/online solicitud para implementar tu API de puntuación en los siguientes formatos:
Solicitud
{
"input_data": [{
"fields": [
"name",
"age",
"position"
],
"values": [
[
"john",
33,
"engineer"
],
[
"mike",
23,
"student"
]
]
}]
}
Respuesta
{
"predictions": [{
"fields": [
"name",
"age",
"position",
"prediction",
"probability"
],
"labels": [
"personal",
"camping"
],
"values": [
[
"john",
33,
"engineer",
"personal",
[
0.6744664422398081,
0.32553355776019194
]
],
[
"mike",
23,
"student",
"camping",
[
0.2794765664946941,
0.7205234335053059
]
]
]
}]
}
Añadir suscripción personalizada
Para añadir una suscripción personalizada, ejecuta el siguiente comando:
custom_asset = Asset(
asset_id=asset['entity']['asset']['asset_id'],
name=asset['entity']['asset']['name'],
url = "dummy_url",
asset_type=asset['entity']['asset']['asset_type'] if 'asset_type' in asset['entity']['asset'] else 'model',
problem_type=ProblemType.MULTICLASS_CLASSIFICATION,
input_data_type=InputDataType.STRUCTURED,
)
deployment = AssetDeploymentRequest(
deployment_id=asset['metadata']['guid'],
url=asset['metadata']['url'],
name=asset['entity']['name'],
deployment_type=asset['entity']['type'],
scoring_endpoint = scoring_endpoint
)
asset_properties = AssetPropertiesRequest(
prediction_field='predicted_label',
probability_fields = ["probability"],
training_data_reference=None,
training_data_schema=None,
input_data_schema=None,
output_data_schema=output_schema,
)
result = ai_client.subscriptions.add(
data_mart_id=cls.datamart_id,
service_provider_id=cls.service_provider_id,
asset=custom_asset,
deployment=deployment,
asset_properties=asset_properties,
background_mode=False
).result
Para obtener la lista de suscriptores, ejecuta el siguiente comando:
subscription_id = subscription_details.metadata.id
subscription_id
details: wos_client.subscriptions.get(subscription_id).result.to_dict()
Habilitar registro de carga útil
Para habilitar el registro de la carga útil en la suscripción, ejecute el siguiente comando:
request_data = {'fields': feature_columns,
'values': [[payload_values]]}
Para obtener los detalles del registro, ejecuta el siguiente comando:
response_data = {'fields': list(result['predictions'][0]),
'values': [list(x.values()) for x in result['predictions']]}
Puntuación y registro de carga útil
Puntúe el modelo.
Almacene la solicitud y respuesta en la tabla de registro de carga útil
records_list = [PayloadRecord(request=request_data, response=response_data, response_time=response_time), PayloadRecord(request=request_data, response=response_data, response_time=response_time)] subscription.payload_logging.store(records=records_list)
Para idiomas distintos de Python, también puedes registrar la carga útil mediante una API REST.