Kubeflow Trainer部署完全手册:Helm Charts与Kustomize配置详解
Kubeflow Trainer部署完全手册:Helm Charts与Kustomize配置详解
Kubeflow Trainer是一个在Kubernetes上实现分布式AI模型训练和LLM微调的强大工具。本指南将详细介绍如何使用Helm Charts和Kustomize两种方式部署Kubeflow Trainer,帮助你快速搭建专业的机器学习训练环境。
📋 部署前准备
在开始部署Kubeflow Trainer之前,请确保你的环境满足以下要求:
- Kubernetes集群版本 >= 1.29
- Helm版本 >= 3
- Git工具
首先,克隆Kubeflow Trainer仓库到本地:
git clone https://gitcode.com/gh_mirrors/tr/training-operator
cd training-operator
🚀 Helm Charts部署方法
Helm是Kubernetes的包管理工具,提供了一种简单高效的方式来部署和管理Kubeflow Trainer。
基础安装
安装最新发布版本(例如2.1.0):
helm install kubeflow-trainer oci://ghcr.io/kubeflow/charts/kubeflow-trainer --version 2.1.0
如果你需要安装master分支的最新开发版本,可以使用类似以下命令:
helm install kubeflow-trainer oci://ghcr.io/kubeflow/charts/kubeflow-trainer --version 0.0.0-sha-bfccb7b
启用训练运行时
Kubeflow Trainer支持多种机器学习框架的运行时环境。默认情况下这些运行时是禁用的,你可以根据需要启用特定的运行时:
helm install kubeflow-trainer oci://ghcr.io/kubeflow/charts/kubeflow-trainer \
--version 2.1.0 \
--set runtimes.torchDistributed.enabled=true \
--set runtimes.deepspeedDistributed.enabled=true
或者,你可以一次性启用所有默认运行时:
helm install kubeflow-trainer oci://ghcr.io/kubeflow/charts/kubeflow-trainer \
--version 2.1.0 \
--set runtimes.defaultEnabled=true
使用自定义配置文件
创建一个自定义的values.yaml文件来配置你的部署:
# values.yaml
runtimes:
torchDistributed:
enabled: true
deepspeedDistributed:
enabled: true
mlxDistributed:
enabled: true
# 启用数据缓存支持
dataCache:
enabled: true
cacheImage:
tag: "v2.0.0"
runtimes:
torchDistributedWithCache:
enabled: true
然后使用该配置文件进行安装:
helm install kubeflow-trainer oci://ghcr.io/kubeflow/charts/kubeflow-trainer \
--version 2.1.0 \
-f values.yaml
可用的训练运行时
Kubeflow Trainer提供了多种预配置的训练运行时:
- torch-distributed: PyTorch分布式训练(无需自定义镜像)
- torch-distributed-with-cache: 带分布式数据缓存支持的PyTorch(需要启用dataCache)
- deepspeed-distributed: 带MPI的DeepSpeed分布式训练
- mlx-distributed: 带MPI的MLX分布式训练
- xgboost-distributed: XGBoost分布式训练
卸载Helm部署
要卸载Kubeflow Trainer,使用以下命令:
helm uninstall kubeflow-trainer
注意:这不会删除CRD资源,需要手动删除。
⚙️ Kustomize配置部署
Kustomize是另一种流行的Kubernetes配置管理工具,特别适合需要高度自定义部署的场景。
基础部署
Kubeflow Trainer的Kustomize配置位于manifests/目录下。要部署默认配置:
kubectl apply -k manifests/overlays/manager
自定义镜像版本
你可以通过修改Kustomization文件来自定义镜像版本。例如,编辑manifests/overlays/manager/kustomization.yaml:
images:
- name: ghcr.io/kubeflow/trainer/trainer-controller-manager
newTag: v2.2.0 # 将版本改为你需要的版本
同样,你可以在manifests/overlays/runtimes/kustomization.yaml中更新运行时镜像版本:
images:
- name: ghcr.io/kubeflow/trainer/torchtune-trainer
newTag: v2.2.0
- name: ghcr.io/kubeflow/trainer/mlx-runtime
newTag: v2.2.0
# 其他运行时镜像...
部署训练运行时
要部署预配置的训练运行时,使用以下命令:
kubectl apply -k manifests/overlays/runtimes
部署数据缓存组件
数据缓存功能可以显著提高训练性能,特别是在处理大型数据集时:
kubectl apply -k manifests/overlays/data-cache
🔍 部署验证
部署完成后,验证Kubeflow Trainer组件是否正常运行:
kubectl get pods -n kubeflow-system
你应该能看到类似以下的输出,显示trainer-controller-manager pod正在运行:
NAME READY STATUS RESTARTS AGE
trainer-controller-manager-7f9658b8c4-2x4kf 1/1 Running 0 5m
📊 Kubeflow Trainer工作流
Kubeflow Trainer提供了完整的LLM微调生命周期管理,从数据和模型初始化到训练和导出:
上图展示了Kubeflow Trainer的完整工作流程,包括:
- 数据科学家使用Kubeflow Python SDK管理训练任务
- MLOps和DevOps工程师管理运行时环境
- 自动获取数据集和模型资产
- 通过JobSet和Trainer组件协调分布式训练
- 训练完成后导出模型到云存储
训练作业流程
以下是Kubeflow Trainer V2的训练作业流程示意图:
这个流程包括:
- 数据初始化器下载数据集
- 模型初始化器下载基础模型
- 预处理数据
- 使用PyTorch、Hugging Face或NVIDIA NeMo进行训练
- 导出微调后的模型到云存储
🛠️ 高级配置
Istio边车配置
如果你在使用Istio服务网格,可能需要配置边车排除webhook端口:
# 在values.yaml中添加
manager:
podAnnotations:
traffic.sidecar.istio.io/excludeInboundPorts: "9443"
然后使用更新后的配置文件升级部署:
helm upgrade kubeflow-trainer oci://ghcr.io/kubeflow/charts/kubeflow-trainer \
--version 2.1.0 \
-f values.yaml
资源配置
你可以根据集群资源情况调整控制器的资源配置:
# 在values.yaml中添加
manager:
resources:
requests:
cpu: 1
memory: 1Gi
limits:
cpu: 2
memory: 2Gi
📚 更多资源
- 官方文档: docs/README.md
- Helm Chart配置: charts/kubeflow-trainer/values.yaml
- 示例训练作业: examples/yaml/
- 运行时配置: manifests/base/runtimes/
通过本指南,你已经掌握了使用Helm Charts和Kustomize两种方式部署Kubeflow Trainer的方法。根据你的具体需求和环境,可以选择最适合的部署方式,快速搭建起强大的分布式机器学习训练平台。
更多推荐





所有评论(0)