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

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 つ以上が組み込まれます。

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

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

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

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

各バージョンの詳細については、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 アップデートを使用できるという利点があります。

次のステップ

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

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

TensorFlow 用 AI Platform