In Verwenden von Azure ML Python SDK: Verwenden eines Datasets als Eingabe - Teil 1 wurde das Eingabedatensatz vom Aufrufer des Skripts script.py angegeben. Mit Azure Machine Learning Workspace können Sie ein Dataset registrieren. Daher möchten Sie es natürlich abrufen und in script.py verwenden. Dieses Mal werde ich vorstellen, wie es geht.
Die Elemente, die dieses Mal angezeigt werden, sind wie folgt.
Das letzte Mal habe ich einen lokalen PC (Visual Studio Code, Azure ML Python SDK installiert) anstelle von Jupyter Notebook verwendet, aber beide sind hinsichtlich der Verwendung eines Remote-Compute-Clusters für die Skriptausführung identisch. Jupyter Notebook wird von einer Recheninstanz in Azure Machine Learning Studio aus gestartet und ist nützlich, da Sie Ihre Recheninstanz neu erstellen können, um die neueste Azure ML Python SDK-Version zu nutzen.
Die Ordnerstruktur von Notebook wird unter der Annahme beschrieben, dass sie wie folgt ist. Sie müssen config.json nicht berücksichtigen, da es sich in der Azure ML Workspace-Umgebung befindet.
Auch in diesem Beispiel ist script1.1.py so einfach wie das Lesen der CSV-Datei im Blob-Speicher und das Schreiben in das Ausgabeverzeichnis. Ebenso ist es die Aufgabe von HelloWorld1.1.ipynb, script1.1.py zur Ausführung an einen Computercluster zu senden.
Die Vorgehensweise für HelloWorld1.1.ipynb lautet wie folgt. Im Gegensatz zum letzten Mal gibt es keinen Schritt, um den CSV-Dateipfad im Blob-Speicher anzugeben.
Schauen wir uns die Schritte der Reihe nach an.
Laden Sie das Paket
Laden Sie zuerst das Paket.
import azureml.core
from azureml.core import Workspace, Experiment, Dataset, Datastore, ScriptRunConfig
from azureml.core.compute import ComputeTarget
from azureml.core.compute_target import ComputeTargetException
from azureml.core.runconfig import RunConfiguration, DEFAULT_CPU_IMAGE
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 im Azure ML Studo-Arbeitsbereich erstellt, um die allgemeine Sichtbarkeit zu verbessern.
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")
Angeben der Containerumgebung
Geben Sie hier die Ausführungsumgebung an. Übergeben Sie die Compute-Cluster-Variablen und geben Sie die Pakete an, die im Container-Image verwendet werden sollen. Hier wird nur pip_package verwendet, Sie können jedoch auch conda_package angeben.
run_config = RunConfiguration()
run_config.target = aml_compute
run_config.environment.docker.enabled = True
run_config.environment.docker.base_image = DEFAULT_CPU_IMAGE
run_config.environment.python.user_managed_dependencies = False
run_config.environment.python.conda_dependencies = CondaDependencies.create(
pip_packages=['azureml-defaults'],
pin_sdk_version=False
)
Geben Sie den Namen der Ausführungsdatei an
Geben Sie den Ordnernamen an, der die Skripte enthält, die remote mit script_folder 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 script_folder an den Container übergeben. Achten Sie daher darauf, keine unnötigen Dateien zu platzieren.
Die Eingabedatei wird von script1.1.py abgerufen, daher wird sie hier nicht angegeben.
src = ScriptRunConfig(source_directory='script_folder', script='script1.1.py',
run_config = run_config)
Führen Sie das Experiment aus
experiment_name wird als Anzeigename für das Experiment verwendet.
experiment_name = 'ScriptRunConfig2'
experiment = Experiment(workspace = workspace, name = experiment_name)
run = experiment.submit(config=src)
run
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)
```
script1.1.py
Der Inhalt eines remote ausgeführten Skripts.
Get_context () übergibt die Ausführungsinformationen des aufrufenden Skripts. Die Experimentinformationen, bei denen es sich um die Attributinformationen in diesem Lauf handelt, werden abgerufen, und die Arbeitsbereichsinformationen, bei denen es sich um die Attributinformationen des Experiments handelt, werden abgerufen. Sobald Sie die Arbeitsbereichsinformationen kennen, können Sie den Datensatz mit get_by_name im Arbeitsbereich registrieren lassen. Dieser get_by_name wird in demselben Format geschrieben, das auf der Registerkarte "Verwenden" des registrierten Datasets in Azure Machine Learning Studio angezeigt wird.
Dieses Skript schreibt die Datei schließlich in den Ausgabeordner. Standardmäßig wird dieser Ausgabeordner ohne Aktion erstellt und kann nach der Ausführung aus den "Ausgaben und Protokollen" des Experiments referenziert werden.
from azureml.core import Run, Dataset, Workspace
run = Run.get_context()
exp = run.experiment
workspace = exp.workspace
dataset = Dataset.get_by_name(workspace, name='hello_ds')
df = dataset.to_pandas_dataframe()
HelloWorld = df.iloc[0,1]
print('*******************************')
print('********* ' + HelloWorld + ' *********')
print('*******************************')
df.to_csv('./outputs/HelloWorld.csv', mode='w', index=False)
[Referenz] Inhalt von HelloWorld.txt
Die hier verwendete CSV-Datei ist einfach.
0,Hello World
1,Hello World
2,Hello World
Was denken Sie. Es gibt verschiedene Variationen der Eingabe / Ausgabe des Azure ML Python SDK. Nächstes Mal möchte ich die Ausgabe vorstellen.
Was ist das Azure Machine Learning SDK für Python? azureml.core.experiment.Experiment class - Microsoft Docs Azure ML Python SDK 1 verwenden: Dataset als Eingabe-Teil 1 verwenden Verwenden von Azure ML Python SDK 3: Exportieren der Ausgabe in den Blob-Speicher - Teil 1 [Verwenden von Azure ML Python SDK 4: Exportieren der Ausgabe in den Blob-Speicher - Teil 2] (https://qiita.com/notanaha/items/655290670a83f2a00fdc)
Recommended Posts