算力统筹与分布式存储
算力统筹 / 均衡
面临的问题
- 时间、空间维度上 GPU 资源利用率不足。
- 异构算力环境,任务需区分 CPU / GPU(T4) / GPU(V100) / vGPU 等类型。
- 超大数据量必须跑分布式,且资源要尽可能多。
- 个人代码和环境依赖固定机器,而机器的回收、损坏、裁撤、磁盘不足等事件频繁,耗费大量工程运维时间。
- GPU 训练中利用率优化的主动性不大,用户会优先考虑通过扩容来提升效率。
解决方案
- 统筹底层算力,最大程度提高剩余资源的利用率。
- 项目组间算力自动均衡,基本能把任务挂起等待时长保持在 5 分钟以内。
- 支持边缘集群模式,充分利用边缘网络资源,避免数据同步。
- 智能修正任务的启动资源配置,避免不合理的资源申请。

平台分布式存储挂载
面临的问题
- 为减少数据导入导出链路,避免用户在开发 / 调试 / 训练 / 校验 / 上线时,数据文件在不同系统之间来回搬运。
解决方案
- 平台在开发 notebook、数据处理 / 训练 pipeline、模型服务化中挂载相同的分布式存储,不同用户挂载各自的子目录。同一用户在平台各个环节下
/mnt/$username都是其个人工作目录。

- 数据隔离:
pvc挂载会自动追加用户个人子目录(subPath = 用户名)。 - 组目录模式:支持多人共用分布式存储,满足团队工作目录的需求。
- 多存储挂载:每个项目可以添加多个 pvc 挂载,比如低性能 CFS、高性能 SSD Ceph,应用于不同的数据处理 / 训练场景。
- 解耦分布式存储实现:只需把存储挂载或软链到主机(
/data/k8s/),或绑定到 pvc 即可。 - 磁盘爆炸:平台提供存储监控,会提醒用户及时删除不再使用的大文件目录。
- 磁盘不足:存储的扩缩容是弹性的,用户无需担心存储大小问题。
- 其他类型挂载:如 hostpath、memory、configmap。
挂载的配置
平台用 挂载源(类型):容器目录 的字符串语法描述每条挂载,多条用逗号分隔。常见类型如下(解析逻辑见 myapp/utils/py/py_k8s.py 约 940-1060 行):
- pvc 挂载,例如
kubeflow-user-workspace(pvc):/mnt:会自动把 pvc 下的$username子目录(subPath=username)挂载到容器目录的$username子目录下,实现按用户隔离。平台默认任务挂载即为
kubeflow-user-workspace(pvc):/mnt(见myapp/init/init-inference.json、myapp/cli.py)。 - hostpath 挂载,例如
/data/kubeflow/k8s/kubeflow/pipeline/workspace/group1(hostpath):/mnt1:把主机目录挂载到容器目录,一般用于多人共享编辑同一目录。 - configmap 挂载,例如
kubernetes-config(configmap):/root/.kube:把 configmap 挂载到容器目录,一般用于把特殊配置文件投递进容器。 - 内存挂载,例如
4G(memory):/dev/shm:把内存(emptyDir medium=Memory)挂载到容器,一般用于解决 K8s 共享内存不足的问题。
平台还支持几种与上面同源的挂载类型(同见
py_k8s.py):
(pvc-share):把整个 pvc 挂载到目标目录、不追加用户子目录,用于"组目录 / 团队共享"场景。(nfs):直接以ip/path(nfs):容器目录方式挂载 NFS。(storage):外部存储盘,挂载时不追加子目录。
分布式文件系统
NFS
NFS 是最常用的共享存储方案,部署方式见 02-部署安装 段中的「NFS 离线部署」文档。
JuiceFS
可使用 JuiceFS 作为分布式文件系统(无需挂载到每台机器即可实现多个 Pod 直接共享统一目录)。部署要点(详见 02-部署安装 段中的 JuiceFS 部署文档):
- 执行
cd install/kubernetes/juicefs/ && sh start_juicefs.sh。 - 执行前请阅读
install/kubernetes/juicefs/README.md。 - 记得修改
install/kubernetes/juicefs/.env中的JUICEFS_HOST_IP为本节点 IP,并保证/data目录有足够空间。 - 注意配置开机自动挂载,避免机器重启后挂载失效。
Alluxio
Alluxio 也可作为分布式存储缓存层,部署方式见 02-部署安装 段中的「Alluxio 分布式存储部署」文档。