重要
この記事では、Azure Machine Learning SDK v1 の使用に関する情報を提供します。 SDK v1 は、2025 年 3 月 31 日の時点で非推奨です。 サポートは 2026 年 6 月 30 日に終了します。 SDK v1 は、その日付までインストールして使用できます。
2026 年 6 月 30 日より前に SDK v2 に移行することをお勧めします。 SDK v2 の詳細については、「 Azure Machine Learning CLI と Python SDK v2 とは」 および SDK v2 リファレンスを参照してください。
場合によっては、Azure Machine Learning 用のモデル推論および拡張ソリューション用の事前構築済みの Docker イメージが、推論サービスのニーズを満たしていない場合があります。
その場合は、Dockerfile を使用すると、あらかじめ構築されたいずれかのイメージを出発点として新しいイメージを作成できます。 既存の事前構築済み Docker イメージを拡張することで、Azure Machine Learning のネットワーク スタックとライブラリを利用でき、イメージをゼロから作成する必要がありません。
メリットとトレードオフ
Dockerfile を使用すると、デプロイ前にイメージをフルにカスタマイズできます。 特に、コンテナーで設定する依存関係や環境変数を最大限制御することができます。
このアプローチの主なトレードオフは、デプロイ中に追加のイメージ ビルドが行われ、デプロイ プロセスが遅くなる点です。 Python パッケージの拡張方法を使用できる場合は、デプロイの方が高速です。
前提条件
Azure Machine Learning ワークスペース。 ワークスペースの作成に関するチュートリアルについては、作業を開始するためのリソースの作成に関する記事を参照してください。
Dockerfile の作成について熟知していること。
Docker のローカル作業環境 (
docker
CLI を含む)、または Azure Machine Learning ワークスペースに関連付けられた Azure Container Registry (ACR)。警告
ワークスペースの Azure Container Registry は、ワークスペースを使用して モデルを初めてトレーニングまたはデプロイするときに作成されます。 新しいワークスペースを作成したが、トレーニングまたはモデルを作成していない場合、ワークスペースに Azure Container Registry は存在しません。
Dockerfile を作成してビルドする
次のサンプルは、Azure Machine Learning の事前構築済み Docker イメージを基本イメージとして使用する Dockerfile です。
FROM mcr.microsoft.com/azureml/<image_name>:<tag>
COPY requirements.txt /tmp/requirements.txt
RUN pip install –r /tmp/requirements.txt
次に、必要なすべてのファイルと共に上記の Dockerfile をディレクトリに格納し、次のコマンドを実行してイメージをビルドします。
docker build -f <above dockerfile> -t <image_name>:<tag> .
ヒント
docker build
の詳細については、Docker のドキュメントを参照してください。
ローカルから docker build
コマンドが利用できない場合は、Azure Machine Learning ワークスペースの Azure Container Registry ACR を使用して、Docker イメージをクラウドにビルドします。 詳細については、Azure Container Registry でコンテナー イメージをビルド、デプロイする方法に関するチュートリアルを参照してください。
重要
Microsoft では、Azure Container Registry でカスタム基本イメージを作成しようとする前に、Dockerfile がローカルで正しく動作するか確認することを推奨しています。
以降のセクションでは、Dockerfile についてさらに詳しく説明していきます。
追加のパッケージをインストールする
Ubuntu コンテナーにインストールすべき apt
パッケージが他にもあれば、それらを Dockerfile に追加できます。 次の例は、Dockerfile から apt-get
コマンドを使用する方法を示しています。
FROM <prebuilt docker image from MCR>
# Switch to root to install apt packages
USER root:root
RUN apt-get update && \
apt-get install -y \
<package-1> \
...
<package-n> && \
apt-get clean -y && \
rm -rf /var/lib/apt/lists/*
# Switch back to non-root user
USER dockeruser
Dockerfile から追加の pip パッケージをインストールすることもできます。
pip install
の使用例を次に示します。
RUN pip install <library>
モデルとコードをイメージに組み込む
モデルとコードをイメージに組み込む必要がある場合、次の環境変数を Dockerfile で設定する必要があります。
-
AZUREML_ENTRY_SCRIPT
: コードのエントリ スクリプト。 このファイルに、init()
メソッドとrun()
メソッドが記述されます。 -
AZUREML_MODEL_DIR
: モデル ファイルを含むディレクトリ。 エントリ スクリプトは、このディレクトリをモデルのルート ディレクトリとして使用する必要があります。
次の例は、Dockerfile でこれらの環境変数を設定する方法を示しています。
FROM <prebuilt docker image from MCR>
# Code
COPY <local_code_directory> /var/azureml-app
ENV AZUREML_ENTRY_SCRIPT=<entryscript_file_name>
# Model
COPY <model_directory> /var/azureml-app/azureml-models
ENV AZUREML_MODEL_DIR=/var/azureml-app/azureml-models
Dockerfile の例
次の例は、apt
パッケージをインストールし、環境変数を設定して、Dockerfile にコードとモデルを組み込む方法を示しています。
注
次の例では、基本イメージとして mcr.microsoft.com/azureml/minimal-ubuntu20.04-py38-cpu-inference:latest
イメージを使用します。 使用可能なイメージの詳細については、 モデル推論用の事前構築済み Docker イメージを参照してください。
FROM mcr.microsoft.com/azureml/minimal-ubuntu20.04-py38-cpu-inference:latest
USER root:root
# Install libpng-tools and opencv
RUN apt-get update && \
apt-get install -y \
libpng-tools \
python3-opencv && \
apt-get clean -y && \
rm -rf /var/lib/apt/lists/*
# Switch back to non-root user
USER dockeruser
# Code
COPY code /var/azureml-app
ENV AZUREML_ENTRY_SCRIPT=score.py
# Model
COPY model /var/azureml-app/azureml-models
ENV AZUREML_MODEL_DIR=/var/azureml-app/azureml-models
次の手順
Azure Machine Learning Python SDK で Dockerfile を使用する方法については、次のドキュメントを参照してください。
モデルのデプロイについて詳しくは、モデルのデプロイ方法に関するページを参照してください。
事前構築済み Docker イメージのデプロイをトラブルシューティングする方法については、事前構築済み Docker イメージのデプロイをトラブルシューティングする方法に関するページを参照してください。