Verwenden Sie Azure ML Python SDK 3: Ausgabe in Blob-Speicher schreiben - Teil 1

Inhalt dieser Zeit

Azure ML Python SDK verwenden: Dataset als Eingabe verwenden - Teil 1 und [Azure ML Python SDK verwenden: Dataset als Eingabe verwenden - Teil 2] (https://qiita.com/notanaha/items/30d57590c92b03bc953c) Dann habe ich den Umgang mit Eingabedaten beschrieben. Ich habe den standardmäßig bereitgestellten Ausgabeordner für die Ausgabe verwendet, aber dieses Mal werde ich ihn in einen beliebigen Blob-Speicher schreiben.

Aussehensgegenstand

Die Elemente, die dieses Mal angezeigt werden, sind

Azureml1-3.png

So überprüfen Sie die Version des Python SDK


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

Die Ordnerstruktur von Notebook wird unter der Annahme beschrieben, dass sie wie folgt ist.

Azureml2-3.png

Nach wie vor ist script2.py so einfach wie das Lesen der CSV-Datei im Blob-Speicher und das Schreiben in den Trainingsordner. Ebenso ist es die Aufgabe von HelloWorld2.0.ipynb, script2.py zur Ausführung an einen Computercluster zu senden.

Das Verfahren für HelloWorld2.0.ipynb ist wie folgt. Der Ausgabeordner ist in ③ angegeben. Azureml3-3.png

Verfahren

Schauen wir uns die Schritte der Reihe nach an.

  1. Laden Sie das Paket
    Laden Sie zuerst 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
    Sie können mit dem Python SDK auch Remote-Rechenressourcen erstellen. Hier habe ich jedoch im Voraus einen Rechencluster in Azure ML Studio erstellt, um eine bessere Gesamtansicht zu erhalten.

    
    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. Geben Sie den CSV-Dateipfad und den 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. Im Gegensatz zum letzten Mal wird es mit dem Dateinamen File.from_files () übergeben. Tabular.from_delimited_files () wird zum Übergeben von Tabellendaten wie CSV-Dateien verwendet, File.from_files () kann jedoch zum Übergeben anderer Dateien und Ordner verwendet werden.

    
    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. Angeben der Containerumgebung
    Wie oben erwähnt, verwenden wir diesmal Environment () anstelle von RunConfiguration (). Im ersten Fall wurden die Variablen des Rechenclusters hier angegeben, im zweiten Fall jedoch nicht, und die Variablen des Rechenclusters werden im folgenden ScriptRunConfig () angegeben. Hier wird nur pip_package verwendet, aber conda_package kann auf die gleiche Weise wie RunConfiguration () angegeben werden.

    myenv = Environment("myenv")
    
    myenv.docker.enabled = True
    myenv.python.conda_dependencies = CondaDependencies.create(pip_packages=['azureml-defaults'])
    
  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. Bis zum letzten Mal haben wir die für Azure ML Python SDK spezifische Methode beim Übergeben von Datasets eingeführt. Dieses Mal werden wir sie jedoch anhand der Methode beschreiben, mit der das durch Argumente mit argparse angegebene Argument empfangen wird. Ü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.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, 'InOutSample')
    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.py
    Der Inhalt eines remote ausgeführten Skripts. Sie können den Parser verwenden, um das Datenverzeichnis und die Ausgabeargumente abzurufen. Der vollständige Pfad zur Eingabedatei wird an args.datadir übergeben. Auf der anderen Seite wird args.output nur an den Ordnernamen übergeben, daher wird os.path.join verwendet, um hier den Dateinamen output.csv anzugeben.

        
    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)
    

abschließend

Was denken Sie. Dieses Mal habe ich vorgestellt, wie die Ausgabe in einen beliebigen Blob-Speicher geschrieben wird. Außerdem wurde File.from_files () verwendet, um die Eingabedatei anzugeben, und Environment () wurde verwendet, um die Containerumgebung anzugeben, die sich von der vorherigen Zeit unterschied. Nächstes Mal werde ich eine Variante einführen, die einen Ordner mit File.from_files () angibt.

Referenzmaterial

Azure/MachineLearningNotebooks: scriptrun-with-data-input-output 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 4: Exportieren der Ausgabe in den Blob-Speicher - Teil 2] (https://qiita.com/notanaha/items/655290670a83f2a00fdc) azureml.data.OutputFileDatasetConfig class - Microsoft Docs azureml.core.Environment class - Microsoft Docs

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 ML Python SDK 2: Verwenden Sie ein Dataset als Eingabe-Teil 2
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
Wie benutzt man Python Argparse?
Festlegen der Cache-Steuerung für den BLOB-Speicher in Azure Storage in Python
Python: Wie man pydub benutzt
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
So ändern Sie die Protokollstufe von Azure SDK für Python
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
Schreiben Sie die Standardausgabe in eine Datei
[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
[Einführung in Python] Wie verwende ich eine Klasse in Python?
[Python] Extrahiere △△ mit maximalem ○○ mit Pandas
[Road to Intermediate Python] Verwenden Sie ternäre Operatoren
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
[Python] Verwendung von __command__, Funktionserklärung
Ich möchte ein Glas aus Python verwenden
[Einführung in Python] Verwenden wir foreach mit Python
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
Python> Ausgaben von 1 bis 100, 501 bis 600> Für CSV