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:

Detalles del soporte de las infraestructuras
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:

Cómo se muestra el gráfico de «Custom works». Muestra cuadros para el entorno personalizado con la API de cliente y la API de Watson OpenScale

También puede consultar los enlaces siguientes:

Watson OpenScale API de registro de carga útil

Python SDK para clientes

SDK de Python

  • 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:

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 El icono de la pestaña de configuración «Configurar », añade un proveedor de aprendizaje automático y haz clic en el icono El icono de la pestaña de configuración «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 ejemplo https://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()

Enlace genérico de ML

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.