Skip to content

手动重跑训练任务

本文介绍任务列表和任务详情页中的 重跑 按钮。这里的重跑由用户手动触发,不是训练任务容错中的自动重启。

手动重跑用于再次运行已有训练任务。它适合复现实验、修正 启动命令、调整 Worker 规格Worker 数量、替换镜像后重新训练。重跑不会自动恢复训练进度;是否续训取决于训练代码能否读取已有 checkpoint。

  • 手动重跑:由用户点击 重跑 触发,适合复现实验、修正配置后再次运行,或用同一配置再跑一次。直接重跑不修改配置;改配重跑可修改部分字段。
  • 自动重启:由平台根据容错配置触发,适合任务失败、Hang 或环境异常后自动恢复。它不用于人工修改 启动命令、镜像或 Worker 配置。

如果任务失败后希望平台自动尝试恢复,请配置训练任务容错。如果需要人为调整 启动命令、镜像或 Worker 配置后再运行,请使用本页介绍的重跑。

选择启动、重跑、克隆还是重新创建

  • 已停止或失败的任务继续运行:选择 启动。配置不变,训练代码需要自己从 checkpoint 恢复。
  • 使用同一任务配置再跑一次:选择 直接重跑。任务 ID 不变,任务会重新进入部署和运行流程。
  • 修改 启动命令Worker 规格Worker 数量镜像 后再跑:选择 改配重跑。它适合修复小配置错误或调整资源。
  • 更换 资源池 后再跑:选择 克隆。克隆会复制原任务配置并创建新任务,提交前可改到目标资源池。
  • 克隆页仍无法调整的字段:从创建页重新创建任务。

直接重跑原配置

当训练代码、镜像和资源配置都不变,只需要再次执行同一任务时,在任务列表或任务详情页点击 重跑,选择 直接重跑。平台会清理当前运行状态,并按原配置重新部署 Worker、拉取镜像、挂载存储并执行 启动命令

直接重跑前,先确认输出目录不会覆盖旧结果。建议在 启动命令环境变量 中使用 RUN_ID、任务名称或时间戳区分每次运行。

改配重跑

当失败原因来自 启动命令环境变量、镜像或资源规格时,使用 改配重跑 修正配置后再次运行。常见可修改字段包括:

  • 启动命令
  • 环境变量
  • Worker 规格
  • Worker 数量
  • 镜像
  • RDMA 配置

常见不可修改字段包括:

  • 资源类型
  • 资源池
  • 任务名称
  • 任务描述

这些字段不能通过 改配重跑 修改。如果只是要更换 资源池,优先使用 克隆 创建新任务。克隆到另一个可用区的资源池前,先确认训练代码、数据、checkpoint 和输出父目录已经放到目标可用区可挂载的共享存储中,并确认镜像实际存在于目标可用区;相同镜像地址不会跨区自动同步。详见镜像仓库地址与可用区。克隆页仍无法调整的字段,再回到使用包年包月资源提交训练任务重新填写。

确认重跑后的状态

重跑后,任务会重新经历清理、排队、部署和运行阶段。先检查任务状态、日志与事件,确认 启动命令 已经重新执行,并在日志中看到本次运行的 run id、checkpoint 路径和输出路径。

手动重跑和 自动重启 都会再次执行 启动命令,但不会恢复 Python 进程内存中的训练状态。Spot 资源回收后的再次执行也是如此。训练代码需要自己加载 checkpoint。详见编写可恢复的训练代码验证 checkpoint 保存与恢复

避免重跑覆盖结果

重跑前检查训练脚本中的输出路径。先识别固定输出目录,例如:

language-shell
OUTPUT_DIR=/mnt/public/projects/llm-train/output

再把任务名称、实验编号或 RUN_ID 写入输出路径:

language-shell
RUN_ID=${RUN_ID:-$(date +%Y%m%d-%H%M%S)}
OUTPUT_DIR="/mnt/public/projects/llm-train/output/${RUN_ID}"

如果重跑是为了从 checkpoint 继续训练,应在日志中打印恢复到的 step、epoch 和 checkpoint 文件路径,便于确认训练已经恢复到预期位置。