Modell betanítása egyéni Docker-rendszerkép használatával

ÉRVÉNYES:Python SDK azureml v1

Ebből a cikkből megtudhatja, hogyan használhat egyéni Docker-rendszerképeket az Azure Machine-Tanulás betanításához. 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 Tanulás alapértelmezett Docker-alaprendszerképet biztosít. Az Azure Machine Tanulás környezetek használatával is megadhat egy másik alaprendszerképet, például az egyik karbantartott Azure Machine-Tanulás alaprendszerképet vagy a 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 Tanulás 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 Tanulás 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 Tanulás 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. Alapértelmezés szerint az Azure Machine Tanulás 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 Tanulás 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.

Az Azure Machine Tanulás környezetek létrehozásáról és kezeléséről további információt a szoftverkörnyezetek létrehozása és használata című témakörben talál.

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 Tanulás szolgáltatáshoz társított bizonyos erőforrásokra (példáulAmlCompute) 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 az Azure Machine Tanulás.

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ú ScriptRunobjektumot 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 Tanulás a teljes forráskönyvtár másolásával futtatja a 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.

További lépések

Ebben a cikkben egy egyéni Docker-rendszerkép használatával képezte be a modellt. Az Azure Machine-Tanulás további információkért tekintse meg az alábbi cikkeket:

  • 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.