0 / 0
Volver a la versión inglesa de la documentación
Infraestructuras de aprendizaje automático personalizadas
Última actualización: 22 nov 2024
Infraestructuras de aprendizaje automático personalizadas

Puede utilizar su marco de aprendizaje automático personalizado para completar el registro de cargas útiles, 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, la detección de derivas y la función de autodebias para las evaluaciones de modelos. El marco de aprendizaje automático personalizado debe ser equivalente a IBM watsonx.ai Runtime.

Los siguientes marcos personalizados de aprendizaje automático admiten evaluaciones de modelos:

Detalles del soporte de las infraestructuras
Infraestructura Tipo de problema Tipo de datos
Equivalente a IBM watsonx.ai Runtime Clasificación Estructurada
Equivalente a IBM watsonx.ai Runtime Regresión Estructurada

Para un modelo que no sea equivalente a IBM watsonx.ai Runtime, debe crear una envoltura para el modelo personalizado que exponga los puntos finales de la API REST necesarios. También debe enlazar la entrada/salida entre Watson OpenScale y el motor de aprendizaje de máquina personalizado real.

¿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á utilizando ningún producto inmediatamente disponible para servir a sus modelos de aprendizaje automático. Tiene un sistema para servir a sus modelos y no existe un soporte directo de esa función para las evaluaciones de modelos.
  • El motor que está utilizando, procedente de un proveedor 3rd-party, 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 trabajo personalizado. Muestra recuadros para el entorno personalizado con la API de cliente y la API de Watson OpenScale

También puede consultar los enlaces siguientes:

API de registro de carga útil de Watson OpenScale

SDK de cliente Python

SDK de Python

  • Criterios de entrada para que el modelo admita supervisores

    En el ejemplo siguiente, el modelo toma como entrada un vector de característica, que es esencialmente una colección de campos con nombre y sus valores.

    {
    "fields": [
        "name",
        "age",
        "position"
    ],
    "values": [
        [
            "john",
            33,
            "engineer"
        ],
        [
            "mike",
            23,
            "student"
        ]
    ]
    
    

    Se puede evaluar la ecuanimidad del campo “age”.

    Si la entrada es un tensor o una matriz, que se transforma a partir del espacio de características de entrada, ese modelo no puede evaluarse. 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, los datos de entrenamiento deben cargarse para dar soporte a la capacidad de explicación.

    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

    El modelo genera el vector de característica de entrada junto a las probabilidades de predicción de varias 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 resultado de puntuación se asignan a ambas clases. Si faltan las probabilidades de predicción, la detección de sesgo funciona, pero la eliminación automática no.

    Puede acceder al resultado de la puntuación desde un punto final de puntuación en directo al que puede llamar con la API REST para evaluaciones de modelos. Para CUSTOMML, Amazon SageMaker, e IBM watsonx.ai Runtime, Watson OpenScale se conecta 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.

Watson OpenScale solo da soporte a los formatos de autenticación BasicAuth, none o apiKey.

Para ver la especificación de los puntos finales de la API REST, consulte el ' API REST.

Añadir un motor de aprendizaje automático personalizado

Puede configurar las evaluaciones de modelos para que funcionen con un proveedor de aprendizaje automático personalizado utilizando uno de los siguientes métodos:

Explorar más

Puedes utilizar monitor de aprendizaje automático personalizado para crear una forma de interactuar con otros servicios.

Especificación de una instancia de servicio de aprendizaje automático 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.

Conectar la instancia de servicio personalizado

Los modelos de IA y los despliegues se conectan en una instancia de servicio para las evaluaciones de los modelos. Puede conectar un servicio personalizado. Para conectar su servicio, vaya a la pestaña Configurar ' El icono de pestaña de configuración, añada un proveedor de aprendizaje automático y haga clic en el icono Editar ' El icono de pestaña de configuración. Además de un nombre, una descripción y la especificación del tipo de entorno Preproducción o Producción, debe proporcionar la siguiente información que sea 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

Elija si desea conectarse a los despliegues solicitando una lista o especificando 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 desplegados aparecen en el panel de control de Insights, donde puede hacer clic en Añadir al panel de control. Seleccione los despliegues que desea supervisar y pulse Configurar.

Para obtener más información, consulte Configurar supervisores.

Ejemplos de motor de aprendizaje automático personalizado

Utilice las siguientes ideas para configurar su propio motor de aprendizaje automático personalizado.

Python y flask

Puede utilizar Python y flask para servir el modelo 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 desplegar localmente con fines de prueba y como aplicación en IBM Cloud.

Node.js

También puede encontrar un ejemplo de un motor de aprendizaje de máquina personalizado que se escribe en Node.js aquí.

Patrón de código End2end

Patrón de código que muestra un ejemplo end2end de despliegue de motores personalizados e integración con evaluaciones de modelos.

Registro de carga útil con el motor de aprendizaje automático personalizado

Para configurar el registro de la carga útil para un motor de aprendizaje automático personalizado o watsonx.ai Runtime que no sea de IBM, debe vincular el motor ML como personalizado.

Añadir el motor de aprendizaje automático personalizado

Un motor Runtime ' non-watsonx.ai ' se añade como personalizado mediante metadatos y no existe integración directa con el servicio Runtime noIBM ' watsonx.ai. Puede añadir más de un motor de aprendizaje automático para las evaluaciones de modelos utilizando el método " wos_client.service_providers.add ".

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

Puede ver el proveedor de servicios con el mandato siguiente:

client.service_providers.get(service_provider_id).result.to_dict()

Enlace ML genérico

Configurar la seguridad con una clave de API

Para configurar la seguridad de su motor de aprendizaje automático personalizado, puede utilizar IBM Cloud e IBM Cloud Pak for Data como proveedores de autenticación para sus evaluaciones de modelos. Puede utilizar el URL de https://iam.cloud.ibm.com/identity/token para generar una señal de IAM para IBM Cloud y utilizar el URL de https://<$hostname>/icp4d-api/v1/authorize para generar una señal para Cloud Pak for Data.

Puede utilizar la solicitud POST /v1/deployments/{deployment_id}/online para implementar la API de puntuación en los formatos siguientes:

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, ejecute el mandato siguiente:

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 suscripciones, ejecute el mandato siguiente:

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 carga útil en la suscripción, ejecute el mandato siguiente:

request_data = {'fields': feature_columns, 
                'values': [[payload_values]]}

Para obtener los detalles del registro, ejecute el mandato siguiente:

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

Búsqueda y respuesta de IA generativa
Estas respuestas las genera un modelo de lenguaje grande en watsonx.ai que se basa en el contenido de la documentación del producto. Más información