Condividere dati tra aree di lavoro con registri (anteprima)
Il registro di sistema di Azure Machine Learning consente di collaborare tra aree di lavoro all'interno dell'organizzazione. Usando i registri, è possibile condividere modelli, componenti, ambienti e dati. La condivisione dei dati con i registri è attualmente una funzionalità di anteprima. In questo articolo vengono illustrate le operazioni seguenti:
- Creare un asset di dati nel Registro di sistema.
- Condividere un asset di dati esistente dall'area di lavoro al Registro di sistema
- Usare l'asset di dati dal Registro di sistema come input a un processo di training del modello in un'area di lavoro.
Importante
Questa funzionalità è attualmente in anteprima pubblica. Questa versione di anteprima viene fornita senza contratto di servizio, pertanto se ne sconsiglia l’uso per i carichi di lavoro in ambienti di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate.
Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.
Scenario chiave risolto dalla condivisione dei dati con il Registro di sistema di Azure Machine Learning
È possibile che i dati siano condivisi tra più team, progetti o aree di lavoro in una posizione centrale. Tali dati non dispongono di controlli di accesso sensibili e possono essere ampiamente usati nell'organizzazione.
Alcuni esempi:
- Un team vuole condividere un set di dati pubblico pre-elaborato e pronto per l'uso negli esperimenti.
- L'organizzazione ha acquisito un set di dati specifico per un progetto da un fornitore esterno e vuole renderlo disponibile a tutti i team che lavorano su un progetto.
- Un team vuole condividere gli asset di dati tra aree di lavoro in aree diverse.
In questi scenari è possibile creare un asset di dati in un registro o condividere un asset di dati esistente da un'area di lavoro a un registro. Questo asset di dati può quindi essere usato in più aree di lavoro.
Scenari NON risolti dalla condivisione dei dati con il Registro di sistema di Azure Machine Learning
Condivisione di dati sensibili che richiedono un controllo di accesso granulare. Non è possibile creare un asset di dati in un registro da condividere con un piccolo subset di utenti/aree di lavoro, mentre il Registro di sistema è accessibile da molti altri utenti dell'organizzazione.
Condivisione dei dati disponibili nell'archiviazione esistente che non devono essere copiati o troppo grandi o troppo costosi da copiare. Ogni volta che gli asset di dati vengono creati in un Registro di sistema, viene inserita una copia dei dati nell'archivio del Registro di sistema in modo che possa essere replicata.
Tipi di asset di dati supportati dal Registro di sistema di Azure Machine Learning
Suggerimento
Vedere gli scenari canonici seguenti quando si decide se si vuole usare uri_file
, uri_folder
o mltable
per lo scenario in uso.
È possibile creare tre tipi di asset di dati:
Type | API V2 | Scenario Canonical |
---|---|---|
File: fare riferimento a un singolo file | uri_file |
Lettura/scrittura di un singolo file: il file può avere qualsiasi formato. |
Cartella: fare riferimento a una singola cartella | uri_folder |
È necessario leggere/scrivere una directory di file parquet/CSV in Pandas/Spark. Deep Learning con immagini, file di testo, audio, video situati in una directory. |
Tabella: fare riferimento a una tabella dati | mltable |
Si dispone di uno schema complesso soggetto a modifiche frequenti oppure è necessario un subset di dati tabulari di grandi dimensioni. |
Percorsi supportati dal Registro di sistema di Azure Machine Learning
Quando si crea un asset di dati, è necessario specificare un parametro del percorso che punta alla posizione dei dati. Attualmente, gli unici percorsi supportati sono percorsi nel computer locale.
Suggerimento
"Locale" indica l'archiviazione locale per il computer in uso. Ad esempio, se si usa un portatile, l'unità locale. Se un'istanza di calcolo di Azure Machine Learning, l'unità "locale" dell'istanza di calcolo.
Prerequisiti
Prima di seguire la procedura descritta in questo articolo, assicurarsi di disporre dei prerequisiti seguenti:
Familiarità con i registri di Azure Machine Learning e concetti relativi ai dati in Azure Machine Learning.
Registro di Azure Machine Learning per condividere i dati. Per creare un registro, vedere Informazioni su come creare un registro.
Un'area di lavoro di Azure Machine Learning. Se non è disponibile, seguire la procedura descritta nell'articolo Avvio rapido: Creare risorse dell'area di lavoro per crearne una.
Importante
La regione Azure (percorso) in cui si crea l'area di lavoro deve essere nell'elenco delle aree supportate per il registro di sistema di Azure Machine Learning.
L'ambiente e il componente creato dall'articolo Come condividere modelli, componenti e ambienti.
L'interfaccia della riga di comando di Azure e l'estensione
ml
oppure Python SDK per Azure Machine Learning v2:Per installare l'interfaccia della riga di comando di Azure e l'estensione, vedere Installare, configurare e usare l'interfaccia della riga di comando di Azure (v2).
Importante
Gli esempi dell'interfaccia della riga di comando in questo articolo presuppongono che si usi la shell Bash (o compatibile). Ad esempio, un sistema Linux o un sottosistema Windows per Linux.
Gli esempi presuppongono anche che siano state configurate le impostazioni predefinite per l'interfaccia della riga di comando di Azure, in modo che non sia necessario specificare i parametri per la sottoscrizione, l'area di lavoro, il gruppo di risorse o il percorso. Usare i comandi seguenti per specificare le impostazioni predefinite. Sostituire i parametri seguenti con i valori relativi alla configurazione:
- Sostituire
<subscription>
con l'ID della sottoscrizione di Azure. - Sostituire
<workspace>
con il nome dell'area di lavoro di Azure Machine Learning. - Sostituire
<resource-group>
con il gruppo di risorse di Azure contenente la propria area di lavoro. - Sostituire
<location>
con l'area di Azure contenente la propria area di lavoro.
az account set --subscription <subscription> az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
È possibile visualizzare le impostazioni predefinite correnti usando il comando
az configure -l
.- Sostituire
Clonare il repository degli esempi
Gli esempi di codice in questo articolo si basano sull'esempio nyc_taxi_data_regression
nel repository degli esempi. Per usare questi file nell'ambiente di sviluppo, usare i comandi seguenti per clonare il repository e modificare le directory nell'esempio:
git clone https://github.com/Azure/azureml-examples
cd azureml-examples
Per l'esempio dell'interfaccia della riga di comando, modificare directory in cli/jobs/pipelines-with-components/nyc_taxi_data_regression
nel clone locale del repository degli esempi.
cd cli/jobs/pipelines-with-components/nyc_taxi_data_regression
Creare una connessione SDK
Suggerimento
Questo passaggio è necessario solo quando si usa Python SDK.
Creare una connessione client sia all'area di lavoro di Azure Machine Learning che al registro di sistema. Nell'esempio seguente sostituire i valori segnaposto <...>
con i valori appropriati per la configurazione. Ad esempio, l'ID sottoscrizione di Azure, il nome dell'area di lavoro, il nome del Registro di sistema e così via:
ml_client_workspace = MLClient( credential=credential,
subscription_id = "<workspace-subscription>",
resource_group_name = "<workspace-resource-group",
workspace_name = "<workspace-name>")
print(ml_client_workspace)
ml_client_registry = MLClient(credential=credential,
registry_name="<REGISTRY_NAME>",
registry_location="<REGISTRY_REGION>")
print(ml_client_registry)
Creare dati nel registro
L'asset di dati creato in questo passaggio viene usato più avanti in questo articolo quando si invia un processo di training.
Suggerimento
Lo stesso comando dell'interfaccia della riga di comando az ml data create
può essere usato per creare dati in un'area di lavoro o in un registro. L'esecuzione del comando con il comando --workspace-name
crea i dati in un'area di lavoro, mentre l'esecuzione del comando con --registry-name
crea i dati nel registro di sistema.
L'origine dati si trova nel repository degli esempi clonato in precedenza. Nel clone locale, passare al percorso della directory seguente: cli/jobs/pipelines-with-components/nyc_taxi_data_regression
. In questa directory creare un file YAML denominato data-registry.yml
e usare il codice YAML seguente come contenuto del file:
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: transformed-nyc-taxt-data
description: Transformed NYC Taxi data created from local folder.
version: 1
type: uri_folder
path: data_transformed/
Il valore path
punta alla directory secondaria data_transformed
che contiene i dati condivisi usando il Registro di sistema.
Per creare i dati nel registro, usare il az ml data create
. Negli esempi seguenti, sostituire <registry-name>
con il nome del registro.
az ml data create --file data-registry.yml --registry-name <registry-name>
Se viene visualizzato un errore che indica che i dati con questo nome e versione esiste già nel registro di sistema, è possibile modificare il campo version
in data-registry.yml
o specificare una versione differente nell'interfaccia della riga di comando che esegue l'override del valore di versione in data-registry.yml
.
# use shell epoch time as the version
version=$(date +%s)
az ml data create --file data-registry.yml --registry-name <registry-name> --set version=$version
Suggerimento
Se il comando version=$(date +%s)
non imposta la variabile $version
nell'ambiente, sostituire $version
con un numero casuale.
Salvare il name
e version
dei dati dall'output del comando az ml data create
e usarli con az ml data show
comando per visualizzare i dettagli dell'asset.
az ml data show --name transformed-nyc-taxt-data --version 1 --registry-name <registry-name>
Suggerimento
Se è stato usato un nome o una versione dei dati differente, sostituire i parametri --name
e --version
come pertinente.
È anche possibile usare az ml data list --registry-name <registry-name>
per elencare tutti gli asset di dati nel Registro di sistema.
Creare un ambiente e un componente nel registro
Per creare un ambiente e un componente nel registro, seguire la procedura descritta nell'articolo Come condividere modelli, componenti e ambienti. L'ambiente e il componente vengono usati nel processo di training nella sezione successiva.
Suggerimento
È possibile usare un ambiente e un componente dall'area di lavoro invece di usarli dal registro.
Eseguire un processo della pipeline in un'area di lavoro usando un componente dal registro di sistema
Quando si esegue un processo della pipeline che usa un componente e dati da un registro, le risorse di calcolo sono locali nell'area di lavoro. Nell'esempio seguente il processo usa il componente di training Scikit Learn e l'asset di dati creato nelle sezioni precedenti per eseguire il training di un modello.
Nota
L'aspetto principale è che questa pipeline verrà eseguita in un'area di lavoro usando i dati di training che non si trovano nell'area di lavoro specifica. I dati si trovano in un registro che può essere usato con qualsiasi area di lavoro nell'organizzazione. È possibile eseguire questo processo di training in qualsiasi area di lavoro a cui si ha accesso senza doversi preoccupare di rendere disponibili i dati di training in tale area di lavoro.
Verificare di trovarsi nella directory cli/jobs/pipelines-with-components/nyc_taxi_data_regression
. Modificare la sezione component
nella sezione train_job
del file di single-job-pipeline.yml
per fare riferimento al componente di training e path
nella sezione training_data
per fare riferimento all'asset di dati creato nelle sezioni precedenti. Nell'esempio seguente viene illustrato l'aspetto di single-job-pipeline.yml
dopo la modifica. Sostituire <registry_name>
con il nome del registro:
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: nyc_taxi_data_regression_single_job
description: Single job pipeline to train regression model based on nyc taxi dataset
jobs:
train_job:
type: command
component: azureml://registries/<registry-name>/component/train_linear_regression_model/versions/1
compute: azureml:cpu-cluster
inputs:
training_data:
type: uri_folder
path: azureml://registries/<registry-name>/data/transformed-nyc-taxt-data/versions/1
outputs:
model_output:
type: mlflow_model
test_data:
Avviso
- Prima di eseguire il processo della pipeline, verificare che l'area di lavoro in cui verrà eseguito il processo si trovi in un'area di Azure supportata dal registro in cui sono stati creati i dati.
- Verificare che l'area di lavoro abbia un cluster di elaborazione con il nome
cpu-cluster
o modificare il campocompute
injobs.train_job.compute
con il nome del calcolo.
Eseguire il processo della pipeline con il az ml job create
comando.
az ml job create --file single-job-pipeline.yml
Suggerimento
Se l'area di lavoro predefinita e il gruppo di risorse non sono stati configurati come illustrato nella sezione dei prerequisiti, sarà necessario specificare i parametri --workspace-name
e --resource-group
perché az ml job create
funzioni.
Per altre informazioni sull'esecuzione di processi, vedere gli articoli seguenti:
Condividere i dati dall'area di lavoro al registro di sistema
I passaggi seguenti illustrano come condividere un asset di dati esistente da un'area di lavoro a un registro.
Creare prima di tutto un asset di dati nell'area di lavoro. Assicurarsi di trovarsi nella directory cli/assets/data
. Il local-folder.yml
che si trova in questa directory viene usato per creare un asset di dati nell'area di lavoro. I dati specificati in questo file sono disponibili nella directory cli/assets/data/sample-data
. Il codice YAML seguente è il contenuto del file local-folder.yml
:
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: local-folder-example-titanic
description: Dataset created from local folder.
type: uri_folder
path: sample-data/
Per creare l'asset di dati nell'area di lavoro, usare il comando seguente:
az ml data create -f local-folder.yml
Per altre informazioni sulla creazione di asset di dati in un'area di lavoro, vedere Come creare asset di dati.
L'asset di dati creato nell'area di lavoro può essere condiviso in un registro. Dal registro può essere usato in più aree di lavoro. Si noti che viene passato il parametro --share_with_name
e --share_with_version
nella funzione di condivisione. Questi parametri sono facoltativi e, se non si passano questi dati, verranno condivisi con lo stesso nome e la stessa versione dell'area di lavoro.
L'esempio seguente illustra l'uso del comando di condivisione per condividere un asset di dati. Sostituire <registry-name>
con il nome del registro a cui verranno condivisi i dati.
az ml data share --name local-folder-example-titanic --version <version-in-workspace> --share-with-name <name-in-registry> --share-with-version <version-in-registry> --registry-name <registry-name>