次の方法で共有


カスタム Docker イメージを使用してモデルをトレーニングする

適用対象:Azure Machine Learning SDK v1 for Python

重要

この記事では、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 Python SDK v2SDK v2 リファレンスとは」を参照してください。

この記事では、カスタム Docker イメージを使用して Azure Machine Learning でモデルをトレーニングする方法について説明します。 サンプル スクリプトは、畳み込みニューラル ネットワークを作成して画像を分類する方法を示しています。

Azure Machine Learning では既定の Docker 基本イメージを提供します。 また、Azure Machine Learning 環境を使用して、保守されている Azure Machine Learning の基本イメージや独自の カスタム イメージなど、別の基本イメージを指定することもできます。 カスタム 基本イメージを使用すると、トレーニング ジョブを実行するときに、依存関係を厳密に管理し、コンポーネントのバージョンをより厳密に制御できます。

前提条件

コード例を実行するには、構成に次のいずれかの環境を含める必要があります。

  • 専用のノートブック サーバーが Machine Learning SDK およびサンプル リポジトリにプリロードされた Azure Machine Learning コンピューティング インスタンス。

    この構成では、ダウンロードやその他のインストールは必要ありません。 この環境を準備するには、「 開始するためのリソースの作成」を参照してください。

  • Jupyter Notebook サーバー。 次のリソースは、この環境の準備に役立つ手順を提供します。

トレーニング実験を設定する

最初のタスクは、Machine Learning ワークスペースを初期化し、環境を定義し、コンピューティング 先を構成して、トレーニング実験を設定することです。

ワークスペースを初期化する

Azure Machine Learning ワークスペースは、サービス用の最上位のリソースです。 作成したすべての成果物を一元的に操作できます。 Python SDK では、Workspace オブジェクトを作成することでワークスペースの成果物にアクセスできます。

必要に応じて、前提条件として作成した config.json ファイルから Workspace オブジェクトを作成 します

from azureml.core import Workspace

ws = Workspace.from_config()

環境を定義する

Environment オブジェクトを作成します。

from azureml.core import Environment

fastai_env = Environment("fastai2")

次のコードで指定された基本イメージは、分散型ディープ ラーニング機能を可能にする fast.ai ライブラリをサポートしています。 詳細については、fast.ai の Docker Hub リポジトリを参照してください。

カスタム Docker イメージを使用する場合は、Python 環境が適切に設定されている可能性があります。 その場合は、カスタム イメージの組み込みの Python 環境を使用するために、user_managed_dependencies フラグを True に設定します。 既定では、Azure Machine Learning では、指定した依存関係を持つ Conda 環境が構築されます。 サービスは、基本イメージにインストールした Python ライブラリを使用するのではなく、その環境でスクリプトを実行します。

fastai_env.docker.base_image = "fastdotai/fastai2:latest"
fastai_env.python.user_managed_dependencies = True

重要

Azure Machine Learning では、次のソフトウェアを提供する Docker イメージのみがサポートされています。

  • Ubuntu 18.04 以降
  • Conda 4.7.# 以上
  • Python 3.7 以上
  • トレーニングに使用されるコンテナー イメージには、/bin/sh で使用可能な POSIX 準拠シェルが必要です

Azure Machine Learning 環境の作成と管理の詳細について詳しくは、ソフトウェア環境を作成して使用する方法に関するページを参照してください。

コンピューティングターゲットを作成またはアタッチする

モデルをトレーニングするにはコンピューティング先を作成する必要があります。 このチュートリアルでは、トレーニング コンピューティング リソースとして AmlCompute を作成します。

AmlCompute の作成には数分かかります。 AmlCompute リソースがワークスペースに既にある場合、このコードの作成プロセスはスキップされます。

他の Azure サービスと同様に、Azure Machine Learning サービスに関連付けられている特定のリソース (たとえば AmlCompute) にも制限があります。 詳細については、既定の制限と高いクォータを要求する方法に関するページを参照してください。

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())

重要

コンピューティング上の任意のイメージ ビルドに CPU SKU を使用します。

訓練タスクを設定する

このチュートリアルでは、GitHub 上のトレーニング スクリプト train.py を使用します。 実際には、任意のカスタム トレーニング スクリプトを使用し、そのまま Azure Machine Learning で実行できます。

ScriptRunConfig リソースを作成し、目的のコンピューティング先で実行されるようにジョブを構成します。

from azureml.core import ScriptRunConfig

src = ScriptRunConfig(source_directory='fastai-example',
                      script='train.py',
                      compute_target=compute_target,
                      environment=fastai_env)

トレーニング ジョブを送信する

ScriptRunConfig オブジェクトを使用してトレーニングの実行を送信すると、submit メソッドによって ScriptRun 型のオブジェクトが返されます。 返された ScriptRun オブジェクトを使用すると、トレーニング実行に関する情報へのプログラムによるアクセスが可能になります。

from azureml.core import Experiment

run = Experiment(ws,'Tutorial-fastai').submit(src)
run.wait_for_completion(show_output=True)

警告

Azure Machine Learning では、ソース ディレクトリ全体をコピーすることで、トレーニング スクリプトが実行されます。 アップロードしたくない機密データがある場合は、.ignore ファイルを使用するか、ソース ディレクトリに含めないようにします。 代わりに、データストアを使用してデータにアクセスしてください。