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í:
- Výpočetní instance Azure Machine Učení (není potřeba stahovat ani instalovat):
- Dokončete kurz Vytvoření prostředků a začněte vytvářet vyhrazený server poznámkových bloků předem načtený pomocí sady SDK a ukázkového úložiště.
- Váš vlastní server Jupyter Notebook:
- Vytvořte konfigurační soubor pracovního prostoru.
- Nainstalujte sadu Azure Machine Učení SDK.
- Vytvořte registr kontejneru Azure nebo jiný registr Dockeru, který je k dispozici na internetu.
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 None
hodnotu .
# 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:
- Sledujte metriky spuštění během trénování.
- Nasaďte model pomocí vlastní image Dockeru.