Share via


Raccogliere dati dai modelli nell'ambiente di produzione

SI APPLICA A:Python SDK azureml v1

Questo articolo illustra come raccogliere dati da un modello di Azure Machine Learning distribuito in un cluster del servizio Azure Kubernetes. I dati raccolti vengono quindi archiviati nell'archivio BLOB di Azure.

Dopo aver abilitato la raccolta, i dati raccolti consentono di:

  • Monitorare la deriva dei dati sui dati di produzione raccolti.

  • Analizzare i dati raccolti usando Power BI o Azure Databricks

  • Prendere decisioni migliori su quando ripetere il training od ottimizzare il modello.

  • Ripetere il training del modello con i dati raccolti.

Limiti

  • La funzionalità di raccolta dati del modello può funzionare solo con l'immagine Ubuntu 18.04.

Importante

A partire dal 10/03/2023, l'immagine Ubuntu 18.04 è ora deprecata. Il supporto per le immagini Ubuntu 18.04 verrà eliminato a partire da gennaio 2023 quando esso raggiunge l’EOL, il 30 aprile 2023.

La funzionalità MDC non è compatibile con qualsiasi altra immagine diversa da Ubuntu 18.04, che non è disponibile una volta deprecata l'immagine Ubuntu 18.04.

Per altre informazioni che è possibile fare riferimento a:

Nota

La funzionalità di raccolta dati è attualmente in fase di anteprima, tutte le funzionalità di anteprima non sono consigliate per i carichi di lavoro di produzione.

Quali informazioni vengono raccolte e dove sono trasferite

Possono essere raccolti i dati seguenti:

  • Modellare i dati di input derivanti dai servizi Web distribuiti in un cluster del servizio Azure Kubernetes. Audio vocale, immagini e video nonvengono raccolti.

  • Previsioni del modello usando i dati di input di produzione.

Nota

La preaggregazione e i pre-calcoli su questi dati non fanno attualmente parte del servizio di raccolta.

L'output viene salvato nell'archivio BLOB. Poiché i dati vengono aggiunti all'archivio BLOB, è possibile scegliere lo strumento preferito per eseguire l'analisi.

La sintassi per il percorso dei dati di output nel BLOB è la seguente:

/modeldata/<subscriptionid>/<resourcegroup>/<workspace>/<webservice>/<model>/<version>/<designation>/<year>/<month>/<day>/data.csv
# example: /modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/12/31/data.csv

Nota

Nelle versioni di Azure Machine Learning SDK per Python precedenti alla versione 0.1.0a16, l'argomento designation è denominato identifier. Se il codice è stato sviluppato con una versione precedente, è necessario aggiornarlo di conseguenza.

Prerequisiti

Abilitare la raccolta dati

È possibile abilitare la raccolta dati indipendentemente dal modello distribuito tramite Azure Machine Learning o altri strumenti.

Per abilitare la raccolta dati, è necessario:

  1. Aprire il file di assegnazione dei punteggi.

  2. Aggiungere il codice seguente all'inizio del file:

    from azureml.monitoring import ModelDataCollector
    
  3. Dichiarare le variabili per la raccolta dei dati nella funzione init:

    global inputs_dc, prediction_dc
    inputs_dc = ModelDataCollector("best_model", designation="inputs", feature_names=["feat1", "feat2", "feat3", "feat4", "feat5", "feat6"])
    prediction_dc = ModelDataCollector("best_model", designation="predictions", feature_names=["prediction1", "prediction2"])
    

    CorrelationId è un parametro facoltativo. Non è necessario usarlo se il modello non lo richiede. L'uso di CorrelationId consente di eseguire più facilmente il mapping con altri dati, ad esempio LoanNumber o CustomerId.

    Il parametro Identifier viene usato successivamente per compilare la struttura di cartelle nel BLOB. È possibile usarlo per distinguere i dati non elaborati dai dati elaborati.

  4. Aggiungere le righe di codice seguenti alla funzione run(input_df):

    data = np.array(data)
    result = model.predict(data)
    inputs_dc.collect(data) #this call is saving our input data into Azure Blob
    prediction_dc.collect(result) #this call is saving our prediction data into Azure Blob
    
  5. La raccolta dati non viene impostata automaticamente su true quando si distribuisce un servizio nel servizio Azure Kubernetes. Aggiornare il file di configurazione, come nell'esempio seguente:

    aks_config = AksWebservice.deploy_configuration(collect_model_data=True)
    

    È anche possibile abilitare Application Insights per il monitoraggio del servizio modificando questa configurazione:

    aks_config = AksWebservice.deploy_configuration(collect_model_data=True, enable_app_insights=True)
    
  6. Per creare una nuova immagine e distribuire il modello di Machine Learning, vedere Distribuire modelli di Machine Learning in Azure.

  7. Aggiungere il pacchetto pip "Azure-Monitoring" alle dipendenze conda dell'ambiente del servizio Web:

  env = Environment('webserviceenv')
  env.python.conda_dependencies = CondaDependencies.create(conda_packages=['numpy'],pip_packages=['azureml-defaults','azureml-monitoring','inference-schema[numpy-support]'])

Disabilitare la raccolta dei dati

È possibile arrestare la raccolta dei dati in qualsiasi momento. Usare il codice Python per disabilitare la raccolta dati.

## replace <service_name> with the name of the web service
<service_name>.update(collect_model_data=False)

Convalidare e analizzare i dati

È possibile scegliere uno strumento delle preferenze per analizzare i dati raccolti nell'archivio BLOB.

Accesso rapido ai dati BLOB

  1. Accedi al portale di Azure.

  2. Aprire l'area di lavoro.

  3. Selezionare Archiviazione.

    Select the Storage option

  4. Seguire il percorso dei dati di output nel BLOB con questa sintassi:

    /modeldata/<subscriptionid>/<resourcegroup>/<workspace>/<webservice>/<model>/<version>/<designation>/<year>/<month>/<day>/data.csv
    # example: /modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/12/31/data.csv
    

Analizzare i dati del modello con Power BI

  1. Scaricare e aprire Power BI Desktop.

  2. Selezionare Recupera dati e selezionare archiviazione BLOB di Azure.

    Power BI blob setup

  3. Aggiungere il nome dell'account di archiviazione e immettere la chiave di archiviazione. È possibile trovare queste informazioni selezionando Impostazioni>Chiavi di accesso nel BLOB.

  4. Selezionare il contenitore di dati del modello e selezionare Modifica.

    Power BI Navigator

  5. Nell'editor di query fare clic sotto la colonna Nome e aggiungere l'account di archiviazione.

  6. Immettere il percorso del modello nel filtro. Nota: se si vogliono esaminare solo i file da un anno o un mese specifico, espandere semplicemente il percorso di filtro. Ad esempio, per esaminare solo i dati di marzo, usare questo percorso di filtro:

    /modeldata/<subscriptionid>/<resourcegroupname>/<workspacename>/<webservicename>/<modelname>/<modelversion>/<designation>/<year>/3

  7. Filtrare i dati pertinenti in base ai valori Nome. Se sono state archiviate stime e input, è necessario creare una query per ognuna.

  8. Selezionare le frecce doppie verso il basso accanto all'intestazione di colonna contenuto per combinare i file.

    Power BI Content

  9. Seleziona OK. Precaricamento dei dati.

    Power BI Combine Files

  10. Seleziona Chiudi e applica.

  11. Se sono stati aggiunti input e stime, le tabelle vengono ordinate automaticamente in base ai valori RequestId.

  12. Iniziare a creare report personalizzati per i dati del modello.

Analizzare i dati del modello con Azure Databricks

  1. Creare un'area di lavoro di Azure Databricks.

  2. Passare all'area di lavoro di Databricks.

  3. Nell'area di lavoro di Databricks selezionare Carica dati.

    Selecting Databricks Upload Data option

  4. Selezionare Crea nuova tabella e selezionare Altre origini dati>Archiviazione BLOB di Azure>Crea tabella in Notebook.

    Databricks table creation

  5. Aggiornare il percorso dei dati. Ecco un esempio:

    file_location = "wasbs://mycontainer@storageaccountname.blob.core.windows.net/modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/*/*/data.csv" 
    file_type = "csv"
    

    Databricks setup

  6. Seguire i passaggi del modello per visualizzare e analizzare i dati.

Passaggi successivi

Rilevare la deriva dei dati sui dati raccolti.