管理執行階段版本

AI Platform 會使用映像檔來設定 VM,在雲端為訓練和預測要求提供服務。這些映像檔包含基本作業系統、核心技術套件、pip 套件 (Python 程式庫) 和作業系統套件。我們會定期升級映像檔,以加入新的改善項目和功能。AI Platform 版本管理功能可讓您為模型選取最合適的設定。

版本管理的重要注意事項

  • AI Platform Training and Prediction API 使用的預設 AI Platform 執行階段版本為 1.0 版。如果您沒有指定執行階段版本,AI Platform 就會使用 1.0 版。
  • 改用新的執行階段版本 (無論該版本是主要或次要更新) 時,請一律對訓練工作和模型進行全面的測試。

瞭解版本號碼

AI Platform 使用的映像檔與 AI Platform 執行階段版本相對應。執行階段版本會使用下列格式:

major_version.minor_version

主要與次要版本

系統會定期建立新的主要版本和次要版本,以包含下列一或多項內容:

  • 下列項目的發布版本:
    • 作業系統
    • 支援的機器學習架構
  • 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.13

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

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

請參閱 TrainingInput API 的說明,以進一步瞭解如何提交訓練工作。

為訓練工作指定 Python 版本

當您使用 AI Platform 執行階段 1.4 以上版本時,才能使用 Python 3.5。如要使用 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.13

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.13',
    '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.13

Python

請在定義版本資源時設定 runtimeVersion

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

指定用於批次預測的執行階段版本

建立批次預測工作時,您可以指定要使用的執行階段版本。如未指定,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.13

Python

PredictionInput 中設定 runtimeVersion

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.13'}}

用於線上預測的執行階段版本

建立模型版本時,請務必指定要用於線上預測要求的執行階段版本。如果模型版本的預設執行階段版本有誤,請使用正確的執行階段版本來建立新的模型版本。

線上預測要求一律會使用模型版本的預設執行階段版本,您無法在線上預測要求中指定執行階段版本來覆寫這項設定。

指定衍生版本套件 (僅限訓練作業)

您可以通過三種方式更改您訓練執行個體上的套件:

  • 手動上傳套件檔案 (tarball) 並將路徑納入訓練輸入內容。
  • 指定 PyPI 套件做為訓練程式套件的依附元件。
  • (Beta 版) 建立一個自訂容器,用於在影像檔上預先安裝您的依附元件。

如何提供套件檔案

您可以將額外的套件檔案納入訓練工作要求的一部分,系統會為每個訓練執行個體安裝這些套件。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.13'}

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

如何加入 PyPI 套件依附元件

您可以透過一般設定工具程序,來指定 PyPI 套件及其版本做為訓練程式套件的依附元件:

  1. 在訓練程式應用程式的頂層目錄中加入 setup.py 檔案。
  2. 在 setup.py 中呼叫 setuptools.setup 時,傳送依附元件 (也可以加上其版本) 的清單做為 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 會強制重新安裝套件,因此您可以使用較新或較舊的版本來覆寫執行階段版本映像檔中包含的套件。

建構自訂容器 (Beta 版)

您可以建立一個 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 自訂版本

您可以使用比 AI Platform 支援的最新執行階段版本更新的 TensorFlow 版本來執行訓練作業,但無法用於預測作業。

如要使用完整 AI Platform 執行階段版本尚未支援的 TensorFlow 版本,請使用下列任一方法將其加入訓練程式的自訂依附元件:

  1. setup.py 檔案中將 TensorFlow 版本指定為 PyPI 依附元件, 並將其加入必要套件清單中,如下所示:

     REQUIRED_PACKAGES = ['tensorflow>=1.13']
    
  2. 透過原始碼建構 TensorFlow 二進位檔;請務必按照相關指示操作,建構僅支援 CPU 的 TensorFlow 二進位檔。建構程序完成後,就會產生 pip 套件 (.whl 檔案)。您可以將其新增至套件清單中,藉此加入訓練工作要求

建構 TensorFlow 二進位檔並新增為自訂套件這種方式較為複雜,但優點是您可以在訓練模型的過程中使用最新版的 TensorFlow 更新。

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
TensorFlow 適用的 AI Platform