ランタイム バージョンの管理

AI Platform Training では、イメージを使用して、クラウド内でトレーニング リクエストと予測リクエストを処理する VM を構成します。これらのイメージには、基本オペレーティング システム、コア テクノロジー パッケージ、pip パッケージ(Python ライブラリ)、オペレーティング システム パッケージが含まれます。イメージは、新しい改善点と機能を含めるために定期的にアップグレードされます。AI Platform Training ではバージョニングが採用されているため、モデルに対して最適な構成を選択できます。

バージョニングに関する重要な注意事項

  • 新しいランタイム バージョンに切り替える場合は、メジャー更新かマイナー更新かにかかわらず、必ずトレーニング ジョブとモデルを入念にテストする必要があります。
  • AI Platform Training は、各ランタイム バージョンをリリース後 12 か月間サポートします。12 か月が過ぎると、そのランタイム バージョンを使用してトレーニング ジョブ、バッチ予測ジョブ、モデルを作成できなくなります。

    ランタイム バージョンのリリースから 24 か月後に、AI Platform Prediction はランタイム バージョンを使用するすべてのモデル バージョンを削除します。

    詳しくは、ランタイム バージョンの可用性のタイムラインをご覧ください。

バージョン番号について

AI Platform Training が使用するイメージは、AI Platform Training ランタイム バージョンに対応しています。ランタイム バージョンは、次の形式を使用します。

major_version.minor_version

メジャー バージョンとマイナー バージョン

新しいメジャー バージョンとマイナー バージョンが定期的に作成され、以下の 1 つ以上が組み込まれます。

  • 以下のリリース:
    • オペレーティング システム
    • サポートされている機械学習フレームワーク
  • AI Platform Training の機能に対する変更や更新。

新しいメジャー バージョンには、以前のバージョンに対して書かれたコードの更新を必要とする非互換の変更が含まれる場合があります。新しいマイナー バージョンには非互換の変更は含まれず、同じメジャー バージョンのすべてのバリエーションとの下位互換性があります。

ランタイム バージョンの選択

必ず、使用している機械学習フレームワークや他のパッケージの最新バージョンをサポートしているランタイム バージョンを選択してください。

scikit-learn と XGBoost をサポートする最も古い AI Platform Training ランタイム バージョンは 1.13 です。

各バージョンの詳細については、AI Platform Training のバージョン リストをご覧ください。

ランタイム バージョンの設定

トレーニング ジョブ リクエストを送信するときには、必ずランタイム バージョンを設定します。

gcloud

gcloud ai-platform jobs submit training コマンドを実行するときは、--runtime-version フラグを使用します。

gcloud ai-platform jobs submit training my_job \
    --module-name trainer.task \
    --job-dir gs://my/training/job/directory \
    --package-path /path/to/my/project/trainer \
    --region us-central1 \
    --runtime-version 2.1 \
    --python-version 3.7

Python

トレーニング ジョブのリクエストを定義するときは、runtimeVersion を設定します。

training_inputs = {'scaleTier': 'BASIC',
    'packageUris': ['gs://my/trainer/path/package-0.0.0.tar.gz'],
    'pythonModule': 'trainer.task'
    'args': ['--arg1', 'value1', '--arg2', 'value2'],
    'region': 'us-central1',
    'jobDir': 'gs://my/training/job/directory',
    'runtimeVersion': '2.1',
    'pythonVersion': '3.7'}

job_spec = {'jobId': my_job_name, 'trainingInput': training_inputs}

TrainingInput API でトレーニング ジョブを送信する方法の詳細をご覧ください。

Python バージョンの設定

Python 3.7 は、ランタイム バージョン 1.15 以降で使用できます。

古い Python バージョンは、特定のランタイム バージョンで使用できます。

  • Python 3.5 は、AI Platform Training ランタイム バージョン 1.13~1.14 で使用できます。

  • Python 2.7 は、ランタイム バージョン 1.15 以前で使用できます。

次の例では、トレーニングに Python 3.7 を指定する方法を示します。Python 3.5 や Python 2.7 も同様の方法で指定できます。

gcloud

Python 3.7 をトレーニングに使用する場合は、--python-version 3.7 ランタイム バージョン 1.15 以降を使用します。

gcloud ai-platform jobs submit training my_job \
    --module-name trainer.task \
    --job-dir gs://my/training/job/directory \
    --package-path /path/to/my/project/trainer \
    --python-version 3.7 \
    --region us-central1 \
    --runtime-version 2.1

Python

Python 3.7 をトレーニングに使用する場合は、runtimeVersion をバージョン '1.15' 以降に設定し、pythonVersion'3.7' に設定します。

training_inputs = {'scaleTier': 'BASIC',
    'packageUris': ['gs://my/trainer/path/package-0.0.0.tar.gz'],
    'pythonModule': 'trainer.task'
    'args': ['--arg1', 'value1', '--arg2', 'value2'],
    'region': 'us-central1',
    'jobDir': 'gs://my/training/job/directory',
    'runtimeVersion': '2.1',
    'pythonVersion': '3.7'}

job_spec = {'jobId': my_job_name, 'trainingInput': training_inputs}

TrainingInput API でトレーニング ジョブを送信する方法の詳細をご覧ください。

カスタム パッケージを使用する

トレーニング インスタンス上のパッケージを変更するには、3 つの方法があります。

  • 依存関係をイメージにプリインストールするカスタム コンテナを構築する
  • トレーニング パッケージの依存関係として PyPI パッケージを指定する
  • パッケージ ファイル(tarball)を手動でアップロードし、そのファイルパスをトレーニングの入力に含める

カスタム コンテナを作成する

ランタイム バージョンを使用する代わりに、Docker コンテナを構築して、そこに依存関係を含めることもできます。詳細については、カスタム コンテナを使用する方法をご覧ください。

# Specifies base image and tag
FROM image:tag
WORKDIR /root

# Installs additional packages
RUN pip install pkg1 pkg2 pkg3

# Downloads training data
RUN curl https://example-url/path-to-data/data-filename --output /root/data-filename

# Copies the trainer code to the docker image.
COPY your-path-to/model.py /root/model.py
COPY your-path-to/task.py /root/task.py

# Sets up the entry point to invoke the trainer.
ENTRYPOINT ["python", "task.py"]

PyPI パッケージの依存関係を含める

通常のセットアップ ツールのプロセスを使用して、PyPI パッケージとそのバージョンをトレーナーの依存関係として指定できます。

  1. トレーナー アプリケーションの最上位ディレクトリに setup.py ファイルを含めます。
  2. setuptools.setup を setup.py で呼び出すときに、依存関係のリストと、オプションでそれらのバージョンを install_requires パラメータとして渡します。次の setup.py ファイルのサンプルにこの手順を示します。

    from setuptools import find_packages
    from setuptools import setup
    
    REQUIRED_PACKAGES = ['some_PyPI_package>=1.5',
                         'another_package==2.6']
    
    setup(
        name='trainer',
        version='0.1',
        install_requires=REQUIRED_PACKAGES,
        packages=find_packages(),
        include_package_data=True,
        description='Generic example trainer package with dependencies.')
    

AI Platform Training はパッケージの再インストールを強制するため、ランタイム バージョンのイメージの一部であるパッケージを新しいバージョンまたは古いバージョンでオーバーライドできます。

独自のパッケージ ファイルをアップロードする

トレーニング ジョブ リクエストの一部として、追加のパッケージ ファイルを含めることができます。Cloud Storage にパッケージをアップロードし、各トレーニング インスタンスにインストールするパッケージのリストを指定します。AI Platform Training は、すべてのパッケージを pip でインストールします。他のパッケージ マネージャー用に設計されたパッケージはサポートされません。

gcloud

gcloud ai-platform jobs submit training コマンドを実行するときは、--packages フラグを使用します。値は、すべての追加パッケージへのパスのカンマ区切りリストに設定します。リストでは、エントリ間に空白を含めることはできません。

gcloud ai-platform jobs submit training my_job \
    --staging-bucket gs://my-bucket \
    --package-path /path/to/my/project/trainer \
    --module-name trainer.task \
    --runtime-version 2.1 \
    --python-version 3.7 \
    --packages dep1.tar.gz,dep2.whl

Python

TrainingInput オブジェクトの packageUris の値として使用するリストに、すべての追加パッケージを追加します。

training_inputs = {'scaleTier': 'BASIC',
    'packageUris': ['gs://my/trainer/path/package-0.0.0.tar.gz',
                    'gs://my/dependencies/path/dep1.tar.gz',
                    'gs://my/dependencies/path/dep2.whl'],
    'pythonModule': 'trainer.task'
    'args': ['--arg1', 'value1', '--arg2', 'value2'],
    'region': 'us-central1',
    'jobDir': 'gs://my/training/job/directory',
    'runtimeVersion': '2.1',
    'pythonVersion': '3.7'}

    job_spec = {'jobId': my_job_name, 'trainingInput': training_inputs}

トレーニング用の TensorFlow のカスタム バージョンの指定

サポートされる最新のランタイム バージョンよりも新しいバージョンの TensorFlow を AI Platform Training で使用することは、トレーニング用としては可能ですが、予測には使用できません。

サポートされていない TensorFlow のバージョンを AI Platform Training ランタイムの完全版として使用する場合は、次のいずれかの方法で、トレーナーのカスタム依存関係としてそのバージョンを追加します。

  1. setup.py ファイルに TensorFlow バージョンを PyPI の依存関係として指定します。次のように必要なパッケージのリストに含めます

     REQUIRED_PACKAGES = ['tensorflow>=2.1']
    
  2. ソースから TensorFlow バイナリを作成し、CPU サポート付きの TensorFlow の指示のみに沿って操作します。このプロセスでは、パッケージのリストに追加することでトレーニング ジョブ リクエストに含めることができる pip パッケージ(.whl ファイル)が生成されます。

カスタム パッケージとして含める TensorFlow バイナリを作成する方がより複雑なアプローチになりますが、モデルをトレーニングするときに最新の TensorFlow アップデートを使用できるという利点があります。

次のステップ