Skip to content

使用包年包月资源提交训练任务

本页用于把已经准备好的训练代码提交到包年包月 GPU 资源上运行。它覆盖创建页中会影响启动、排队、训练进程和输出结果的关键配置。需要先判断任务类型或资源来源时,请回到选择任务类型与资源来源

提交前确认资源、代码、镜像和输出路径

进入创建页前,先确认训练任务能否拿到资源,并在第一个 batch 前顺利启动。

  • 当前账号可以看到目标包年包月资源池,且目标资源池位于代码、数据、输出目录和镜像可用的可用区。
  • 目标 Worker 规格可启动数量 能满足本次 Worker 数量;如果不满足,先查看资源占用和排队情况,再决定等待、降规格或减少 Worker 数量。
  • 训练代码已经能从固定路径读取数据。数据、模型和启动脚本建议放在共享高性能存储中,确保不同 Worker 都能读取同一份内容。
  • 训练结果、checkpoint 和 TensorBoard 日志会写入挂载的共享存储路径,例如 /mnt/public/project-a/checkpoints/。如果只写入 /tmp/root/workspace 等任务本地路径,任务结束后通常无法取回。
  • 容器镜像已经包含训练代码需要的 Python 包、系统库、CUDA/cuDNN/NCCL 运行环境和可执行入口。找不到镜像或依赖不确定时,先处理准备并验证容器镜像
  • 确认训练脚本报错时,创建页中的 启动命令 也会以失败状态结束。详见编写可靠启动命令
  • 分布式训练脚本已经知道如何使用 Worker 数量、每个 Worker 的 GPU 数量和平台注入的分布式环境变量。PyTorch DDP 任务可参考编写 torchrun 启动脚本
  • 长时间训练、Spot 训练或开启自动重启的任务,应能从 checkpoint 恢复。详见编写可恢复的训练代码

提示

如果这是第一次在平台上运行该训练代码,建议先用同一镜像、同一存储卷在开发机中跑到第一个 batch。这样可以提前暴露依赖缺失、环境变量缺失、数据路径错误和 data collator 等代码问题。详见在开发机中试跑训练脚本

选择训练任务和包年包月资源

在创建页中,任务类型选择 训练任务资源类型选择 包年包月资源。这表示任务将使用租户已经购买的固定周期 GPU 资源,并从资源池中选择可启动的 Worker 规格Worker 数量

如果要提交可接受中断的临时库存任务,请改用使用 Spot 资源提交训练任务

如果只是处理数据、生成样本索引或离线评估,请改用创建数据处理任务

如果需要一次提交多条配置相近的训练任务,例如参数扫描或批量评估,请查看批量创建和管理任务组

选择资源池、Worker 规格与 Worker 数量

计算资源决定任务能否立即启动、会排队多久,以及训练脚本看到多少个 Worker 和 GPU。先按代码需求选择资源,再根据页面上的可启动数量判断是否能提交。

选择资源池

选择包含目标 GPU 型号且可启动数量满足需求的资源池。资源池下拉列表会展示池中空闲卡数;页面上的 占用情况负载排队情况 可用于判断资源是否被其他任务占用、是否已有任务在等待资源。

如果目标规格的 可启动数量 不足,任务提交后会进入排队。如果训练代码必须在某个窗口内启动,应先查看资源占用和排队情况,再决定是否降低 Worker 数量 或换规格。详见选择资源规格与查看排队情况

选择 Worker 规格和数量

默认情况下,所有 Worker 使用同一种预定义规格,例如 1 卡、2 卡、4 卡或 8 卡。填写 Worker 数量 后,总 GPU 数量为:

language-text
总 GPU 数量 = 单个 Worker 的 GPU 数量 x Worker 数量

例如选择 8 卡规格并填写 4 个 Worker,训练脚本需要按 4 个 Worker、每个 Worker 8 张 GPU 来启动。PyTorch DDP 任务中,平台会把 Worker 数量 注入为 WORLD_SIZE,并为每个 Worker 注入不同的 RANK

可启动数量表示当前资源池还能放置多少个该规格容器。平台按 GPU 在各资源节点上的空闲分布计算这个数量,而不是只按剩余 GPU 总数计算。

判断是否使用自定义卡数

如果训练代码要求所有 Worker 拥有相同 GPU 数量,保持 自定义卡数 为关闭。多数 DDP、MPI 和 Ray 训练都更适合这种模式。

只有当训练代码能够处理 Worker 之间 GPU 数量不一致时,才开启自定义卡数。自定义卡数为 1-8 时,平台创建单个 Worker;大于 8 时,平台会创建多个完整 8 卡 Worker 和一个非 8 卡 Worker。此时需要特别确认训练脚本支持不同 Worker GPU 数量。

信息

自定义卡数模式下,页面展示的 可启动数量 指当前资源池可启动的最大 GPU 数量,不一定等于全部剩余卡数。它通常受完整 8 卡节点和非完整节点的剩余分布影响。

确认 RDMA 是否可用

只有当所选规格的 训练网配置 为 RoCE 或 IB,且每个 Worker 是 8 卡规格时,才能开启 RDMA。RDMA 通常用于多机大模型训练,可显著影响通信性能。

GPU 数量小于 8 卡时无法开启 RDMA。如果使用自定义镜像且 RDMA 检测异常,优先检查镜像是否安装 RDMA 依赖。详见RDMA 网络

选择镜像与分布式框架

运行环境决定 Worker 使用哪个镜像,以及平台向训练脚本注入哪些分布式运行信息。

选择镜像

选择已经验证过的预置镜像或自定义镜像。镜像需要包含训练脚本依赖的运行时、Python 包和系统库。

如果创建页的 镜像 列表中找不到目标镜像,先确认:

  • 镜像的 可用服务 包含任务。可用服务是在镜像中心手动配置的;如果没有包含任务,镜像可能只出现在开发机或推理服务创建页。需要调整时,编辑镜像的可用服务,详见限制可用服务范围
  • 镜像的 可用区 与本次训练任务选择的资源池所在可用区一致。可用区是在构建或导入镜像时手动选择的;如果镜像在其他可用区,当前资源池所在可用区的训练任务创建页不会显示它。需要跨可用区使用时,详见镜像仓库地址与可用区导入或跨可用区迁移镜像

直接改 启动命令 通常无法绕过镜像不可用的问题。

选择分布式框架

按照训练代码实际使用的框架选择。该字段会改变平台注入到 Worker 中的运行信息。

框架何时选择平台会提供什么
单机只在一个 Worker 内运行,或训练脚本自己不需要跨 Worker 通信不注入分布式启动变量
PyTorch DDP使用 torchruntorch.distributed 或 DDP 训练MASTER_ADDRMASTER_PORTWORLD_SIZERANK
MPI使用 OpenMPI 或 MPICH 启动分布式进程/etc/mpi/hostfile 以及对应 hostfile 环境变量
Ray使用 Ray Head / Worker 集群运行任务托管 Ray 集群和 Dashboard 访问配置

PyTorch DDP 常用变量含义如下:

  • MASTER_ADDR 对应 torchrun --master_addr
  • MASTER_PORT 对应 torchrun --master_port,默认 29500
  • WORLD_SIZE 对应 torchrun --nnodes,即 Worker 数量
  • RANK 对应 torchrun --node_rank,从 0 开始。

如果训练脚本需要使用 Ray 或 MPI 的更完整启动方式,请分别查看Ray 配置指南MPI 配置指南

配置任务可视化与任务容错

长时间训练通常需要能看到训练进展,也需要能在中断或异常后恢复。根据训练代码实际支持的能力开启以下配置。

配置任务可视化

如果训练脚本会写 TensorBoard 日志,可开启 任务可视化,并填写日志目录。该目录应位于后续挂载的共享存储中,例如 /mnt/public/projects/llm-train/runs/${RUN_ID}

日志路径可引用网页端 环境变量,便于每次运行写入不同目录。详见TensorBoard

配置任务容错

容错 包含 环境检测自动重启Hang 检测。开启前先确认训练代码能从 checkpoint 恢复;平台可以重启任务,但无法恢复训练进程内存中的状态。

  • 环境检测:在 Worker 就绪后、训练脚本开始前检查 GPU、RDMA、存储 I/O、allreduce 和 PyTorch/CUDA/NCCL 运行时。任务运行前检测会增加启动时间,但可以更早发现平台运行环境问题。
  • 自动重启:任务失败或挂起时自动重启。重启后,训练代码需要自己加载已有 checkpoint。
  • Hang 检测:用于识别训练长时间无进展的情况,并可配合进程栈采集定位问题。

信息

环境检测不会读取或解析训练数据,也不会判断训练代码、数据 schema 或 data collator 是否正确。如果这是第一次运行该训练代码,仍建议先在开发机中跑到第一个 batch。详见在开发机中试跑训练脚本

详见配置训练任务容错验证 checkpoint 保存与恢复

填写启动命令和环境变量

启动方式决定平台如何运行训练脚本,以及任务状态是否能真实反映训练结果。

填写启动命令

启动命令 建议只做三件事:切换到代码目录、设置本次任务必要的环境变量、执行训练脚本。保持 启动命令 短,是为了让失败路径清楚:训练脚本报错后,任务应该立刻失败。

language-shell
cd /mnt/public/projects/llm-train
bash scripts/train_ddp.sh

警告

避免训练失败但任务显示成功

在平台上,任务状态是自动判定的。平台读取的是创建页中 启动命令 结束时的结果;Python traceback、loss、日志内容和 checkpoint 只用于排查,不会自动改变任务状态。

常见风险是日志转存、训练后上传结果、失败后 sleep 保留现场。这些逻辑都可能改变平台看到的最终结果。例如 python train.py 已经报错,但外层 launch.sh 继续执行上传结果、echosleep 后正常结束;或者 python train.py | tee train.logtee 正常结束。此时任务可能显示成功。需要这些逻辑时,请使用编写可靠启动命令中的模板。

填写环境变量

环境变量 可用 API_KEY=xxx;DATA_DIR=/mnt/public/data;RUN_ID=exp-001 的形式填写。平台会把这些变量注入 Worker 运行环境。

敏感变量可设置为 仅创建人可见。启用后,创建人可在 任务详情 页和改配时查看变量值,其他用户无法在网页端查看;但有权限重跑的用户仍可复用原始 环境变量

信息

同一个变量建议只在网页端 环境变量启动命令 或训练代码中的一个位置设置。发生覆盖时,通常是训练代码中的值优先,其次是 启动命令,再其次是网页端 环境变量

挂载存储并确认输出路径

存储配置会决定 Worker 能否读到代码和数据,以及任务结束后是否还能取回模型权重和日志。

  • 系统盘:每个 Worker 的本地系统盘,默认 50 GiB。任务结束后不持久化,不适合保存训练结果。
  • 公共数据:如果所选规格位于支持的可用区,可只读挂载常用开源模型和数据集到 /infini-data/
  • 高性能存储:选择文件系统、存储卷和挂载路径。代码、数据、checkpoint 和 TensorBoard 日志应使用该路径。

例如开发机中把共享存储卷挂载为 /mnt/public,训练代码路径为 /mnt/public/projects/llm-train,创建训练任务时也应把同一存储卷挂载到 /mnt/public。这样 启动命令 和训练代码中的路径不需要改动。

警告

任务结束后,Worker 本地文件系统会被清理。只保存在本地路径中的模型权重、checkpoint 和日志无法找回。

配置任务告警

如果任务运行时间长、排队成本高或需要团队协作,建议配置告警。告警用于在任务失败、长时间排队或其他关键状态变化时通知相关人员。详见任务告警

填写基本信息并提交任务

填写任务名称、描述和标签后,点击 确认创建。名称允许重复,但建议包含项目、模型、数据版本或实验编号,便于后续筛选和重跑。

提交后,任务通常进入以下状态之一:

  • 排队中:资源池当前无法满足 Worker 规格和数量。可继续等待,也可停止后降低 Worker 数量或更换规格。
  • 部署中:平台正在分配资源、准备存储和网络、初始化环境并拉取镜像。
  • 运行中:训练脚本已经启动。

如果任务长时间停留在 部署中,请在任务列表状态栏中打开详细进度,判断卡在分配资源、准备存储、初始化还是拉取镜像。详见查看任务状态、日志与事件

提交后确认状态和输出

任务进入运行后,先确认三个信号:

  1. 任务日志中能看到训练脚本输出,并且没有在第一个 batch 前失败。
  2. 资源监控中 GPU 利用率、显存和网络使用符合预期。
  3. 共享存储输出目录中开始出现 checkpoint、日志或中间结果。

任务完成后,使用 AICoder 或开发机挂载同一存储卷,进入输出目录检查训练结果。需要下载大文件时,优先使用支持断点续传的工具,避免依赖网页端传输大量模型权重。详见获取训练结果

如果需要用相同配置再次训练,可在任务列表中点击 重跑改配重跑 时可修改 启动命令Worker 规格Worker 数量镜像,但不能修改 资源类型资源池、名称和描述。如果需要更换资源池后再次训练,使用 克隆 创建新任务,并先准备目标资源池所在可用区的共享存储数据和镜像。详见重跑训练任务

定位无法提交或启动失败的问题

遇到问题时,先按失败发生的阶段定位。只有确认问题来自镜像或启动脚本后,再重建镜像或重写 启动命令

  • 目标规格无法选择或 可启动数量 不足:检查 资源池Worker 规格Worker 数量自定义卡数 和排队情况。
  • 镜像找不到或拉取失败:检查镜像是否已导入、可用服务是否包含任务、可用区是否与当前资源池所在可用区一致,以及镜像仓库访问权限。
  • 第一个 batch 前失败:检查环境变量、依赖包、数据路径、启动命令 和训练代码预检结果。
  • 任务显示成功但训练实际失败:检查训练脚本报错时,创建页中的 启动命令 是否以失败状态结束。
  • 多机通信异常或 RDMA 检测失败:检查 Worker 规格 是否为 8 卡、训练网配置 和自定义镜像 RDMA 依赖。
  • 训练结束后找不到结果:检查输出路径是否位于挂载的共享存储,而不是 Worker 本地目录。

更多排查入口请查看训练故障处理