Accéder aux données dans un travail
S’APPLIQUE À :Extension Azure CLI v2 (actuelle)
Kit de développement logiciel (SDK) Python azure-ai-ml v2 (version actuelle)
Découvrez comment lire et écrire des données pour vos travaux avec le kit SDK Python v2 Azure Machine Learning et l’extension CLI Azure Machine Learning v2.
Prérequis
Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer. Essayez la version gratuite ou payante d’Azure Machine Learning.
Le kit de développement logiciel (SDK) Azure Machine Learning pour Python v2.
Espace de travail Azure Machine Learning
Chemins pris en charge
Au moment de fournir une entrée/sortie de données à un travail, vous devez spécifier un paramètre path
qui pointe vers l’emplacement des données. Voici un tableau qui montre les différents emplacements de données pris en charge dans Azure Machine Learning et des exemples pour le paramètre path
:
Emplacement | Exemples | Notes |
---|---|---|
Chemin sur votre ordinateur local | ./home/username/data/my_data |
|
Chemin sur un serveur http(s) public | https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv |
Le chemin HTTPS pointant vers un dossier n’est pas pris en charge, car HTTPS n’est pas un système de fichiers. Utilisez plutôt d’autres formats (wasbs/abfss/adl) pour le type de données Dossier. |
Chemin dans Stockage Azure | wasbs://<containername>@<accountname>.blob.core.windows.net/<path_to_data>/ abfss://<file_system>@<account_name>.dfs.core.windows.net/<path> adl://<accountname>.azuredatalakestore.net/<path_to_data>/ |
|
Chemin dans un magasin de données | azureml://datastores/<data_store_name>/paths/<path> |
|
Chemin d’accès à une ressource de données | azureml:<my_data>:<version> |
Modes pris en charge
Quand vous exécutez un travail avec des entrées/sorties de données, vous pouvez spécifier le mode pour indiquer par exemple que vous voulez que les données soient montées en lecture seule ou téléchargées sur la cible de calcul. Le tableau ci-dessous montre les modes possibles pour différentes combinaisons de type/mode/entrée/sortie :
Type | Entrée/sortie | upload |
download |
ro_mount |
rw_mount |
direct |
eval_download |
eval_mount |
---|---|---|---|---|---|---|---|---|
uri_folder |
Entrée | ✓ | ✓ | ✓ | ||||
uri_file |
Entrée | ✓ | ✓ | ✓ | ||||
mltable |
Entrée | ✓ | ✓ | ✓ | ✓ | ✓ | ||
uri_folder |
Sortie | ✓ | ✓ | ✓ | ||||
uri_file |
Sortie | ✓ | ✓ | ✓ | ||||
mltable |
Sortie | ✓ | ✓ | ✓ |
Notes
eval_download
et eval_mount
sont uniques à mltable
. Même si ro_mount
est le mode par défaut pour MLTable, il y a des scénarios où un MLTable peut générer des fichiers qui ne sont pas nécessairement colocalisés avec le fichier MLTable dans le stockage. Un mltable
peut aussi créer un sous-ensemble des données qui résident dans le stockage ou les mélanger. Cette vue n’est visible que si le fichier MLTable est réellement évalué par le moteur. Ces modes fourniront cette vue des fichiers.
Lire des données dans un travail
Créez un fichier YAML de spécification de travail (<file-name>.yml
). Dans la section inputs
du travail, spécifiez :
type
; pour indiquer si les données sont un fichier spécifique (uri_file
) ou un emplacement de dossier (uri_folder
) ou unmltable
.- Le chemin (
path
) indiquant l’emplacement de vos données ; le chemin peut être n’importe lequel parmi ceux décrits dans la section Chemins pris en charge.
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
# Possible Paths for Data:
# Blob: wasbs://<containername>@<accountname>.blob.core.windows.net/<folder>/<file>
# Datastore: azureml://datastores/paths/<folder>/<file>
# Data Asset: azureml:<my_data>:<version>
command: |
ls ${{inputs.my_data}}
code: <folder where code is located>
inputs:
my_data:
type: <type> # uri_file, uri_folder, mltable
path: <path>
environment: azureml:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest
compute: azureml:cpu-cluster
Ensuite, exécutez dans l’interface CLI
az ml job create -f <file-name>.yml
Lire des éléments de données de la version 1
Cette section explique comment lire des entités de données FileDataset
et TabularDataset
de la version 1 dans un travail de la version 2.
Lire un FileDataset
Créez un fichier YAML de spécification de travail (<file-name>.yml
), avec le type défini sur mltable
et le mode défini sur eval_mount
:
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
ls ${{inputs.my_data}}
code: <folder where code is located>
inputs:
my_data:
type: mltable
mode: eval_mount
path: azureml:<filedataset_name>@latest
environment: azureml:<environment_name>@latest
compute: azureml:cpu-cluster
Ensuite, exécutez dans l’interface CLI
az ml job create -f <file-name>.yml
Lire un TabularDataset
Créez un fichier YAML de spécification de travail (<file-name>.yml
), avec le type défini sur mltable
et le mode défini sur direct
:
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
ls ${{inputs.my_data}}
code: <folder where code is located>
inputs:
my_data:
type: mltable
mode: direct
path: azureml:<tabulardataset_name>@latest
environment: azureml:<environment_name>@latest
compute: azureml:cpu-cluster
Ensuite, exécutez dans l’interface CLI
az ml job create -f <file-name>.yml
Écrire des données dans un travail
Dans votre travail, vous pouvez écrire des données dans votre stockage cloud en utilisant des sorties. La section Modes pris en charge a montré que seules les sorties de travaux pouvaient écrire des données, car les modes possibles sont rw_mount
ou upload
.
Créez un fichier YAML de spécification de travail (<file-name>.yml
), avec la section outputs
complétée avec le type et le chemin menant à l’emplacement où vous souhaitez que vos données soient écrites :
$schema: https://azuremlschemas.azureedge.net/latest/CommandJob.schema.json
# Possible Paths for Data:
# Blob: wasbs://<containername>@<accountname>.blob.core.windows.net/<folder>/<file>
# Datastore: azureml://datastores/<datastore_name>/paths/<folder>/<file>
# Data Asset: azureml:<my_data>:<version>
code: src
command: >-
python prep.py
--raw_data ${{inputs.raw_data}}
--prep_data ${{outputs.prep_data}}
inputs:
raw_data:
type: <type> # uri_file, uri_folder, mltable
path: <path>
outputs:
prep_data:
type: <type> # uri_file, uri_folder, mltable
path: <path>
environment: azureml:<environment_name>@latest
compute: azureml:cpu-cluster
Créez ensuite un travail à l’aide de l’interface CLI :
az ml job create --file <file-name>.yml
Données dans les pipelines
Si vous utilisez des pipelines Azure Machine Learning, vous pouvez lire des données et déplacer des données entre les composants de pipeline avec l’extension CLI v2 Azure Machine Learning ou le Kit de développement logiciel (SDK) Python v2.
CLI Azure Machine Learning v2
Le fichier YAML suivant montre comment utiliser les données de sortie d’un composant comme entrée pour un autre composant du pipeline à l’aide de l’extension CLI v2 Azure Machine Learning :
S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: 3b_pipeline_with_data
description: Pipeline with 3 component jobs with data dependencies
settings:
default_compute: azureml:cpu-cluster
outputs:
final_pipeline_output:
mode: rw_mount
jobs:
component_a:
type: command
component: ./componentA.yml
inputs:
component_a_input:
type: uri_folder
path: ./data
outputs:
component_a_output:
mode: rw_mount
component_b:
type: command
component: ./componentB.yml
inputs:
component_b_input: ${{parent.jobs.component_a.outputs.component_a_output}}
outputs:
component_b_output:
mode: rw_mount
component_c:
type: command
component: ./componentC.yml
inputs:
component_c_input: ${{parent.jobs.component_b.outputs.component_b_output}}
outputs:
component_c_output: ${{parent.outputs.final_pipeline_output}}
# mode: upload
Python SDK v2
L’exemple suivant définit un pipeline contenant trois nœuds et déplace les données entre chaque nœud.
prepare_data_node
qui charge l’image et les étiquettes de l’ensemble de données Fashion MNIST dansmnist_train.csv
etmnist_test.csv
.train_node
qui entraîne un modèle CNN avec Keras à l’aide des données d’entraînement,mnist_train.csv
.score_node
qui évalue le modèle à l’aide de données de test,mnist_test.csv
.
# define a pipeline containing 3 nodes: Prepare data node, train node, and score node
@pipeline(
default_compute=cpu_compute_target,
)
def image_classification_keras_minist_convnet(pipeline_input_data):
"""E2E image classification pipeline with keras using python sdk."""
prepare_data_node = prepare_data_component(input_data=pipeline_input_data)
train_node = keras_train_component(
input_data=prepare_data_node.outputs.training_data
)
train_node.compute = gpu_compute_target
score_node = keras_score_component(
input_data=prepare_data_node.outputs.test_data,
input_model=train_node.outputs.output_model,
)
# create a pipeline
pipeline_job = image_classification_keras_minist_convnet(pipeline_input_data=fashion_ds)