利用阿里云提供的弹性计算资源和存储服务,执行您的模型训练代码,快速开始进行单机版训练迭代。训练过程中,您可以随时查看日志和监控训练状态。
准备工作
在运行模型训练任务之前,请确认以下工作已经完成:
约定
为了方便您的训练代码读取训练数据,输出训练日志,保存训练迭代状态数据(checkpoint),请注意以下约定。
- 训练数据将会自动存放在 /input 目录,且保持与 OSS 中路径一致。用户代码需要从该目录中读取训练数据。
- 代码输出的所有数据都应保存到 /output 目录,包括日志,checkpoint 文件等。所有保存在 /output 目录中的文件将以同样的目录结构被自动同步到用户的 OSS Bucket。
- 如果训练代码中需要使用特别的 Python 依赖库,请将所有依赖写入名为 requirements.txt 的配置文件,并保存在 GitHub 仓库中代码根目录下。
操作流程
- 登录 容器服务管理控制台。
- 在 Swarm 菜单下,单击左侧导航栏中的 。
- 在 模型训练 框中单击 创建。
- 设置单机训练任务的基本信息。
进入模型训练页面,填写以下信息用于配置训练任务。
- 集群:选择将要运行单机模型训练任务的容器集群。
- 应用名:为运行单机模型训练任务所创建的应用名称,例如 tf-train-standalone。名称可以包含 1~64 个字符,包括数字、英文字母和连字符(-)。
- 训练框架:选择用来进行模型训练的框架。目前支持的框架包括 TensorFlow、 Keras、Python 以及自定义镜像,选择自定义镜像要求您输入合法的镜像地址。
- 分布式训练:选择是否执行分布式训练任务。这里不要勾选,则执行单机训练。
- 单Worker使用GPU数量:指定所使用的 GPU 数量,如果为 0 表示不使用 GPU,那么将使用 CPU 训练。
- 数据卷名: 指定为用于存储训练数据的数据来源,可以选择对象存储服务在该集群中创建的数据卷的名称;也可以选择本地目录,但要求填写绝对路径;或者选择 不使用数据卷。本示例中使用名为 tfoss 的数据卷。
- Git地址:指定训练代码所处的 GitHub 代码仓库地址。
说明 目前仅支持 HTTP 和 HTTPS 协议,不支持 SSH 协议。
- 私有代码仓库:如果您使用私有代码仓库,请勾选此选项并设置 Git用户名 (您的 GitHub 账号)和 Git密码。
- 执行命令:指定如何执行上述代码的命令,以进行模型训练。
说明 如果你选择的是支持 Python3 的框架,请在命令行中直接调用
python3
,而不是python
。 - 训练监控:是否使用 TensorBoard 监控训练状态;一旦选择监控,请指定合法的训练日志路径,并确保与训练代码中日志输出的路径一致。例如,指定 训练日志路径 为 /output/training_logs,则用户代码也应该将日志输出到同样的路径下。图中示例是通过指定用户代码命令行参数 --log_dir 保证这一点的。
说明 这里的训练日志指的是使用 TensorFlow API 输出的供 Tensorboard 读取的事件文件,以及保存了模型状态的 checkpoint 文件。
- 设置完毕后,单击 确定,创建执行模型训练任务的应用。
- 单击左侧导航栏中的 应用,单击上面创建的应用 tf-train-standalone。
- 单击 路由列表,可以看到一个以 tensorboard 开头的链接,用来打开 TensorBoard 监控页面。
单击这个链接,可以查看训练监控数据。
- 单击 日志,查看执行训练任务过程中,用户代码输出到标准输出/标准错误的日志内容。
说明 为了运行训练任务应用,一般会自动创建多个服务容器,分别运行不同的程序分支。比如 worker 容器一般用来运行用户的模型代码,tensorboard 容器用来运行 TensorBoard 训练监控。具体生成的服务/容器,可以单击 服务列表,或 容器列表 查看。
可以按服务容器名称筛选某个容器,查看该容器运行程序输出到 stdout/stderr 的详细日志,比如
tf-train-standalone_worker_1
。也可以按时间和显示数量,过滤要查看的日志内容。同样,也可以选择下载日志文件到本地。说明 这里提到的标准输出/标准错误日志,请区别于上述 Tensorboard 事件文件和 checkpoint 文件。
- 单击 服务列表,如果看到 worker 服务的状态为“已停止”,说明此次训练任务已经执行结束。
- 通过 OSS 客户端可以看到训练结果自动保存在 OSS Bucket 中了。
训练结束后,系统自动将所有保存在本地 /output 路径中的文件,复制到用户给定数据卷所对应的对象存储服务(OSS)Bucket 中。通过 OSS 客户端,可以看到本示例中用户代码写入 /output 的事件文件和 checkpoint 文件都已经备份到 OSS Bucket 中了。
- 管理训练任务。
如果需要停止、重启、删除(比如为了释放计算资源给新的训练任务)某个训练任务,只需回到 应用 > 应用列表页面。找到对应的应用,在右侧进行操作即可。
说明 利用本节描述的模型训练服务,您不仅可以从零开始训练一个模型,同样也可以在一个已有模型的基础(checkpoint)之上,使用新的数据继续训练(比如 fine tuning)。利用已创建的应用,可以不断通过更新配置的方式调整超参数,进行迭代训练。