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.
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.
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.
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.
Wir werden die Schritte wie zuvor fortsetzen.
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()
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")
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'))
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'
])
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)
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)
```
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')
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.
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