Training Runtime 镜像
适用于 Kubeflow Trainer v2 的 Curated TrainingRuntime 镜像。每个镜像都打包了特定的 PyTorch + accelerator 栈,因此用户无需重新构建即可提交 TrainJob。
可用运行时
CUDA 镜像仅支持 amd64;CANN 镜像仅支持 arm64。
选择运行时
- 在 GPU 上使用 torchrun →
torch2.6-cu126-amd64 - 在 NPU 上使用 torchrun →
torch2.6-cann8.5-arm64(设置runtimeClassName: ascend) - 使用 LLaMA-Factory 进行 LLM SFT / LoRA →
llamafactory0.9-cu126-amd64(GPU)或llamafactory0.9-cann8.5-arm64(NPU) - TRL / PEFT SFT / OSFT / DPO →
traininghub0.1-cu126-amd64 - 在 Ascend 上进行 Megatron 风格训练 →
mindspeed-llm-cann8.5-arm64
应用 TrainingRuntime
可直接应用的 YAML 位于 assets/training-runtimes/。每个 YAML 都固定使用 :v0.1.0;如需跟踪其他发布版本,请覆盖该标签。YAML 默认使用 Kubeflow Profile 命名空间 — 请将 metadata.namespace 修改为你提交作业的命名空间。
提交 TrainJob
共享 smoke 模板适用于任意运行时 — 将 spec.runtimeRef.name 设置为你要验证的运行时:
设备资源请求
NVIDIA GPU
整卡请求:
HAMI vGPU 切片:
Huawei Ascend NPU
务必设置 runtimeClassName: ascend,以便注入宿主机驱动库和 DCMI sockets。
标准 Huawei device-plugin:
HAMI vNPU(每个 910B4 切分为 20 cores / 32 GiB):
使用 HAMI 时,allocatable.huawei.com/Ascend910B4 显示为 0,因为 HAMI 通过其 scheduler extender 进行分配。如果 Pod 一直处于 Pending 且提示 hami-scheduler: 1 node unregistered,请确认宿主机驱动已加载(/sys/bus/pci/drivers/davinci、npu-smi info 正常),并且节点已标记为 ascend=on。
镜像注意事项
- 所有 CANN 镜像 —
runtimeClassName: ascend会 bind-mount 宿主机的/usr/local/Ascend,但不会导出 CANN 环境变量(LD_LIBRARY_PATH、ASCEND_HOME_PATH等)。任何导入torch_npu的入口程序都必须先source /usr/local/Ascend/ascend-toolkit/set_env.sh(以及可选的/usr/local/Ascend/nnal/atb/set_env.sh);否则导入会因libhccl.so: cannot open shared object file而失败。已发布的运行时 YAML 已经包含这些操作 — 请在任何派生运行时中保留这些source行。 traininghub0.1-cu126-amd64— 提供 CUDA runtime,但不包含 toolkit。DeepSpeed JIT op 编译需要nvcc;如果使用这些 ops,请挂载或安装nvidia-cuda-toolkit,并设置CUDA_HOME。mindspeed-llm-cann8.5-arm64—megatron.core需要pkg_resources,因此请在作业入口程序中安装setuptools<81。目前import mindspeed_llm会因为mindspeed_llmmaster /core_r0.8.0不匹配而失败;在没有该 adapter shim 的情况下,底层的 torch + torch_npu + megatron.core + mindspeed 栈可正常训练。
自行构建
Containerfiles、多架构 buildkitd helper、e2e harness,以及 post-fix 扫描证据位于 kubeflow-plugin/training-runtimes。每个框架镜像都只是 torch2.6-cu126-amd64 或 torch2.6-cann8.5-arm64 上的一层薄封装,因此派生一个新运行时基本上就是在 FROM docker.io/alaudadockerhub/torch2.6-cu126-amd64:v0.1.0 的基础上再安装对应框架。