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 Učení. 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 Učení poskytuje výchozí základní image Dockeru. Pomocí prostředí Azure Machine Učení můžete také určit jinou základní image, například jednu ze spravovaných základních imagí Azure Machine Učení 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 Učení Azure 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 Učení 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 Učení 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 Učení 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 Učení. 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 tak, jak je, se službou Azure Machine Učení.

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 Učení 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 Učení najdete v těchto dalších článcích: