管理运行时版本

AI Platform Training 会使用映像来配置虚拟机,以便在云端处理您的训练和预测请求。这些映像包含基本操作系统、核心技术软件包、pip 软件包(Python 库)和操作系统软件包。映像会定期升级,以引入新的改进和功能。AI Platform Training 版本控制功能可让您选择正确的配置来使用模型。

有关版本控制的重要说明

  • 切换到新的运行时版本时,无论是进行重大更新还是次要更新,您都应该全面测试自己的训练作业和模型。
  • AI Platform Training 会在每个运行时版本发布后提供 12 个月的支持。12 个月的期限过后,您将无法再创建使用此运行时版本的训练作业、批量预测作业或模型版本。

    AI Platform Prediction 会在运行时版本发布二十四个月后,删除所有使用该运行时版本的模型版本。

    详细了解运行时版本的适用时间

了解版本号

AI Platform Training 使用的映像与 AI Platform Training 运行时版本相对应。运行时版本使用以下格式:

major_version.minor_version

主要版本和次要版本

我们会定期创建新的主要版本和次要版本,以包含以下一项或多项内容:

  • 以下各项的版本:
    • 操作系统
    • 受支持的机器学习框架
  • 对 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.4 \
    --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.4',
    'pythonVersion': '3.7'}

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

如需详细了解如何提交训练作业,请参阅 TrainingInput API

设置 Python 版本

如果运行时版本为 1.15 及更高版本,则可以使用 Python 3.7。

某些运行时版本支持较旧的 Python 版本:

  • 如果您使用的 AI Platform Training 运行时版本为 1.13 至 1.14,则可以使用 Python 3.5。

  • 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.4

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.4',
    'pythonVersion': '3.7'}

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

如需详细了解如何提交训练作业,请参阅 TrainingInput API

使用自定义软件包

您可以通过以下三种方式更改训练实例中的软件包:

  • 构建用于在映像上预安装依赖项的自定义容器
  • PyPI 包指定为训练程序包的依赖项
  • 手动上传包文件(tar 压缩包)并添加其路径作为训练输入

构建自定义容器

您可以构建 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. 在 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 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.4 \
    --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.4',
    'pythonVersion': '3.7'}

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

指定用于训练的 TensorFlow 自定义版本

您可以使用比 AI Platform Training 支持的最新运行时版本更新的 TensorFlow 版本来执行训练作业,但不能使用此类版本来执行预测作业。

如需使用某一尚不被支持用作完整 AI Platform 运行时版本的 TensorFlow 版本,请使用以下任一方法将其添加为训练程序的自定义依赖项:

  1. setup.py 文件中将 TensorFlow 版本指定为 PyPI 依赖项。将其添加到所需软件包的列表中,如下所示:

     REQUIRED_PACKAGES = ['tensorflow>=2.4']
    
  2. 从源代码构建 TensorFlow 二进制文件,确保遵循 TensorFlow 的说明,并且仅针对 CPU。此过程会生成一个 pip 包(.whl 文件),您可以将其包含在您的训练作业请求之中,只需添加到您的包列表中即可。

构建 TensorFlow 二进制文件并将其作为自定义软件包包含在内是一种较为复杂的方法,但其优点在于可以在训练模型时使用最新的 TensorFlow 更新。

后续步骤