0 / 0
Torna alla versione inglese della documentazione
Framework di machine learning personalizzati
Ultimo aggiornamento: 22 nov 2024
Framework di machine learning personalizzati

È possibile utilizzare il framework di apprendimento automatico personalizzato per completare la registrazione del payload, la registrazione del feedback e per misurare l'accuratezza delle prestazioni, il rilevamento dei bias di runtime, la spiegabilità, il rilevamento della deriva e la funzione di auto-debias per le valutazioni del modello. Il framework di apprendimento automatico personalizzato deve essere equivalente a IBM watsonx.ai Runtime.

I seguenti framework di apprendimento automatico personalizzati supportano le valutazioni dei modelli:

Dettagli supporto framework
Framework Tipo di problema Tipo di dati
Equivalente a IBM watsonx.ai Runtime Classificazione Structured
Equivalente a IBM watsonx.ai Runtime Regressione Structured

Per un modello non equivalente a IBM watsonx.ai Runtime, è necessario creare un wrapper per il modello personalizzato che esponga gli endpoint API REST richiesti. Devi anche collegare l'input/output tra Watson OpenScale e l'effettivo motore di machine learning personalizzato.

Quando un motore di machine learning personalizzato rappresenta la scelta migliore?

Un motore di machine learning personalizzato rappresenta la scelta migliore quando le seguenti situazioni sono vere:

  • Non si utilizza alcun prodotto immediatamente disponibile per servire i modelli di machine learning. Avete un sistema per servire i vostri modelli e non esiste un supporto diretto per questa funzione per le valutazioni dei modelli.
  • Il motore di servizio utilizzato da un fornitore 3rd-party non è ancora supportato per le valutazioni dei modelli. In questo caso, considerare di sviluppare un motore di machine learning personalizzato come un wrapper per le distribuzioni originali o native.

Come funziona

La seguente immagine mostra il supporto dell'ambiente personalizzato:

Come viene visualizzato il grafico delle opere personalizzate. Mostra le caselle per l'ambiente personalizzato con l'API client e l'API Watson OpenScale

È anche possibile fare riferimento ai seguenti link:

Watson OpenScale API di registrazione dei payload

Python SDK client

SDK Python

  • Criteri di input perché il modello supporti i monitor

    Nell'esempio seguente, il tuo modello prende un vettore di feature, che è essenzialmente una raccolta di campi denominati e i loro valori, come input.

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

    Il campo “age” può essere valutato per l'equità.

    Se l'input è un tensore o una matrice trasformata dallo spazio delle caratteristiche dell'input, il modello non può essere valutato. Per estensione, i modelli di deep learning con input di testo o immagine non possono essere gestiti per la rilevazione e la mitigazione della distorsione.

    Inoltre, i dati di formazione devono essere caricati per supportare l'Explainability.

    Per l'esplicabilità sul testo, una delle funzioni deve essere il testo completo. L'esplicabilità sulle immagini per un modello personalizzato non è supportata nella release corrente.

  • Criteri di output perché il modello supporti i monitor

    Il tuo modello outmette il vettore funzione di input accanto alle probabilità di previsione di varie classi in quel modello.

    {
    "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
            ]
        ]
    ]
    }
    

    In questo esempio, "personal” e “camping” sono le classi possibili e i punteggi in ogni emissione di punteggio vengono assegnati a entrambe le classi. Se mancano le probabilità di previsione, le funzioni di rilevamento dei bias, ma auto - debias no.

    È possibile accedere all'output del punteggio da un endpoint di punteggio live che si può chiamare con l'API REST per le valutazioni del modello. Per CUSTOMML, Amazon SageMaker, e IBM watsonx.ai Runtime, Watson OpenScale si collega direttamente agli endpoint di scoring nativi.

Motore di machine learning personalizzato

Un motore di machine learning personalizzato fornisce l'infrastruttura e le capacità di hosting per i modelli di machine learning e le applicazioni web. I motori di apprendimento automatico personalizzati supportati per la valutazione dei modelli devono essere conformi ai seguenti requisiti:

  • Esporre due tipi di endpoint API REST:

    • endpoint di rilevamento (fornisce l'elenco di distribuzioni e i dettagli)
    • endpoint di calcolo del punteggio (calcolo del punteggio online e in tempo reale)
  • Per essere supportati, tutti gli endpoint devono essere compatibili con la specifica swagger.

  • Il payload di input e l'output da o verso la distribuzione devono essere compatibili con il formato file JSON descritto nella specifica.

Watson OpenScale supporta solo i formati di autenticazione BasicAuth, noneo apiKey .

Per vedere le specifiche degli endpoint dell'API REST, consultare l'API REST.

Aggiunta di un motore di apprendimento automatico personalizzato

È possibile configurare le valutazioni del modello per lavorare con un provider di apprendimento automatico personalizzato utilizzando uno dei seguenti metodi:

Scopri di più

È possibile utilizzare monitor di apprendimento automatico personalizzato per creare un modo per interagire con altri servizi.

Specifica di un'istanza del servizio ML personalizzata

Il primo passo per configurare le valutazioni del modello è specificare un'istanza di servizio. L'istanza del servizio è il luogo dove si memorizzano i modelli AI e le distribuzioni.

Connessione dell'istanza del servizio personalizzata

I modelli di intelligenza artificiale e le implementazioni sono collegati in un'istanza di servizio per la valutazione dei modelli. È possibile collegare un servizio personalizzato. Per collegare il servizio, andare alla scheda Configura 'L'icona della scheda di configurazione, aggiungere un provider di apprendimento automatico e fare clic sull'icona Modifica 'L'icona della scheda di configurazione. Oltre ad un nome, la descrizione e la specifica del tipo di ambiente Preproduzione o Produzione , è necessario fornire le seguenti informazioni specifiche per questo tipo di istanza di servizio:

  • Nome utente
  • Password
  • Endpoint API che utilizza il formato https://host:port, come https://custom-serve-engine.example.net:8443

Scegli se connettersi alle tue distribuzioni richiedendo un elenco o inserendo singoli endpoint di punteggio.

Richiesta dell'elenco di distribuzioni

Se si seleziona il riquadro Richiedi l'elenco di distribuzioni, immettere le credenziali e l'endpoint API, quindi salvare la configurazione.

Fornitura di singoli endpoint di calcolo del punteggio

Se si seleziona il riquadro Immetti gli endpoint del punteggio individuali, immettere le credenziali per l'endpoint API, quindi salvare la configurazione.

Ora si è pronti per selezionare i modelli distribuiti e configurare i monitor. I modelli distribuiti sono elencati nella dashboard Insights, dove è possibile fare clic su Aggiungi alla dashboard. Selezionare le distribuzioni che si desidera monitorare e fare clic su Configura.

Per ulteriori informazioni, consultare Configura monitor.

Esempi di motori di machine learning personalizzati

Usa le seguenti idee per impostare il tuo motore di machine learning personalizzato.

Python e flask

È possibile utilizzare Python e il pallone per servire il modello di scikit - imparare.

Per generare il modello di rilevamento della deviazione, è necessario utilizzare scikit-learn versione 0.20.2 nel notebook.

L'app può essere distribuita localmente per scopi di test e come applicazione su IBM Cloud.

Node.js

Puoi anche trovare un esempio di un motore di machine learning personalizzato scritto in Node.js qui.

Modello di codice end2end

Modello di codice che mostra un esempio end2end di distribuzione del motore personalizzato e di integrazione con le valutazioni del modello.

Registrazione del payload con il motore di machine learning personalizzato

Per configurare la registrazione del payload per un Runtime watsonx.ai IBM IBM o per un motore di apprendimento automatico personalizzato, è necessario vincolare il motore ML come personalizzato.

Aggiungi il tuo motore di machine learning personalizzato

Un motore Runtime non-watsonx.ai viene aggiunto come personalizzato utilizzando i metadati e non esiste un'integrazione diretta con il servizio Runtime non IBM watsonx.ai È possibile aggiungere più di un motore di apprendimento automatico per la valutazione dei modelli utilizzando il metodo '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

È possibile consultare il fornitore del servizio con il seguente comando:

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

Binding ML generico

Configurare la sicurezza con una chiave API

Per configurare la sicurezza del motore di apprendimento automatico personalizzato, è possibile utilizzare IBM Cloud e IBM Cloud Pak for Data come fornitori di autenticazione per le valutazioni dei modelli. È possibile utilizzare l'URL https://iam.cloud.ibm.com/identity/token per generare un token IAM per IBM Cloud e utilizzare l'URL https://<$hostname>/icp4d-api/v1/authorize per generare un token per Cloud Pak for Data.

È possibile utilizzare la richiesta POST /v1/deployments/{deployment_id}/online per implementare la propria API di punteggio nei seguenti formati:

Request

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

Risposta

{
	"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
			]
			]
		]
	}]
}

Aggiungere la sottoscrizione personalizzata

Per aggiungere un abbonamento personalizzato, eseguire il seguente 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

Per ottenere l'elenco di abbonamento, eseguire il seguente comando:

subscription_id = subscription_details.metadata.id
subscription_id

details: wos_client.subscriptions.get(subscription_id).result.to_dict()

Abilitare la registrazione del payload

Per abilitare la registrazione del payload in abbonamento, eseguire il seguente comando:

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

Per ottenere i dettagli di registrazione, eseguire il seguente comando:

response_data = {'fields': list(result['predictions'][0]),
                 'values': [list(x.values()) for x in result['predictions']]}

Calcolare il punteggio e registrare il payload

  • Calcolare il punteggio del modello.

  • Memorizzare la richiesta e la risposta nella tabella di registrazione del payload

    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)
    

Per le lingue diverse da Pythonè possibile anche registrare payload utilizzando una API REST.

Argomento principale: Motori di machine learning supportati, quadri e modelli

Ricerca e risposta AI generativa
Queste risposte sono generate da un modello di lingua di grandi dimensioni in watsonx.ai basato sul contenuto della documentazione del prodotto. Ulteriori informazioni