Utiliser le SDK Azure ML Python: utiliser l'ensemble de données comme entrée - Partie 1 et [Utiliser le SDK Azure ML Python: utiliser l'ensemble de données comme entrée - Partie 2] (https://qiita.com/notanaha/items/30d57590c92b03bc953c) Ensuite, j'ai décrit la gestion des données d'entrée. J'ai utilisé le dossier de sorties fourni par défaut pour la sortie, mais cette fois je l'écrirai dans n'importe quel stockage blob.
Les éléments qui apparaissent cette fois sont
Pour vérifier la version du SDK Python
import azureml.core
print("SDK version:", azureml.core.VERSION)
La structure des dossiers de Notebook est décrite en supposant qu'elle est la suivante.
Comme auparavant, script2.py est aussi simple que de lire le fichier CSV sur le stockage blob et de l'écrire dans le dossier d'entraînement. De même, c'est le rôle de HelloWorld2.0.ipynb d'envoyer script2.py au cluster de calcul pour exécution.
La procédure pour HelloWorld2.0.ipynb est la suivante. Le dossier de sortie est spécifié dans ③.
Jetons un coup d'œil aux étapes dans l'ordre.
Chargez le package
Commencez par charger le package.
from azureml.core import Workspace, Experiment, Dataset, Datastore, ScriptRunConfig, Environment
from azureml.data import OutputFileDatasetConfig
from azureml.core.compute import ComputeTarget
from azureml.core.compute_target import ComputeTargetException
from azureml.core.conda_dependencies import CondaDependencies
workspace = Workspace.from_config()
Spécification d'un cluster informatique
Vous pouvez également créer des ressources de calcul à distance avec le SDK Python, mais ici, j'ai créé un cluster de calcul dans Azure ML Studio à l'avance pour une meilleure vue d'ensemble.
aml_compute_target = "demo-cpucluster" # <== The name of the cluster being used
try:
aml_compute = ComputeTarget(workspace, aml_compute_target)
print("found existing compute target.")
except ComputeTargetException:
print("no compute target with the specified name found")
Spécifiez le chemin du fichier CSV et le dossier de sortie
demostore est le nom du magasin de données enregistré dans Azure ML Workspace. Vous transmettez le chemin du fichier à l'intérieur du conteneur BLOB de la banque de données à la classe de l'ensemble de données.
Contrairement à la dernière fois, il est passé avec le nom de fichier File.from_files (). Tabular.from_delimited_files () est utilisé pour transmettre des données tabulaires telles que des fichiers csv, mais File.from_files () peut être utilisé pour transmettre d'autres fichiers et dossiers.
ds = Datastore(workspace, 'demostore')
input_data = Dataset.File.from_files(ds.path('work/HelloWorld.txt')).as_named_input('input_ds').as_mount()
output = OutputFileDatasetConfig(destination=(ds, 'work_out'))
Spécification de l'environnement du conteneur
Comme mentionné ci-dessus, cette fois, nous utiliserons Environment () au lieu de RunConfiguration (). Dans le premier, les variables du cluster de calcul ont été spécifiées ici, mais dans le second, elles ne sont pas spécifiées, et les variables du cluster de calcul seront spécifiées dans le ScriptRunConfig () suivant.
Seul pip_package est utilisé ici, mais conda_package peut être spécifié de la même manière que RunConfiguration ().
myenv = Environment("myenv")
myenv.docker.enabled = True
myenv.python.conda_dependencies = CondaDependencies.create(pip_packages=['azureml-defaults'])
Spécification du nom du fichier d'exécution
Spécifiez le nom du dossier contenant l'ensemble de scripts à exécuter à distance dans répertoire_source. En outre, dans le script, spécifiez le nom du fichier de script qui sera l'entrée pour l'exécution à distance.
Lors d'une exécution à distance, tous les fichiers et sous-répertoires de source_directory sont transmis au conteneur, veillez donc à ne pas placer de fichiers inutiles.
Jusqu'à la dernière fois, nous avons introduit la méthode spécifique au SDK Azure ML Python en passant des ensembles de données, mais cette fois nous la décrirons selon la méthode de réception de l'argument spécifié par arguments avec argparse.
Passez input_data avec le nom d'argument datadir et la sortie avec le nom d'argument output.
Nous spécifions également le nom du cluster de calcul dans compute_target et transmettons myenv, qui instancie l'environnement, dans l'environnement.
src = ScriptRunConfig(source_directory='script_folder2',
script='script2.py',
arguments =['--datadir', input_data, '--output', output],
compute_target=aml_compute,
environment=myenv)
Exécutez l'expérience
Exécutez le script.
exp = Experiment(workspace, 'InOutSample')
run = exp.submit(config=src)
Cette cellule se termine de manière asynchrone, donc si vous souhaitez attendre la fin de l'exécution, exécutez l'instruction suivante.
```python
%%time
run.wait_for_completion(show_output=True)
```
script2.py
Le contenu d'un script exécuté à distance.
Vous pouvez utiliser l'analyseur pour récupérer les arguments de données et de sortie. Le chemin complet du fichier d'entrée est passé à args.datadir. D'autre part, args.output passe uniquement au nom du dossier, donc os.path.join est utilisé pour spécifier le nom de fichier output.csv ici.
import argparse
import os
print("*********************************************************")
print("************* Hello World! *************")
print("*********************************************************")
parser = argparse.ArgumentParser()
parser.add_argument('--datadir', type=str, help="data directory")
parser.add_argument('--output', type=str, help="output")
args = parser.parse_args()
print("Argument 1: %s" % args.datadir)
print("Argument 2: %s" % args.output)
with open(args.datadir, 'r') as f:
content = f.read()
with open(os.path.join(args.output, 'output.csv'), 'w') as fw:
fw.write(content)
Qu'est-ce que tu penses. Cette fois, j'ai présenté comment écrire la sortie sur n'importe quel stockage blob. De plus, File.from_files () a été utilisé pour spécifier le fichier d'entrée, et Environment () a été utilisé pour spécifier l'environnement du conteneur, qui était différent de la fois précédente. La prochaine fois, je présenterai une variante qui spécifie un dossier avec File.from_files ().
Azure/MachineLearningNotebooks: scriptrun-with-data-input-output Utilisation du SDK 1 Azure ML Python: Utilisation d'un ensemble de données comme entrée - Partie 1 [Utilisation d'Azure ML Python SDK 2: Utilisation d'un ensemble de données comme entrée - Partie 2] (https://qiita.com/notanaha/items/30d57590c92b03bc953c) [Utilisation d'Azure ML Python SDK 4: Exporter la sortie vers le stockage Blob - Partie 2] (https://qiita.com/notanaha/items/655290670a83f2a00fdc) azureml.data.OutputFileDatasetConfig class - Microsoft Docs azureml.core.Environment class - Microsoft Docs
Recommended Posts