Utiliser le SDK Azure ML Python 2: utiliser un ensemble de données comme entrée - partie 2

Contenu de cette fois

Dans Use Azure ML Python SDK: Using a dataset as input - Part 1, l'ensemble de données d'entrée a été spécifié par l'appelant du script script.py. Azure Machine Learning Workspace vous permet d'inscrire un ensemble de données, il est donc naturel de vouloir le récupérer et de l'utiliser dans script.py. Cette fois, je vais vous présenter comment le faire.

Élément d'apparence

Les éléments qui apparaîtront cette fois sont les suivants.

La dernière fois, j'ai utilisé un PC local (avec Visual Studio Code, le SDK Azure ML Python installé) au lieu d'un Jupyter Notebook, mais les deux sont identiques en termes d'utilisation d'un cluster de calcul distant pour l'exécution de script. Lancement à partir d'une instance de calcul dans Azure Machine Learning Studio, Jupyter Notebook est utile car vous pouvez recréer votre instance de calcul pour tirer parti de la dernière version du SDK Azure ML Python.

Azureml2.png

La structure des dossiers de Notebook est décrite en supposant qu'elle est la suivante. Comme il se trouve dans l'environnement Azure ML Workspace, config.json n'a pas besoin d'être pris en compte.

Azureml4.png

Dans cet exemple également, script1.1.py est aussi simple que de lire le fichier CSV sur le stockage blob et de l'écrire dans le répertoire de sortie. De même, c'est le rôle de HelloWorld1.1.ipynb d'envoyer script1.1.py à un cluster informatique pour exécution.

La procédure pour HelloWorld1.1.ipynb est la suivante. Contrairement à la dernière fois, il n'y a aucune étape pour spécifier le chemin du fichier CSV sur Blob Storage. Azureml5.png

procédure

Jetons un coup d'œil aux étapes dans l'ordre.

  1. Chargez le package
    Commencez par charger le package.

    
    import azureml.core
    from azureml.core import Workspace, Experiment, Dataset, Datastore, ScriptRunConfig
    from azureml.core.compute import ComputeTarget
    from azureml.core.compute_target import ComputeTargetException
    from azureml.core.runconfig import RunConfiguration, DEFAULT_CPU_IMAGE
    from azureml.core.conda_dependencies import CondaDependencies
    
    workspace = Workspace.from_config()
    
  2. 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éé à l'avance un cluster de calcul dans l'espace de travail Azure ML Studo pour une meilleure visibilité globale.

    
    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")
    
  3. Spécification de l'environnement du conteneur
    Spécifiez ici l'environnement d'exécution. Transmettez les variables de cluster de calcul et spécifiez les packages à utiliser dans l'image du conteneur. Seul pip_package est utilisé ici, mais vous pouvez également spécifier conda_package.

    run_config = RunConfiguration()
    run_config.target = aml_compute
    run_config.environment.docker.enabled = True
    run_config.environment.docker.base_image = DEFAULT_CPU_IMAGE
    run_config.environment.python.user_managed_dependencies = False  
    
    run_config.environment.python.conda_dependencies = CondaDependencies.create(
        pip_packages=['azureml-defaults'], 
        pin_sdk_version=False
        )
    
  4. Spécification du nom du fichier d'exécution
    Spécifiez le nom du dossier qui contient l'ensemble de scripts à exécuter à distance avec script_folder. 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 script_folder sont transmis au conteneur, veillez donc à ne pas placer de fichiers inutiles. Le fichier d'entrée est récupéré par script1.1.py, il n'est donc pas spécifié ici.

    
    src = ScriptRunConfig(source_directory='script_folder', script='script1.1.py',
                          run_config = run_config)
    
  5. Exécutez l'expérience
    nom_expérience est utilisé comme nom d'affichage pour l'expérience.

    
    experiment_name = 'ScriptRunConfig2'
    experiment = Experiment(workspace = workspace, name = experiment_name)
    
    run = experiment.submit(config=src)
    run
    

Cette cellule se termine de manière asynchrone, donc si vous voulez attendre qu'elle se termine, exécutez l'instruction suivante.

```python

%%time
run.wait_for_completion(show_output=True)
```
  1. script1.1.py
    Le contenu d'un script exécuté à distance. Get_context () transmet les informations d'exécution du script appelant. Les informations de l'expérience, qui sont les informations d'attribut de cette exécution, sont extraites et les informations de l'espace de travail, qui sont les informations d'attribut de l'expérience, sont extraites. Une fois que vous connaissez les informations de l'espace de travail, vous pouvez enregistrer l'ensemble de données dans l'espace de travail avec get_by_name. Ce get_by_name est écrit dans le même format qui apparaît dans l'onglet «Utiliser» de l'ensemble de données enregistré dans Azure Machine Learning Studio.
    Ce script écrit enfin le fichier dans le dossier des sorties. Par défaut, ce dossier de sorties est créé sans aucune action et peut être référencé après exécution à partir des "Sorties et journaux" de l'expérience.

    
    from azureml.core import Run, Dataset, Workspace
    
    run = Run.get_context()
    exp = run.experiment
    workspace = exp.workspace
    
    dataset = Dataset.get_by_name(workspace, name='hello_ds')
    df = dataset.to_pandas_dataframe()
    
    HelloWorld = df.iloc[0,1]
    print('*******************************')
    print('********* ' + HelloWorld + ' *********')
    print('*******************************')
    
    df.to_csv('./outputs/HelloWorld.csv', mode='w', index=False)
    
  2. [Référence] Contenu de HelloWorld.txt
    Le fichier CSV utilisé ici est simple.

    0,Hello World
    1,Hello World
    2,Hello World
    

en conclusion

Qu'est-ce que tu penses. Il existe plusieurs variantes de l'entrée / sortie du SDK Azure ML Python. La prochaine fois, je voudrais présenter la sortie.

Matériel de référence

Qu'est-ce que le SDK Azure Machine Learning pour Python azureml.core.experiment.Experiment class - Microsoft Docs 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 3: exportation de la sortie vers le stockage Blob - Partie 1 [Utilisation d'Azure ML Python SDK 4: Exporter la sortie vers le stockage Blob - Partie 2] (https://qiita.com/notanaha/items/655290670a83f2a00fdc)

Recommended Posts

Utiliser le SDK Azure ML Python 2: utiliser un ensemble de données comme entrée - partie 2
Utiliser Azure ML Python SDK 4: écrire la sortie dans le stockage Blob - partie 2
Utilisation d'Azure ML Python SDK 3: Exporter la sortie vers le stockage Blob - Partie 1
Utilisez pymol comme bibliothèque python
Utilisez le tissu tel quel en python (fabric3)
Utilisez Blender comme module Python
Utiliser Azure Blob Storage à partir de Python
Utilisez Python intégrable comme interface Python 3 de Vim
Utiliser Python et MeCab avec Azure Functions
Utiliser python dans le conteneur Docker comme interpréteur Pycharm
Utiliser Python et word2vec (appris) avec Azure Databricks
Utilisez Python / Django avec Windows Azure Cloud Service!
Vérifiez! Comment utiliser Azure Key Vault avec Azure SDK pour Python! (Mesures autour de la certification)
Spécifiez MinGW comme compilateur utilisé dans Python
Utilisez AWS SDK for Python (boto) dans un environnement Proxy
Je veux utiliser le jeu de données R avec python