Sdílet prostřednictvím


Trénování modelu pomocí vlastní image Dockeru

PLATÍ PRO: Python SDK azureml v1

V tomto článku se dozvíte, jak používat vlastní image Dockeru při trénování modelů pomocí služby Azure Machine Learning. Ukázkové skripty v tomto článku použijete ke klasifikaci obrázků domácích mazlíčků vytvořením konvoluční neurální sítě.

Azure Machine Learning poskytuje výchozí základní image Dockeru. Prostředí Azure Machine Learning můžete také použít k určení jiné základní image, jako je jedna ze spravovaných základních imagí služby Azure Machine Learning nebo vlastní image. Vlastní základní image umožňují při spouštění trénovacích úloh úzce spravovat závislosti a udržovat užší kontrolu nad verzemi komponent.

Požadavky

Spusťte kód v některém z těchto prostředí:

Nastavení trénovacího experimentu

V této části nastavíte trénovací experiment inicializací pracovního prostoru, definováním prostředí a konfigurací cílového výpočetního objektu.

Inicializace pracovního prostoru

Pracovní prostor Azure Machine Learning je prostředek nejvyšší úrovně služby. Poskytuje centralizované místo pro práci se všemi artefakty, které vytvoříte. V sadě Python SDK máte přístup k artefaktům pracovního prostoru vytvořením objektu Workspace .

Vytvořte Workspace objekt ze souboru config.json, který jste vytvořili jako předpoklad.

from azureml.core import Workspace

ws = Workspace.from_config()

Definování prostředí

Vytvořte Environment objekt.

from azureml.core import Environment

fastai_env = Environment("fastai2")

Zadaná základní image v následujícím kódu podporuje knihovnu fast.ai, která umožňuje distribuované možnosti hlubokého učení. Další informace najdete v úložišti fast.ai Docker Hubu.

Pokud používáte vlastní image Dockeru, možná už máte správně nastavené prostředí Pythonu. V takovém případě nastavte user_managed_dependencies příznak tak, aby True používal integrované prostředí Pythonu pro vaši vlastní image. Azure Machine Learning ve výchozím nastavení sestaví prostředí Conda se zadanými závislostmi. Služba spustí skript v daném prostředí místo toho, aby používala knihovny Pythonu, které jste nainstalovali na základní image.

fastai_env.docker.base_image = "fastdotai/fastai2:latest"
fastai_env.python.user_managed_dependencies = True

Použití privátního registru kontejneru (volitelné)

Pokud chcete použít image z privátního registru kontejneru, který není ve vašem pracovním prostoru, použijte docker.base_image_registry k zadání adresy úložiště a uživatelského jména a hesla:

# Set the container registry information.
fastai_env.docker.base_image_registry.address = "myregistry.azurecr.io"
fastai_env.docker.base_image_registry.username = "username"
fastai_env.docker.base_image_registry.password = "password"

Použití vlastního souboru Dockerfile (volitelné)

Je také možné použít vlastní soubor Dockerfile. Tento přístup použijte, pokud potřebujete nainstalovat balíčky mimo Python jako závislosti. Nezapomeňte nastavit základní image na Nonehodnotu .

# Specify Docker steps as a string. 
dockerfile = r"""
FROM mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:20210615.v1
RUN echo "Hello from custom container!"
"""

# Set the base image to None, because the image is defined by Dockerfile.
fastai_env.docker.base_image = None
fastai_env.docker.base_dockerfile = dockerfile

# Alternatively, load the string from a file.
fastai_env.docker.base_image = None
fastai_env.docker.base_dockerfile = "./Dockerfile"

Důležité

Azure Machine Learning podporuje jenom image Dockeru, které poskytují následující software:

  • Ubuntu 18.04 nebo novější.
  • Conda 4.7.# nebo novější.
  • Python 3.7+.
  • Prostředí kompatibilní s POSIX, které je k dispozici na adrese /bin/sh, se vyžaduje v libovolné imagi kontejneru použité k trénování.

Další informace o vytváření a správě prostředí Azure Machine Learning najdete v tématu Vytváření a používání softwarových prostředí.

Vytvoření nebo připojení cílového výpočetního objektu

Pro trénování modelu potřebujete vytvořit cílový výpočetní objekt. V tomto kurzu vytvoříte AmlCompute jako trénovací výpočetní prostředek.

AmlCompute Vytvoření trvá několik minut. AmlCompute Pokud už je prostředek ve vašem pracovním prostoru, tento kód proces vytváření přeskočí.

Stejně jako u jiných služeb Azure existují omezení pro určité prostředky (například AmlCompute) přidružené ke službě Azure Machine Learning. Další informace najdete v tématu Výchozí limity a jak požádat o vyšší kvótu.

from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException

# Choose a name for your cluster.
cluster_name = "gpu-cluster"

try:
    compute_target = ComputeTarget(workspace=ws, name=cluster_name)
    print('Found existing compute target.')
except ComputeTargetException:
    print('Creating a new compute target...')
    compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_NC6',
                                                           max_nodes=4)

    # Create the cluster.
    compute_target = ComputeTarget.create(ws, cluster_name, compute_config)

    compute_target.wait_for_completion(show_output=True)

# Use get_status() to get a detailed status for the current AmlCompute.
print(compute_target.get_status().serialize())

Důležité

Skladové položky procesoru můžete použít pro všechny image postavené na výpočetních prostředcích.

Konfigurace trénovací úlohy

Pro účely tohoto kurzu použijte trénovací skript train.py na GitHubu. V praxi můžete použít libovolný vlastní trénovací skript a spustit ho stejně jako azure Machine Learning.

Vytvořte ScriptRunConfig prostředek, který nakonfiguruje úlohu pro spuštění v požadovaném cílovém výpočetním objektu.

from azureml.core import ScriptRunConfig

src = ScriptRunConfig(source_directory='fastai-example',
                      script='train.py',
                      compute_target=compute_target,
                      environment=fastai_env)

Odeslání trénovací úlohy

Když odešlete trénovací běh pomocí objektu ScriptRunConfig , submit vrátí metoda objekt typu ScriptRun. Vrácený ScriptRun objekt poskytuje programový přístup k informacím o trénovacím spuštění.

from azureml.core import Experiment

run = Experiment(ws,'Tutorial-fastai').submit(src)
run.wait_for_completion(show_output=True)

Upozorňující

Azure Machine Learning spouští trénovací skripty zkopírováním celého zdrojového adresáře. Pokud máte citlivá data, která nechcete nahrát, použijte soubor .ignore nebo je nezahrňte do zdrojového adresáře. Místo toho přistupovat k datům pomocí úložiště dat.

Další kroky

V tomto článku jste model vytrénovali pomocí vlastní image Dockeru. Další informace o službě Azure Machine Learning najdete v těchto dalších článcích: