借助在 AI Platform 上使用容器这项功能,您可以在 Docker 映像中运行应用。您可以构建自己的自定义容器,使用机器学习框架和版本以及原本不受 AI Platform Training 支持的非机器学习依赖项、库和二进制文件,在 AI Platform Training 上运行作业。
使用容器进行训练的工作原理
在所选机器学习框架中实现的训练应用是训练过程的核心。
- 使用您选择的机器学习框架创建一个模型训练应用。
- 决定是否使用自定义容器。可能存在已支持您的依赖项的运行时版本。否则,您需要为训练作业构建自定义容器。在自定义容器中,您可以将训练应用及其所有依赖项预安装到将用于运行训练作业的映像上。
- 将训练和验证数据存储在 AI Platform Training 可以访问的数据源中。这通常意味着将数据存放到 Cloud Storage、Bigtable 或者与用于 AI Platform Training 的同一 Google Cloud 项目关联的其他 Google Cloud 存储服务中。
- 当应用准备好运行时,您必须构建 Docker 映像并将它推送到 Container Registry,确保 AI Platform Training 服务可以访问您的注册表。
- 使用
gcloud ai-platform jobs submit training
命令并在config.yaml
文件或相应gcloud
标志中指定参数,从而提交您的作业。 - AI Platform Training 训练服务会为作业设置资源。该服务会根据您的作业配置分配一个或多个虚拟机(称为训练实例)。提交训练作业时,使用您指定为
TrainingInput
对象一部分的自定义容器来设置训练实例。 - 训练服务运行您的 Docker 映像,并传递您在创建训练作业时指定的任何命令行参数。
- 您可以通过以下方式来获取有关正在运行的作业的信息:
- 在 Cloud Logging 上。您可以在 Google Cloud 控制台的 AI Platform Training 作业详情页面中,找到指向作业日志的链接。
- 通过
gcloud
命令行工具(具体来说,使用gcloud ai-platform jobs stream-logs
)来请求作业详情或运行日志流式传输。 - 使用
projects.jobs.get
方法以编程方式向训练服务发出状态请求。详细了解如何监控训练作业。
- 当训练作业成功完成或遇到不可恢复的错误时,AI Platform Training 会停止所有作业进程并清理资源。
自定义容器的优势
自定义容器可让您指定和预安装应用所需的所有依赖项。
- 启动时间更短。如果您使用预安装了依赖项的自定义容器,就可以在启动训练应用时节省安装依赖项所需的时间。
- 使用您选择的机器学习框架。如果您找不到支持要使用的机器学习架构的 AI Platform Training 运行时版本,那么您可以构建一个自定义容器来安装您选择的框架并用于在 AI Platform Training 上运行作业。例如,您可以使用 PyTorch 进行训练。
- 对分布式训练提供扩展支持。借助自定义容器,您可以使用任何机器学习框架进行分布式训练。
- 使用最新版本。您还可以使用机器学习框架的最新版本或次要版本。例如,您可以构建一个自定义容器以使用
tf-nightly
执行训练。
使用自定义容器进行超参数调节
如需在 AI Platform Training 上执行超参数调节,请指定目标指标,以及是要最大限度地降低还是提高此指标。例如,您可能希望最大限度地提高模型准确率,或最大限度地降低模型损失。您还列出了要调整的超参数,以及每个超参数的目标值。AI Platform Training 会对训练应用进行多次试验,并在每次试验后跟踪和调整超参数。超参数调节作业完成后,AI Platform Training 会报告最有效的超参数配置值,以及每次试验的摘要信息。
要使用自定义容器进行超参数调节,您需要进行以下调整:
- 在 Dockerfile 中:安装
cloudml-hypertune
。 - 在训练代码中:
- 使用
cloudml-hypertune
,以通过调用其辅助函数report_hyperparameter_tuning_metric
来报告每次试验的结果。 - 为每个超参数添加命令行参数,并使用参数解析器(如
argparse
)处理参数解析。
- 使用
- 在作业请求中:向
TrainingInput
对象添加HyperparameterSpec
。
请参阅通过超参数调节进行自定义容器训练的示例或详细了解超参数调节在 AI Platform Training 中的工作原理。
将 GPU 与自定义容器搭配使用
如要使用 GPU 进行训练,您的自定义容器需要满足一些特殊要求。您必须构建与用于 CPU 训练的映像不同的 Docker 映像。
- 在 Docker 映像中预安装 CUDA 工具包和 cuDNN。推荐使用
nvidia/cuda
映像作为基础映像来执行此操作,因为它预安装了相应的 CUDA 工具包和 cuDNN 版本,并且有助于您正确设置相关的环境变量。 - 在 Docker 映像中安装您的训练应用,以及所需的机器学习框架和其他依赖项。
后续步骤
- 了解如何使用自定义容器进行训练作业。
- 了解如何使用自定义容器进行分布式训练。