Cloud ML のバージョニング

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

バージョン番号について

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

major_version.minor_version

メジャー バージョン

新しいメジャー バージョンは、次の 1 つ以上を組み込むために定期的に作成されます。

  • 次のもののメジャー リリース:
    • OS
    • TensorFlow
  • Cloud ML 機能に対するメジャー変更や更新。

新しいメジャー バージョンには、以前のバージョンに対して書かれたコードの更新を必要とする非互換の変更が含まれる場合があります。

マイナー バージョン

新しいマイナー バージョンは、次の 1 つ以上を組み込むために定期的に作成されます。

  • 次のもののマイナー リリースと更新:
    • OS
    • TensorFlow
  • Cloud ML 機能に対するマイナー変更や更新

新しいマイナー バージョンには非互換の変更は含まれず、同じメジャー バージョンのすべてのバリエーションとの下位互換性があります。

サポート対象のバージョン

各バージョンの詳細は、Cloud ML バージョン リストに記載されています。

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

選択するバージョンは、トレーニング アプリケーションの開発に使用する主要パッケージのバージョンに従います。実際には、TensorFlow バージョンが通常最も重要な要因です。すべてのパッケージのサポートされる最新バージョンでトレーナーを開発することをおすすめします。

ランタイム バージョンの指定はオプションです。指定しない場合、Cloud ML ではそのデフォルト バージョンが使用されます。

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

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

コマンドライン

gcloud ml-engine jobs submit training コマンドを実行するときに --runtime-version フラグを使用します。

gcloud ml-engine 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 0.12

python

TrainingInput オブジェクトのオプションのメンバーである 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': '0.12'}

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

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

トレーニング モデルからデプロイされるモデル バージョンの作成時に、ランタイム バージョンを指定できます。その場合、オンラインまたはバッチ予測をリクエストするときに、そのバージョンがデフォルトで使用されます。そうでない場合、モデル バージョンのデフォルトのランタイム バージョンは、Cloud ML の現在のデフォルト ランタイム バージョンに設定されます。

コマンドライン

gcloud ml-engine versions create コマンドを実行するときに --runtime-version フラグを使用します。

gcloud ml-engine models versions create version_name \
    --model model_name
    --origin gs://my/trained/model/path
    --runtime-version 0.12

Python

バージョン リソースのオプションのメンバーである runtimeVersion を目的のランタイム バージョンに設定します。

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

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

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

コマンドライン

gcloud ml-engine jobs submit prediction コマンドを実行するときに --runtime-version フラグを使用します。

gcloud ml-engine 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 0.12

Python

PredictionInput オブジェクトのオプションのメンバーである runtimeVersion を目的のランタイム バージョンに設定します。

body = {
    'jobId': 'my_batch_job_333',
    'predictionInput': {
        'dataFormat': TEXT,
        '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': '0.12'}}

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

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

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

トレーニング インスタンスでパッケージを変更する方法には、パッケージ ファイル(tarballs)を手動でアップロードしてそれらのパスをトレーニングの入力として含める方法と、PyPI パッケージをトレーナー パッケージの従属物として指定する方法の 2 つがあります。

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

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

コマンドライン

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

gcloud ml 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': '0.12'}

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, include_package_data=True, description='Generic example trainer package with dependencies.')

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

ランタイム バージョンと Cloud ML サポート

メジャーとマイナーのランタイム バージョンは、リリース後の特定の期間サポートされます。この期間中は、そのランタイム バージョンを使用してモデルのトレーニングや予測の取得を行うことができます。ランタイム バージョンは、その期間より後はサポートされません。

ランタイムが優先されていた後の月数 モデルをトレーニングし、予測を処理できるか
0~12
12+ ×

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

  • 新しいランタイム バージョンに切り替える場合は、メジャー更新かマイナー更新かにかかわらず、必ずトレーニング ジョブとモデルを入念にテストする必要があります。

次のステップ

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

Cloud Machine Learning Engine(Cloud ML Engine)