Verwenden Sie Azure ML Python SDK 4: Schreiben Sie die Ausgabe in den Blob-Speicher - Teil 2

Inhalt dieser Zeit

Der Inhalt dieser Zeit ist fast der gleiche wie der vorherige Verwenden von Azure ML Python SDK 3: Schreiben der Ausgabe in Blob-Speicher - Teil 1, und die Eingabe ist Der Unterschied besteht darin, dass es ein Ordner anstelle einer Datei wird. Es ist nur nicht interessant, also werde ich versuchen, ein Beispiel anzuhängen, das tatsächlich einige Pakete an den Container weiterleitet.

Aussehensgegenstand

Dieses Mal geben wir einen Ordner anstelle einer bestimmten Datei als Eingabe an. Daher wird in der folgenden Abbildung davon ausgegangen, dass sich unter work2 / input / mehrere Dateien befinden. Ansonsten verfügen Sie noch über virtuelle Remote-Maschinen und Jupyter-Notebooks.

Azureml2-2.png

So überprüfen Sie die Version des Python SDK


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

Die Ordnerstruktur von Notebook ist dieselbe wie zuvor.

Azureml4-2.png

script2.2.py sammelt die Dateinamen der in work2 / input / gespeicherten Dateien in einer CSV-Datei und speichert sie in work2 / output / output1 /. Der Zweck des Festlegens des Unterordners output1 besteht darin, ihn als Beispiel für die Ordnererstellung mit script2.2.py zu verwenden.

Die Vorgehensweise für HelloWorld2.2.ipynb ist dieselbe wie beim letzten Mal und lautet wie folgt. Azureml5-2.png

Verfahren

Wir werden die Schritte wie zuvor fortsetzen.

  1. Laden Sie das Paket
    Laden Sie das Paket.

    
    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. Angeben eines Computerclusters
    Geben Sie den Rechencluster an.

    
    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. Geben Sie Eingabe- und Ausgabeordner an
    Demostore ist der Name des in Azure ML Workspace registrierten Datenspeichers. Sie übergeben den Dateipfad im BLOB-Container des Datenspeichers an die Dataset-Klasse.

    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. Angeben der Containerumgebung
    Wie eingangs erwähnt, habe ich diesmal tatsächlich einige Pakete angegeben. Es wird nur als Beispiel für die Spezifikationsmethode beschrieben und hat keine besondere Bedeutung.

    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. Geben Sie den Namen der Ausführungsdatei an
    Geben Sie den Ordnernamen an, der die Skriptsätze enthält, die remote im Quellverzeichnis ausgeführt werden sollen. Geben Sie im Skript auch den Namen der Skriptdatei an, die als Eintrag für die Remote-Ausführung verwendet werden soll. Bei der Remote-Ausführung werden alle Dateien und Unterverzeichnisse in source_directory an den Container übergeben. Achten Sie daher darauf, keine unnötigen Dateien zu platzieren. Übergeben Sie input_data mit dem Argumentnamen datadir und geben Sie sie mit dem Argumentnamen output aus. Wir geben auch den Namen des Rechenclusters in compute_target an und übergeben myenv, das die Umgebung instanziiert, in der Umgebung.

    
    src = ScriptRunConfig(source_directory='script_folder2', 
                          script='script2.2.py', 
                          arguments =['--datadir', input_data, '--output', output],
                          compute_target=aml_compute,
                          environment=myenv)
    
  6. Führen Sie das Experiment aus
    Führen Sie das Skript aus.

    
    exp = Experiment(workspace, 'work-test')
    run = exp.submit(config=src)
    

Diese Zelle endet asynchron. Wenn Sie also auf das Ende der Ausführung warten möchten, führen Sie die folgende Anweisung aus.

```python

%%time
run.wait_for_completion(show_output=True)
```
  1. script2.2.py
    Der Inhalt eines remote ausgeführten Skripts. Kombinieren Sie wie oben erwähnt die Dateinamen der in work2 / input / gespeicherten Dateien in einem Datenrahmen und speichern Sie sie in work2 / output / output1 / als outfile.csv. output1 / wird in diesem Skript erstellt.

        
    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')
    

abschließend

Was denken Sie. Sie können die grundlegende Funktionsweise des Azure ML Python SDK in 1-4 mithilfe des Azure ML Python SDK verstehen. Nächstes Mal möchte ich Ihnen die Pipeline vorstellen.

Referenzmaterial

Azure ML Python SDK 1 verwenden: Dataset als Eingabe-Teil 1 verwenden [Verwenden von Azure ML Python SDK 2: Verwenden eines Datasets als Eingabe - Teil 2] (https://qiita.com/notanaha/items/30d57590c92b03bc953c) [Verwenden von Azure ML Python SDK 3: Verwenden eines Datasets als Eingabe - Teil 1] (https://qiita.com/notanaha/items/d22ba02b9cc903d281b6) Azure/MachineLearningNotebooks

Recommended Posts

Verwenden Sie Azure ML Python SDK 4: Schreiben Sie die Ausgabe in den Blob-Speicher - Teil 2
Verwenden Sie Azure ML Python SDK 3: Ausgabe in Blob-Speicher schreiben - Teil 1
Verwenden Sie Azure Blob Storage aus Python
Überprüfen Sie, wie Sie Azure Key Vault mit Azure SDK für Python verwenden! (Maßnahmen rund um die Zertifizierung)
python3: Verwendung der Flasche (2)
[Python] Verwendung von Liste 1
[Hyperledger Iroha] Hinweise zur Verwendung des Python SDK
Wie benutzt man Python Argparse?
Festlegen der Cache-Steuerung für den BLOB-Speicher in Azure Storage in Python
Python: Wie man pydub benutzt
[Python] Verwendung von checkio
Schreiben Sie mit Python in csv
[Python] Verwenden Sie diese Option, um WAV-Dateien zu lesen und zu schreiben. [WAVIO]
[Python] Verwendung von input ()
Wie benutzt man Python Lambda?
[Python] Verwendung von virtualenv
python3: Verwendung der Flasche (3)
python3: Wie man eine Flasche benutzt
Verwendung von Python-Bytes
Python: So verwenden Sie Async mit
[Python] Mit Python in eine CSV-Datei schreiben
[Python] Verwendung der Pandas-Serie
Verwendung von Anfragen (Python Library)
Verwendung von SQLite in Python
Ausgabe in eine CSV-Datei mit Python
[Einführung in Python] Verwenden wir Pandas
[Python] Verwendung von Liste 3 Hinzugefügt
Wie man MySQL mit Python benutzt
Verwendung der Python-API von OpenPose
Verwendung von ChemSpider in Python
Python: Verwendung von pydub (Wiedergabe)
Verwendung von PubChem mit Python
Einfach zu bedienendes Jupyter-Notebook (Python3.5)
[Einführung in Python] Verwenden wir Pandas
Verwendung der Zip-Funktion von Python
[Einführung in Python] Verwenden wir Pandas
[Python] Verwendung der Typetalk-API
Datei-Upload in Azure Storage (Python)
Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden 3 Schreiben Sie in eine Datei
[Python] Zusammenfassung der Verwendung von Pandas
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Verwendung der Spark ML-Pipeline
[Python] Extrahiere △△ mit maximalem ○○ mit Pandas
So installieren und verwenden Sie pandas_datareader [Python]
Geben Sie Farbzeichen mit Python zu hübsch aus
So schreiben Sie Python-Dokumentkommentare (Docstrings)
Python-Protokoll mit GAE an die Konsole ausgeben
Ich möchte ein Glas aus Python verwenden
[Einführung in Python] Verwenden wir foreach mit Python
[Python] Verwendung von import sys sys.argv
Einfache Möglichkeit, Wikipedia mit Python zu verwenden
[Python] Organisieren der Verwendung für Anweisungen
Memorandum über die Verwendung von Gremlin Python
[Python2.7] Zusammenfassung der Verwendung von unittest
Python: Verwendung von Einheimischen () und Globalen ()
Verwendung von __slots__ in der Python-Klasse
Installieren Sie Python auf xserver, um pip zu verwenden