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

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

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

  • AI Platform のトレーニングと予測 API で使用されるデフォルトの AI Platform ランタイム バージョンは 1.0 です。ランタイム バージョンを指定しないと、AI Platform はバージョン 1.0 を使用します。
  • 新しいランタイム バージョンに切り替える場合は、メジャー更新かマイナー更新かにかかわらず、必ずトレーニング ジョブとモデルを入念にテストする必要があります。

バージョン番号について

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

major_version.minor_version

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

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

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

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

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

必ず、使用している機械学習フレームワークや他のパッケージの最新バージョンをサポートしているランタイム バージョンを選択してください。以下のタスクでランタイム バージョンを指定していない場合、AI Platform はデフォルトのバージョン 1.0 を使用してリクエストを処理します。

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

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

トレーニング ジョブのランタイム バージョンを指定するには

トレーニング ジョブ リクエストを送信するときには、必ずランタイム バージョンを設定します。設定しないと、AI Platform はトレーニング ジョブにデフォルトのバージョン 1.0 を使用します。

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 1.14

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': '1.14',
    'pythonVersion': '3.5'}

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

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

トレーニング ジョブの Python バージョンを指定するには

Python 3.5 は、AI Platform のランタイム バージョン 1.4 以上で利用できます。Python 3.5 でトレーニング ジョブを送信するには、Python のバージョンを「3.5」に、ランタイムのバージョンを 1.4 以上に設定します。

Python のバージョンが指定されていない場合は、デフォルトの「2.7」が使用されます。

gcloud

--python-version フラグを使用して Python のバージョン 3.5 を指定し、ランタイムのバージョンを 1.4 以上に設定してください:

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.5
    --region us-central1 \
    --runtime-version 1.14

Python

runtimeVersion'1.4' 以上に設定し、pythonVersion'3.5' に設定します。

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': '1.14',
    'pythonVersion': '3.5'}

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

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

モデル バージョンのランタイム バージョンを指定するには

トレーニングされたモデルからデプロイされたモデルのバージョンを作成するときは、必ずランタイムのバージョンを指定してください。これにより、オンラインおよびバッチ予測のリクエストの、デフォルトのランタイムのバージョンが設定されます。ランタイム バージョンを指定しないと、AI Platform はバージョン 1.0 を使用します。

gcloud

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

gcloud ai-platform versions create version_name \
    --model model_name
    --origin gs://my/trained/model/path
    --runtime-version 1.14

Python

Version リソースを定義するときに、runtimeVersion を設定します。

versionDef = {'name' = 'v1',
    'description' = 'The first iteration of the completely_made_up model',
    'deploymentUri' = 'gs://my/model/output/directory',
    'runtimeVersion' = '1.14'}
 

バッチ予測に使用するランタイム バージョンを指定するには

使用するランタイム バージョンは、バッチ予測ジョブの作成時に指定できます。指定しない場合、AI Platform ではモデル バージョンに設定されているデフォルトのランタイム バージョンが使用されます。

gcloud

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

gcloud ai-platform jobs submit prediction my_batch_job_333 \
    --model my_model \
    --input-paths gs://my/cloud/storage/data/path/* \
    --output-path gs://my/cloud/storage/data/output/path
    --region us-central1 \
    --data-format text \
    --runtime-version 1.14

Python

PredictionInputruntimeVersion を設定します。

body = {
    'jobId': 'my_batch_job_333',
    'predictionInput': {
        'dataFormat': 'JSON',
        'inputPaths': ['gs://my/cloud/storage/data/path/*'],
        'outputPath': 'gs://my/cloud/storage/data/output/path',
        'region': 'us-central1',
        'modelName': 'projects/my_project/models/my_model',
        'runtimeVersion': '1.14'}}

オンライン予測のランタイム バージョン

モデル バージョンを作成するときは、必ず、オンライン予測リクエストに使用するランタイム バージョンを指定してください。モデル バージョンのデフォルトのランタイム バージョンが正しくない場合は、正しいランタイム バージョンを使用して新しいモデル バージョンを作成してください。

オンライン予測リクエストでは、常にモデル バージョンのデフォルトのランタイム バージョンが使用されます。オンライン予測リクエストでランタイム バージョンを指定してこれをオーバーライドすることはできません。

バリエーション パッケージの指定(トレーニングのみ)

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

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

パッケージ ファイルを提供するには

トレーニング ジョブ リクエストの一部として、追加のパッケージ ファイルを含めることができます。これは、各トレーニング インスタンスにインストールされます。AI Platform は、すべてのパッケージを 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 \
    --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': '1.14'}

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

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 はパッケージの再インストールを強制するため、ランタイム バージョンのイメージの一部であるパッケージを新しいバージョンまたは古いバージョンでオーバーライドできます。

カスタム コンテナを構築するには

ランタイム バージョンを使用する代わりに、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"]

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

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

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

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

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

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

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Google Cloud 機械学習ドキュメント