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í:
- Výpočetní instance Služby Azure Machine Learning (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 Learning 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 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 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 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:
- Sledujte metriky spuštění během trénování.
- Nasaďte model pomocí vlastní image Dockeru.