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.
Die Elemente, die dieses Mal angezeigt werden, sind
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.
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.
Schauen wir uns die Schritte der Reihe nach an.
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()
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")
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'))
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'])
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)
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)
```
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)
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.
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