Tworzenie i używanie środowisk niestandardowych

Ukończone

Jeśli musisz utworzyć własne środowisko w usłudze Azure Machine Edukacja, aby wyświetlić listę wszystkich niezbędnych pakietów, bibliotek i zależności do uruchamiania skryptów, możesz tworzyć środowiska niestandardowe.

Środowisko można zdefiniować na podstawie obrazu platformy Docker, kontekstu kompilacji platformy Docker i specyfikacji conda z obrazem platformy Docker.

Tworzenie środowiska niestandardowego na podstawie obrazu platformy Docker

Najprostszym podejściem może być utworzenie środowiska na podstawie obrazu platformy Docker. Obrazy platformy Docker mogą być hostowane w rejestrze publicznym, na przykład w usłudze Docker Hub lub prywatnie przechowywane w rejestrze kontenerów platformy Azure.

Wiele platform typu open source jest hermetyzowanych w obrazach publicznych, które można znaleźć w usłudze Docker Hub. Możesz na przykład znaleźć publiczny obraz platformy Docker zawierający wszystkie niezbędne pakiety do wytrenowania modelu uczenia głębokiego za pomocą rozwiązania PyTorch.

Aby utworzyć środowisko na podstawie obrazu platformy Docker, możesz użyć zestawu SDK języka Python:

from azure.ai.ml.entities import Environment

env_docker_image = Environment(
    image="pytorch/pytorch:latest",
    name="public-docker-image-example",
    description="Environment created from a public Docker image.",
)
ml_client.environments.create_or_update(env_docker_image)

Możesz również użyć usługi Azure Machine Edukacja obrazów podstawowych do utworzenia środowiska (które są podobne do obrazów używanych przez wyselekcjonowane środowiska):

from azure.ai.ml.entities import Environment

env_docker_image = Environment(
    image="mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04",
    name="aml-docker-image-example",
    description="Environment created from a Azure ML Docker image.",
)
ml_client.environments.create_or_update(env_docker_image)

Tworzenie środowiska niestandardowego przy użyciu pliku specyfikacji conda

Chociaż obrazy platformy Docker zawierają wszystkie niezbędne pakiety podczas pracy z określoną strukturą, może być konieczne dołączenie innych pakietów do uruchomienia kodu.

Na przykład możesz chcieć wytrenować model za pomocą narzędzia PyTorch i śledzić model za pomocą biblioteki MLflow.

Jeśli musisz uwzględnić inne pakiety lub biblioteki w środowisku, możesz dodać plik specyfikacji conda do obrazu platformy Docker podczas tworzenia środowiska.

Plik specyfikacji conda to plik YAML, który zawiera listę pakietów, które należy zainstalować przy użyciu programu conda lub pip. Taki plik YAML może wyglądać następująco:

name: basic-env-cpu
channels:
  - conda-forge
dependencies:
  - python=3.7
  - scikit-learn
  - pandas
  - numpy
  - matplotlib

Napiwek

Zapoznaj się z dokumentacją conda dotyczącą ręcznego tworzenia środowiska, aby uzyskać informacje na temat standardowego formatu plików conda.

Aby utworzyć środowisko na podstawie podstawowego obrazu platformy Docker i pliku specyfikacji conda, możesz użyć następującego kodu:

from azure.ai.ml.entities import Environment

env_docker_conda = Environment(
    image="mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04",
    conda_file="./conda-env.yml",
    name="docker-image-plus-conda-example",
    description="Environment created from a Docker image plus Conda environment.",
)
ml_client.environments.create_or_update(env_docker_conda)

Uwaga

Ponieważ wszystkie wyselekcjonowane środowiska są poprzedzone prefiksem AzureML, nie można utworzyć środowiska z tym samym prefiksem.

Korzystanie ze środowiska

Najczęściej używasz środowisk, gdy chcesz uruchomić skrypt jako zadanie (polecenie).

Aby określić środowisko, którego chcesz użyć do uruchomienia skryptu, należy odwołać się do środowiska przy użyciu <curated-environment-name>:<version> składni lub <curated-environment-name>@latest .

Na przykład poniższy kod pokazuje, jak skonfigurować zadanie polecenia za pomocą zestawu SDK języka Python, które używa nadzorowanego środowiska, w tym biblioteki Scikit-Learn:

from azure.ai.ml import command

# configure job
job = command(
    code="./src",
    command="python train.py",
    environment="docker-image-plus-conda-example:1",
    compute="aml-cluster",
    display_name="train-custom-env",
    experiment_name="train-custom-env"
)

# submit job
returned_job = ml_client.create_or_update(job)

Po przesłaniu zadania środowisko zostanie skompilowane. Przy pierwszym użyciu środowiska tworzenie środowiska może potrwać od 10 do 15 minut. Dzienniki kompilacji środowiska można przejrzeć w dziennikach zadania.

Gdy usługa Azure Machine Edukacja tworzy nowe środowisko, jest dodawana do listy środowisk niestandardowych w obszarze roboczym. Obraz środowiska jest hostowany w rejestrze kontenerów platformy Azure skojarzonym z obszarem roboczym. Za każdym razem, gdy używasz tego samego środowiska dla innego zadania (i innego skryptu), środowisko jest gotowe do użycia i nie musi być ponownie kompilować.