Modell betanítása egyéni Docker-rendszerkép használatával
A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1
Ebből a cikkből megtudhatja, hogyan használhat egyéni Docker-rendszerképeket az Azure Machine Learning-modellek betanítása során. A cikkben szereplő példaszkriptekkel osztályozhatja a kisállat-képeket egy konvolúciós neurális hálózat létrehozásával.
Az Azure Machine Learning alapértelmezett Docker-alaprendszerképet biztosít. Az Azure Machine Learning-környezetekkel másik alaprendszerképet is megadhat, például az Azure Machine Learning egyik karbantartott alaprendszerképét vagy saját egyéni rendszerképét. Az egyéni alaprendszerképek lehetővé teszik a függőségek szoros kezelését, és szigorúbban szabályozhatja az összetevők verzióit betanítási feladatok futtatásakor.
Előfeltételek
Futtassa a kódot az alábbi környezetek valamelyikén:
- Azure Machine Learning számítási példány (nincs szükség letöltésre vagy telepítésre):
- Az első lépésekhez végezze el az Erőforrások létrehozása oktatóanyagot, amely egy dedikált, az SDK-val és a mintaadattárral előre betöltött jegyzetfüzet-kiszolgálót hoz létre.
- Saját Jupyter Notebook-kiszolgáló:
- Munkaterület konfigurációs fájljának létrehozása.
- Telepítse az Azure Machine Learning SDK-t.
- Hozzon létre egy Azure-tárolóregisztrációs adatbázist vagy más, az interneten elérhető Docker-beállításjegyzéket.
Betanítási kísérlet beállítása
Ebben a szakaszban egy munkaterület inicializálásával, a környezet meghatározásával és egy számítási cél konfigurálásával állíthatja be a betanítási kísérletet.
Munkaterület inicializálása
Az Azure Machine Learning-munkaterület a szolgáltatás legfelső szintű erőforrása. Ez egy központosított helyet biztosít a létrehozott összes összetevővel való munkához. A Python SDK-ban objektum létrehozásával érheti el a munkaterület összetevőit Workspace
.
Hozzon létre egy Workspace
objektumot az előfeltételként létrehozott config.json fájlból.
from azureml.core import Workspace
ws = Workspace.from_config()
A környezet meghatározása
Hozzon létre egy objektumot Environment
.
from azureml.core import Environment
fastai_env = Environment("fastai2")
A következő kódban megadott alaprendszerkép támogatja a fast.ai kódtárat, amely lehetővé teszi az elosztott mélytanulási képességeket. További információ: fast.ai Docker Hub-adattár.
Az egyéni Docker-rendszerkép használatakor előfordulhat, hogy már megfelelően van beállítva a Python-környezet. Ebben az esetben állítsa be a user_managed_dependencies
jelzőt úgy, hogy True
az az egyéni rendszerkép beépített Python-környezetét használja. Az Azure Machine Learning alapértelmezés szerint létrehoz egy Conda-környezetet a megadott függőségekkel. A szolgáltatás a szkriptet ebben a környezetben futtatja ahelyett, hogy az alaprendszerképre telepített Python-kódtárakat használ.
fastai_env.docker.base_image = "fastdotai/fastai2:latest"
fastai_env.python.user_managed_dependencies = True
Privát tárolóregisztrációs adatbázis használata (nem kötelező)
Ha a munkaterületen nem található privát tárolóregisztrációs adatbázisból származó lemezképet szeretne használni, adja meg az adattár címét, docker.base_image_registry
valamint egy felhasználónevet és jelszót:
# 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"
Egyéni Dockerfile használata (nem kötelező)
Egyéni Dockerfile is használható. Ezt a módszert akkor használja, ha függőségként nem Python-csomagokat kell telepítenie. Ne felejtse el beállítani az alaprendszerképet a következőre None
: .
# 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"
Fontos
Az Azure Machine Learning csak az alábbi szoftvereket biztosító Docker-rendszerképeket támogatja:
- Ubuntu 18.04 vagy újabb.
- Conda 4.7.# vagy újabb.
- Python 3.7+.
- A betanításhoz használt tárolórendszerképekben a /bin/sh helyen elérhető POSIX-kompatibilis rendszerhéjra van szükség.
További információ az Azure Machine Learning-környezetek létrehozásáról és kezeléséről: Szoftverkörnyezetek létrehozása és használata.
Számítási cél létrehozása vagy csatolása
Létre kell hoznia egy számítási célt a modell betanításához. Ebben az oktatóanyagban a betanítási számítási erőforrásként hoz létre AmlCompute
.
A létrehozás AmlCompute
néhány percet vesz igénybe. Ha az AmlCompute
erőforrás már a munkaterületen van, ez a kód kihagyja a létrehozási folyamatot.
A többi Azure-szolgáltatáshoz hasonlóan az Azure Machine Learning szolgáltatáshoz társított bizonyos erőforrásokra (például AmlCompute
) is korlátozások vonatkoznak. További információt az Alapértelmezett korlátok és a magasabb kvóta kérése című témakörben talál.
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())
Fontos
Használjon cpu-termékváltozatokat a számításra épülő rendszerképekhez.
A betanítási feladat konfigurálása
Ebben az oktatóanyagban használja a GitHubon train.py betanítási szkriptet. A gyakorlatban bármilyen egyéni betanítási szkriptet használhat, és futtathatja, ahogyan az Azure Machine Learningben is.
Hozzon létre egy erőforrást ScriptRunConfig
, amely konfigurálja a feladatot a kívánt számítási célon való futtatáshoz.
from azureml.core import ScriptRunConfig
src = ScriptRunConfig(source_directory='fastai-example',
script='train.py',
compute_target=compute_target,
environment=fastai_env)
A betanítási feladat elküldése
Amikor egy objektummal futtatott betanítást ScriptRunConfig
küld, a submit
metódus egy típusú ScriptRun
objektumot ad vissza. A visszaadott ScriptRun
objektum programozott hozzáférést biztosít a betanítási futtatásra vonatkozó információkhoz.
from azureml.core import Experiment
run = Experiment(ws,'Tutorial-fastai').submit(src)
run.wait_for_completion(show_output=True)
Figyelmeztetés
Az Azure Machine Learning a teljes forráskönyvtár másolásával futtat betanítási szkripteket. Ha olyan bizalmas adatokkal rendelkezik, amelyeket nem szeretne feltölteni, használjon .ignore fájlt , vagy ne vegye fel azokat a forráskönyvtárba. Ehelyett egy adattár használatával érheti el az adatokat.
Következő lépések
Ebben a cikkben egy egyéni Docker-rendszerkép használatával képezte be a modellt. Az Azure Machine Learningről további információt az alábbi cikkekben talál:
- Futtatási metrikák nyomon követése a betanítás során.
- Modell üzembe helyezése egyéni Docker-rendszerkép használatával.