Utiliser Azure ML Python SDK 4: écrire la sortie dans le stockage Blob - partie 2

Contenu de cette fois

Le contenu de cette heure est presque le même que le précédent Utilisation d'Azure ML Python SDK 3: Writing the output to Blob storage-Part 1, et l'entrée est La différence est qu'il devient un dossier au lieu d'un fichier. Ce n'est pas intéressant, je vais donc essayer de joindre un échantillon qui transmet en fait certains packages au conteneur.

Élément d'apparence

Cette fois, nous allons spécifier un dossier au lieu d'un fichier spécifique en entrée, donc on suppose qu'il y a plusieurs fichiers sous work2 / input / dans la figure ci-dessous. À part cela, vous avez toujours des machines virtuelles distantes et des notebooks Jupyter.

--Machine virtuelle distante (ci-après «cluster informatique» utilisant la terminologie Azure ML)

Azureml2-2.png

Pour vérifier la version du SDK Python


import azureml.core
print("SDK version:", azureml.core.VERSION)

La structure des dossiers de Notebook est la même qu'auparavant.

Azureml4-2.png

script2.2.py collecte les noms de fichiers des fichiers enregistrés dans work2 / input / dans un fichier CSV et les enregistre dans work2 / output / output1 /. Le but de la définition du sous-dossier output1 est de l'utiliser comme exemple de création de dossier avec script2.2.py.

La procédure pour HelloWorld2.2.ipynb est la même que la dernière fois et est la suivante. Azureml5-2.png

procédure

Nous continuerons à suivre les étapes comme avant.

  1. Chargez le package
    Chargez 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()
    
  2. Spécification d'un cluster informatique
    Spécifiez le cluster de calcul.

    
    aml_compute_target = "demo-cpucluster1"  # <== 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écifiez les dossiers d'entrée et 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.

    ds = Datastore(workspace, 'demostore')
    input_data = Dataset.File.from_files(ds.path('work2/input/')).as_named_input('input_ds').as_mount()
    
    output = OutputFileDatasetConfig(destination=(ds, 'work2/output')) 
    
  4. Spécification de l'environnement du conteneur
    Comme mentionné au début, cette fois j'ai en fait spécifié quelques paquets. Il n'est décrit que comme un échantillon de la méthode de spécification et n'a pas de signification particulière.

    myenv = Environment("myenv")
    
    myenv.docker.enabled = True
    myenv.python.conda_dependencies = CondaDependencies.create(pip_packages=[
        'azureml-defaults',
        'opencv-python-headless',
        'numpy',
        'pandas',
        'tensorflow',
        'matplotlib',
        'Pillow'
    ])
    
  5. 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. 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.2.py', 
                          arguments =['--datadir', input_data, '--output', output],
                          compute_target=aml_compute,
                          environment=myenv)
    
  6. Exécutez l'expérience
    Exécutez le script.

    
    exp = Experiment(workspace, 'work-test')
    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)
```
  1. script2.2.py
    Le contenu d'un script exécuté à distance. Comme mentionné ci-dessus, combinez les noms de fichiers des fichiers enregistrés dans work2 / input / dans un bloc de données et enregistrez-les dans work2 / output / output1 / en tant que outfile.csv. output1 / est créé dans ce script.

        
    import argparse
    import os
    import cv2
    import numpy as np
    import pandas as pd
    import math
    import tensorflow as tf
    import PIL
    import matplotlib
    
    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)
    
    print("cv2: %s" % cv2.__version__)
    print("numpy: %s" % np.__version__)
    print("pandas: %s" % pd.__version__)
    print("tensorflow: %s" % tf.__version__)
    print("matplotlib: %s" % matplotlib.__version__)
    print("PIL: %s" % PIL.PILLOW_VERSION)
    
    file_dict = {}
    file_dict_df = pd.DataFrame([])
    i = 0
    
    for fname in next(os.walk(args.datadir))[2]:
        print('processing', fname)
        i += 1
        infname = os.path.join(args.datadir, fname)
    
        file_dict['num'] = i
        file_dict['file name'] = fname
        file_dict_df = file_dict_df.append([file_dict])
    
    os.makedirs(args.output + '/output1', exist_ok=True)
    outfname = os.path.join(args.output, 'output1/outfile.csv')
    file_dict_df.to_csv(outfname, index=False, encoding='shift-JIS')
    

en conclusion

Qu'est-ce que tu penses. Vous pouvez comprendre le fonctionnement de base du SDK Azure ML Python dans 1-4 à l'aide du SDK Azure ML Python. La prochaine fois, j'aimerais vous présenter le pipeline.

Matériel de référence

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 3: Utilisation d'un ensemble de données comme entrée - Partie 1] (https://qiita.com/notanaha/items/d22ba02b9cc903d281b6) Azure/MachineLearningNotebooks

Recommended Posts

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
Utiliser Azure Blob Storage à partir de Python
Vérifiez! Comment utiliser Azure Key Vault avec Azure SDK pour Python! (Mesures autour de la certification)
python3: Comment utiliser la bouteille (2)
[Python] Comment utiliser la liste 1
[Hyperledger Iroha] Remarques sur l'utilisation du SDK Python
Comment utiliser Python Argparse
Comment spécifier Cache-Control pour le stockage BLOB dans le stockage Azure en Python
Python: comment utiliser pydub
[Python] Comment utiliser checkio
Écrire en csv avec Python
[Python] Utilisez ceci pour lire et écrire des fichiers wav [wavio]
[Python] Comment utiliser input ()
Comment utiliser Python lambda
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Comment utiliser les octets Python
Python: comment utiliser async avec
[Python] Ecrire dans un fichier csv avec Python
[Python] Comment utiliser la série Pandas
Comment utiliser les requêtes (bibliothèque Python)
Comment utiliser SQLite en Python
Sortie vers un fichier csv avec Python
[Introduction à Python] Utilisons les pandas
[Python] Comment utiliser la liste 3 Ajouté
Comment utiliser Mysql avec python
Comment utiliser l'API Python d'OpenPose
Comment utiliser ChemSpider en Python
Python: Comment utiliser pydub (lecture)
Comment utiliser PubChem avec Python
Bloc-notes Jupyter facile à utiliser (Python3.5)
[Introduction à Python] Utilisons les pandas
Comment utiliser la fonction zip de python
[Introduction à Python] Utilisons les pandas
[Python] Comment utiliser l'API Typetalk
Téléchargement de fichiers vers Azure Storage (Python)
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 3 Écrire dans un fichier
[Python] Résumé de l'utilisation des pandas
[Introduction à Python] Comment utiliser la classe en Python?
Comment utiliser le pipeline Spark ML
[Python] Utilisez des pandas pour extraire △△ qui maximise ○○
Comment installer et utiliser pandas_datareader [Python]
Sortir les caractères de couleur en joli avec python
Comment écrire des commentaires de document Python (Docstrings)
Sortie du journal Python vers la console avec GAE
Je veux utiliser jar de python
[Introduction à Python] Utilisons foreach avec Python
[Python] Comment utiliser import sys sys.argv
Un moyen simple d'utiliser Wikipedia avec Python
[Python] Organisation de l'utilisation des instructions
Mémorandum sur l'utilisation du python gremlin
[Python2.7] Résumé de l'utilisation d'unittest
python: Comment utiliser les locals () et globals ()
Comment utiliser __slots__ dans la classe Python
Installez python sur xserver pour utiliser pip