カスタム環境を作成して使用する

完了

Azure Machine Learning で独自の環境を作成して、スクリプトを実行するために必要なパッケージ、ライブラリ、依存関係を一覧表示する必要がある場合は、カスタム環境を作成できます。

Docker イメージ、Docker ビルド コンテキスト、および Docker イメージを使用した conda 仕様から環境を定義できます。

Docker イメージからカスタム環境を作成する

最も簡単な方法は、Docker イメージから環境を作成することです。 Docker イメージは Docker Hub のようなパブリック レジストリにホストされている場合と、Azure コンテナー レジストリに非公開で格納されている場合があります。

多くのオープンソース フレームワークは、Docker Hub で見つけることができるパブリック イメージにカプセル化されています。 たとえば、PyTorch では、ディープ ラーニング モデルをトレーニングするために必要なパッケージがすべて含まれているパブリック Docker イメージを見つけることができます。

Docker イメージから環境を作成するには、Python SDK を使用できます。

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)

また、Azure Machine Learning のベース イメージを使って環境を作成することもできます (キュレーション環境で使うイメージと同様です)。

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)

conda 仕様ファイルを使ってカスタム環境を作成する

Docker イメージには、特定のフレームワークで作業するときに必要なパッケージがすべて含まれていますが、コードを実行するために必要に応じて他のパッケージを追加する場合があります。

たとえば、PyTorch でモデルをトレーニングし、MLflow でモデルを追跡する場合などです。

他のパッケージやライブラリを環境に含める必要がある場合、環境を作成するときに Docker イメージに conda 仕様ファイルを追加できます。

conda 仕様ファイルは YAML ファイルであり、conda または pip を使ってインストールする必要があるパッケージが記載されています。 この YAML ファイルは次のような内容です。

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

ヒント

conda ファイルの標準形式については、環境を手動で作成する方法に関する conda ドキュメントを参照してください。

ベースとなる Docker イメージと conda 仕様ファイルから環境を作成するには、次のコードを使用できます。

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)

Note

キュレーション環境にはすべて AzureML- というプレフィックスが付くので、同じプレフィックスを持つ環境を作成することはできません。

環境を使う

最も一般的な環境の使用例は、スクリプトを (コマンド) ジョブ として実行する場合です。

スクリプトの実行に使う環境を指定するには、<curated-environment-name>:<version> または <curated-environment-name>@latest という構文を使って環境を参照します。

たとえば、次のコードは、Scikit-Learn を含むキュレーション環境を使うコマンド ジョブを Python SDK で構成する方法を示しています。

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)

ジョブを送信すると、その環境が構築されます。 初めて環境を使う場合、環境の構築には 10 分から 15 分かかることがあります。 ジョブのログで環境構築のログを確認できます。

Azure Machine Learning で新しい環境を構築すると、ワークスペースのカスタム環境の一覧に追加されます。 環境のイメージは、ワークスペースに関連付けられた Azure コンテナー レジストリにホストされます。 同じ環境を別のジョブ (および別のスクリプト) に使うときはいつでも、環境はすぐに使用できる状態であり、再構築する必要はありません。