Utilisation d'Azure ML Python SDK 3: Exporter la sortie vers le stockage Blob - Partie 1

Contenu de cette fois

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.

Élément d'apparence

Les éléments qui apparaissent cette fois sont

Azureml1-3.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 décrite en supposant qu'elle est la suivante.

Azureml2-3.png

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 ③. Azureml3-3.png

procédure

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

  1. 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()
    
  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éé 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")
    
  3. 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'))
    
  4. 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'])
    
  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. 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)
    
  6. 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)
```
  1. 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)
    

en conclusion

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 ().

Matériel de référence

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

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 le SDK Azure ML Python 2: utiliser un ensemble de données comme entrée - partie 2
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
Comment utiliser Python Argparse
Comment spécifier Cache-Control pour le stockage BLOB dans le stockage Azure en Python
Python: comment utiliser pydub
É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
Comment modifier le niveau de journalisation d'Azure SDK pour 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
Écrire la sortie standard dans un fichier
[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
[Introduction à Python] Comment utiliser la classe en Python?
[Python] Utilisez des pandas pour extraire △△ qui maximise ○○
[Route vers Python intermédiaire] Utiliser des opérateurs ternaires
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
[python] Comment utiliser __command__, explication des fonctions
Je veux utiliser jar de python
[Introduction à Python] Utilisons foreach avec Python
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
Python> Numéros de sortie de 1 à 100, 501 à 600> Pour csv