训练¶
训练会在集群上基于一个固定数据集版本运行真实流水线任务,并把结果注册为新的模型版本。这不是 模拟:训练器容器真实运行在 CPU 或 GPU 上,实时输出损失曲线与日志,完成后把产物上传到对象 存储。
Forge 通过 Kubeflow Pipelines 调度,你只需填写训练表单。两条训练路线共用同一套任务机制。
两条训练路线¶
| 计算机视觉 | LLM / VLM | |
|---|---|---|
| 输入数据集 | COCO / TXT / ImageNet 版本 | LLM-SFT / sharegpt JSONL(VLM 带 images/) |
| 基座模型 | RT-DETR / timm 权重 | 模型池中的 Qwen / LLaMA 系列预训练模型 |
| 训练器 | 内置检测 / timm 模板(train.py) |
LLaMA-Factory(NVIDIA、AMD)或原生 transformers + PEFT(Intel) |
| 方法 | 全量训练 / 微调 | LoRA / QLoRA 适配器 SFT(或合并权重) |
| 产物 | .pt + .onnx、指标 |
适配器 / tokenizer / processor、history.jsonl、指标 |
| 加速器 | CPU、NVIDIA、AMD、Intel | NVIDIA、AMD、Intel(QLoRA),可回退 CPU |
加速器:一张表单,镜像按厂商区分¶
Forge 使用加速器画像抽象:你在表单中选择目标(只列出集群上报为可分配的资源),平台据此 选择匹配的训练器镜像变体、Kubernetes 资源与 PyTorch 后端:
| 厂商 | K8s 资源 | 镜像后缀 | 后端 |
|---|---|---|---|
| NVIDIA | nvidia.com/gpu |
-cu |
CUDA PyTorch / LLaMA-Factory |
| AMD(RDNA) | amd.com/gpu |
-rocm |
ROCm / HIP,LLaMA-Factory |
| Intel Arc | gpu.intel.com/xe |
-xpu |
原生 torch.xpu + PEFT |
| CPU | — | 默认 | CPU 镜像 |
支持度如实分级,并取决于你的硬件:
- Certified(认证)——真机端到端训练通过(例如 Intel Arc 在参考节点上对 CV、LLM QLoRA、SmolVLM VLM-LoRA 均已认证)。
- Compatible / build-only(兼容 / 仅构建)——镜像存在但该芯片上的 CV 或完整端到端尚未 认证。
- 集群没有对应设备时任务无法调度到该处;请选择可用加速器或 CPU,而不要假定一定有 GPU。
创建训练任务¶
- 打开训练页,选择任务类型(CV 检测 / 分割 / 分类,或 LLM / VLM)。
- 选择数据集版本(标注导出或 LLM-SFT 语料)。
- 从模型池选择基座模型。
- 设置超参;CV 默认值是稳妥起点:
| 参数 | CV 默认 | 说明 |
|---|---|---|
| epochs | 100 | LLM/VLM 微调通常 1–5 个 epoch |
| imgsz | 640 | 训练/推理图片尺寸 |
| batch | 16 | 显存不足时调小;OOM 时训练器会给出明确报错 |
| 训练/验证比例 | 0.8 | Forge 执行切分,并保留验证集供评估 |
- 选择与节点匹配的加速器并提交。
LLM/VLM 任务表单还会暴露微调方式(全量 / LoRA / QLoRA)、秩(rank)与 LoRA 超参;VLM 任务 接收视觉语言基座模型与 sharegpt + 图片语料。
任务运行期间¶
- 状态与进度——任务依次为排队、运行、成功、失败;成功时进度到 100%。
- 曲线——训练曲线 Tab 绘制逐步/逐 epoch 的损失与评估指标(CV 读取训练器结果;
LLM/VLM 绘制逐步
history.jsonl)。 - 日志——日志视图显示训练器 Pod 的真实标准输出(损失行、上传确认),Pod 结束后回退到 流水线执行器日志。
- 产物——成功后训练器上传权重、ONNX(CV)、指标与 tokenizer/processor 文件,并以任务名 自动注册一个模型版本。
训练过程中会写 checkpoint,因此中断的任务可从 checkpoint 恢复;失败任务也可以直接重启。
自带训练器¶
当内置模板无法表达某个工作流时,CV/PyTorch 任务可以使用自定义镜像和/或自定义训练 脚本。如果要做一个可复用的训练器——自有框架、自有架构、出现在训练表单中、可按加速器 选择——请用训练器 SDK(Python)构建:一套极小的「环境变量进、产物出」 契约,内置训练器用的也是它。
两条扩展通道:
custom_image——私有镜像仓库中的任意镜像(PATH上有 Python),它成为训练器容器。 分发可复用训练器的受支持方式,是带能力 profile 的 SDK 镜像。custom_script_uri——指向某个 Python 文件的s3://或http(s)://URL,下载到容器后 以__main__执行。这是快速实验通道,无需镜像,但仅限 CV。
脚本继承标准训练器环境(INPUT_URI、OUTPUT_DIR、CONFIG_JSON、ARTIFACT_ID、S3_*
凭据),并把模型上传到 OUTPUT_DIR。若同时上传带 weights_uri/onnx_uri 的
<artifact>.metrics.json,版本会被精确注册;否则 worker 扫描输出前缀并注册最佳产物(优先
.onnx,其次 .pt/.pth/.safetensors)。LLM/VLM 任务走 LLaMA-Factory / XPU 训练器,不使用
这些选择器。
常见问题¶
曲线在哪里看?
在任务详情页的训练曲线 Tab。曲线在训练器写入后才出现,而非第一个 epoch/step 之前。
任务一直 pending?
请求的加速器不可分配。检查集群节点、空闲显存与 device plugin,然后改用可用画像(含 CPU 冒烟测试)重新提交。
训练数据如何确定?
你选定一个不可变数据集版本;Forge 按你设置的比例切分训练/验证。留出的验证切分正是 评估默认使用的数据,可避免在训练图片上评估。
中断了怎么办?
可从 checkpoint 恢复,或重启任务。数据集与基座模型固定在任务上,因此重跑结果可比较。