0 / 0
Torna alla versione inglese della documentazione
Framework per Microsoft Azure ML Service
Ultimo aggiornamento: 22 nov 2024
Framework per Microsoft Azure ML Service

È possibile utilizzare Microsoft Azure ML Service per eseguire la registrazione del payload, la registrazione del feedback e per misurare l'accuratezza delle prestazioni, il rilevamento dei bias in fase di esecuzione, la spiegabilità e la funzione di auto-debias per le valutazioni dei modelli.

I seguenti Microsoft Azure Machine Learning sono supportati per la valutazione dei modelli:

Tabella 1. Dettagli supporto framework

Dettagli supporto framework
Framework Tipo di problema Tipo di dati
Nativo Classificazione Structured
scikit-learn Classificazione Structured
scikit-learn Regressione Structured

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

Azure Automated Machine Learning gestisce gli endpoint e i modelli Azure con notebook per le valutazioni dei modelli.

Aggiunta del servizio ML di Microsoft Azure

È possibile configurare le valutazioni dei modelli per lavorare con Microsoft Azure ML Service utilizzando uno dei seguenti metodi:

Vengono richiamati vari endpoint REST necessari per interagire con Azure ML Service. A tal fine, è necessario eseguire il binding del servizio Azure Machine Learning Service.

  1. Creare un principal di Azure Active Directory Service.
  2. Specificare i dettagli della credenziale quando si aggiunge il binding del servizio Azure ML Service, tramite l'interfaccia utente o l'SDK Python.

Requisiti per i file di richiesta e di risposta JSON

Affinché le valutazioni dei modelli funzionino con Azure ML Service, le distribuzioni di servizi Web create devono soddisfare determinati requisiti. Le distribuzioni del servizio web che si creano devono accettare richieste JSON e restituire risposte JSON, secondo i seguenti requisiti.

Formato richiesto per la richiesta JSON del servizio web

  • Il corpo della richiesta API REST deve essere un documento JSON che contiene un array JSON di oggetti JSON
  • L'array JSON deve essere denominato "input".
  • Ogni oggetto JSON può includere solo semplici coppie di valore chiave, dove i valori possono essere una stringa, un numero, true, falseo null
  • I valori non possono essere un oggetto o un array JSON
  • Ogni oggetto JSON nella schiera deve avere tutti gli stessi tasti (e quindi il numero di chiavi) specificato, indipendentemente dal fatto che ci sia un valore nonnull disponibile

Il seguente file JSON di esempio soddisfa i requisiti precedenti e può essere utilizzato come modello per la creazione dei propri file di richiesta 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 richiesto per la risposta JSON del servizio web

Prendere nota dei seguenti elementi quando si crea un file di risposta JSON:

  • Il corpo della risposta API REST deve essere un documento JSON che contiene un array JSON di oggetti JSON

  • L'array JSON deve essere denominato "output".

  • Ogni oggetto JSON può includere solo coppie chiave - valore, dove i valori possono essere una stringa, un numero, true, false, nullo una matrice che non contiene altri oggetti JSON o array

  • I valori non possono essere un oggetto JSON

  • Ogni oggetto JSON nella schiera deve avere tutti gli stessi tasti (e il numero di chiavi) specificato, indipendentemente dal fatto che ci sia un valore nonnull disponibile

  • Per i modelli di classificazione: il servizio web deve restituire un array di probabilità per ogni classe e l'ordine delle probabilità deve essere congruente per ogni oggetto JSON nell'array

    • Esempio: supponiamo di avere un modello di classificazione binario che prevede il rischio di credito, dove le classi sono Risk o No Risk
    • Per ogni risultato restituito nell'array "output", l'oggetto deve contenere una coppia chiave-valore che include le probabilità in ordine fisso, nel formato:
    {
    "output": [
      {
        "Scored Probabilities": ["Risk" probability,"No Risk" probability
        ]
        },
        {
          "Scored Probabilities": ["Risk" probability,"No Risk" probability
            ]
           }
        ]
    

Per essere coerenti con gli strumenti visivi Azure ML utilizzati sia in Azure ML Studio e Service, utilizzare i seguenti nomi chiave:

  • il nome chiave "Scored Labels" per la chiave di uscita che denota il valore previsto del modello
  • il nome chiave "Scored Probabilities" per la chiave di uscita che denota una schiera di probabilità per ogni classe

Il seguente file JSON di esempio soddisfa i requisiti precedenti e può essere utilizzato come modello per la creazione dei propri file di risposta JSON:

{
  "output": [
    {
      "Scored Labels": "No Risk",
      "Scored Probabilities": [
        0.8922524675865824,
        0.10774753241341757
      ]
    },
    {
      "Scored Labels": "No Risk",
      "Scored Probabilities": [
        0.8335192848546905,
        0.1664807151453095
      ]
    }
  ]
}

Notebook di esempio

I seguenti notebook mostrano come operare con Microsoft Azure ML Service:

Specifica di un'istanza di Microsoft Azure ML Service

Il primo passo per configurare le valutazioni dei modelli è specificare un'istanza di Microsoft Azure ML Service. L'istanza di Azure ML Service è il luogo dove si memorizzano i modelli AI e le distribuzioni.

I modelli e le implementazioni di intelligenza artificiale sono collegati in un'istanza di Azure ML Service per la valutazione dei modelli. 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 di modifica. Oltre ad un nome e una descrizione e se l'ambiente è Preproduzione o Produzione, è necessario fornire le seguenti informazioni:

  • ID client: il valore stringa effettivo dell'ID client, che verifica chi è l'utente e autentica e autorizza le chiamate che si fanno ad Azure Service.
  • Segreto client: il valore stringa effettivo del segreto, che verifica chi è l'utente e autentica e autorizza le chiamate che si fanno ad Azure Service.
  • Tenant: l'ID tenant corrisponde alla propria organizzazione ed è un'istanza dedicata di Azure AD. Per trovare l'ID tenant, passare sopra il tuo nome account per ottenere la directory e l'ID tenant oppure selezionare Azure Active Directory > Proprietà> ID directory nel portale Azure .
  • ID abbonamento: credenziali di sottoscrizione che identificano univocamente il tuo abbonamento Microsoft Azure . L'ID sottoscrizione forma parte dell'URI per ogni chiamata al servizio.

Consultare Come utilizzare il portale per creare un principal di applicazione e di servizio Azure AD in grado di accedere alle risorse per le istruzioni su come ottenere le proprie credenziali Microsoft Azure .

Ora si è pronti per selezionare i modelli distribuiti e configurare i monitor. I modelli distribuiti vengono visualizzati 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.

Registrazione del payload con il motore Microsoft Azure ML Service

Aggiungi il tuo motore Microsoft Azure ML Service

Un motore Runtime watsonx.ai IBM IBM è vincolato come Custom e consiste in metadati. Non esiste un'integrazione diretta con il servizio watsonx.ai Runtime non 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

È possibile visualizzare il bind del servizio con il seguente comando:

client.service_providers.list()

L'output di esempio:

uid	                                   name	                      service_type	                   created
410e730f-8462-45fe-8b41-a029d6d6043a	My Azure ML Service engine azure_machine_learning_service2019-06-10T22:10:29.398Z

Aggiungere la sottoscrizione a Microsoft Azure ML Service

Aggiungere la sottoscrizione

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

Richiamare l'elenco di sottoscrizioni

subscription_id = subscription_details.metadata.id
subscription_id
 
details: wos_client.subscriptions.get(subscription_id).result.to_dict()

Abilitare la registrazione del payload

Abilitare la registrazione del payload nella sottoscrizione

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

Richiamare i dettagli della registrazione

subscription.payload_logging.get_details()

Calcolare il punteggio e registrare il payload

Calcolare il punteggio del modello. Per un esempio completo, consultare il Working with Azure Machine Learning Service Engine Notebook.

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

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

Per le lingue diverse da Pythonè possibile anche registrare payload utilizzando un'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