使用 Kubeflow Trainer v2 进行微调
本教程演示如何使用 Kubeflow Trainer v2 在 Kubernetes 上运行基于 LlamaFactory 的监督微调(SFT)作业。
目录
概述前提条件RBAC 权限构建 Trainer 镜像或使用预构建镜像下载 notebook 并运行示例使用 Kueue 进行调度工作原理创建 LocalQueue(可选)使用 Kueue 提交 TrainJob(可选)概述
Kubeflow Trainer v2 将作业模板(TrainingRuntime)与作业运行(TrainJob)分离,允许你:
- 定义一个可复用的
TrainingRuntime,其中包含容器镜像、训练流水线步骤(数据集初始化 → 模型初始化 → 训练器)以及 LlamaFactory 配置。 - 提交多个引用同一运行时的
TrainJob,只覆盖每个实验中变化的部分——基础模型、数据集 URL、超参数或 GPU 资源。
前提条件
开始之前,请确保以下条件已满足:
RBAC 权限
如果在创建或管理 Kubeflow Trainer v2 资源时遇到 RBAC 权限错误,请先停止操作并联系你的集群管理员。请管理员为你创建一个临时角色,并将其绑定到你的账户或命名空间,使你拥有对 trainjobs 和 trainingruntimes 自定义资源的读写权限。
下面示例展示了集群管理员如何为名为 aml-editor 的工作台所使用的 ServiceAccount 授权:
请将 mlops-demo-ai-test 替换为工作台和 Trainer v2 资源运行的命名空间。
构建 Trainer 镜像或使用预构建镜像
你可以使用我们预构建的镜像 alaudadockerhub/fine_tune_with_llamafactory:v0.1.11,也可以使用 aml-docs 中提供的 Containerfile 自行构建镜像。
下载 notebook 并运行示例
- 下载 notebook 到你当前的 Alauda AI 工作台,如果没有工作台请先创建一个,然后打开该 notebook。
- 按照 notebook 中的说明创建
TrainingRuntime并提交TrainJob,以微调 LLaMA-Factory 模型。notebook 中包含了使用team-model-cache-pvc共享 PVC 和 Git 凭据的示例配置。
使用 Kueue 进行调度
Kueue 为 Kubernetes 工作负载提供作业排队、配额管理和公平调度功能。当 Kueue 安装在集群中时,TrainJob 会处于挂起状态,直到 Kueue 根据可用配额批准它们。
工作原理
- 集群管理员创建带有资源配额(CPU、内存、GPU)的
ClusterQueue。 - 命名空间管理员创建指向该
ClusterQueue的LocalQueue。 - 用户在
TrainJob上添加标签kueue.x-k8s.io/queue-name,将作业提交到对应的LocalQueue。 - Kueue 评估资源请求,在配额可用时批准工作负载并解除挂起。
有关设置 ClusterQueue 和 LocalQueue 的详细信息,请参阅 Kueue 文档。
创建 LocalQueue(可选)
在使用 Kueue 提交 TrainJob 之前,请在你的命名空间中创建一个引用已有 ClusterQueue 的 LocalQueue:
使用 Kueue 提交 TrainJob(可选)
要与 Kueue 集成,请在 TrainJob 的 metadata.labels 中添加 kueue.x-k8s.io/queue-name 标签,指定作业所属的 LocalQueue:
TrainJob 规范的其他部分保持不变。完整示例请参见 notebook。
启用 Kueue 时,集群可能配置了 PodsReady 超时(例如 5 分钟)。如果训练镜像较大且尚未缓存到节点,首次尝试可能因镜像拉取超时而被驱逐。通常重新提交作业会成功,因为镜像已被本地缓存。