PyTorchJob 的方式在 Kubernetes 多机多卡启动 libai 执行 #367
-
问题:libai 有可以提交/管理类似于 PytorchJob 的 Operator 么?还是说可以直接复用 pytorch 的 Operator 参考背景: 当前 oneflow 的环境变量启动接口:
最终:需要跑通类似 PytorchJob 的启动方式,让Libai可以方便的在 Kubernetes 上执行起来。 |
Beta Was this translation helpful? Give feedback.
Replies: 8 comments 2 replies
-
背景资料: training-operator 支持的范围很广,国外、国内的框架都有对接。 |
Beta Was this translation helpful? Give feedback.
-
minimax 的小伙伴反馈:在 kubernetes 上很多都是通过这个方式提交训练任务的 |
Beta Was this translation helpful? Give feedback.
-
问题1:是否需要一个支持 oneflow 启动的 Operator? 是,每个深度学习框架都有。 问题2:一个支持 oneflow 启动的 Operator 是否优先级高? 问题3:如何提供? ** 路线1** OneBrain 有一个自研的通用 Operator,但是当前不能开源。如果开发一个开源的符合规范的版本,需要一个以月为单位的开发周期。暂时不考虑。 ** 路线2** 我们能否复用 PyTorch Operator ? 问题4:谁来负责实施起路线2 ? 0~3 是成熟、确定的工作。复现 torch 工作流。 |
Beta Was this translation helpful? Give feedback.
-
你好,以下是使用 training-operator 在 k8s 上运行 OneFlow 分布式训练的技术笔记,已经验证过成功运行。请参考。 使用 training-operator 运行 OneFlow 分布式训练1. 正确在k8s集群中部署trainning-operatortrainning-operator安装文档:https://github.com/kubeflow/training-operator/[README.md](https://github.com/kubeflow/training-operator/blob/master/README.md)
2. 准备oneflow docker镜像
3. 使用 PytorchJob 创建 OneFlow 分布式训练任务例如:创建 apiVersion: "kubeflow.org/v1"
kind: PyTorchJob
metadata:
name: pytorch-simple
namespace: default
spec:
pytorchReplicaSpecs:
Master:
replicas: 1
restartPolicy: OnFailure
template:
spec:
containers:
- name: pytorch
image: "oneflowinc/oneflow:0.8.1.dev20220812-cuda11.2"
imagePullPolicy: Always
env:
- name: LOCAL_RANK
value: "0"
volumeMounts:
- mountPath: /workspace
name: workspace-dir
resources:
limits:
nvidia.com/gpu: 1
command:
- "/bin/bash"
- "-c"
- "-l"
- "cd /workspace && python3 train-cifar10.py"
volumes:
- name: workspace-dir
hostPath:
path: /home/data
Worker:
replicas: 1
restartPolicy: OnFailure
template:
spec:
containers:
- name: pytorch
image: "oneflowinc/oneflow:0.8.1.dev20220812-cuda11.2"
imagePullPolicy: Always
env:
- name: LOCAL_RANK
value: "0"
volumeMounts:
- mountPath: /workspace
name: workspace-dir
resources:
limits:
nvidia.com/gpu: 1
command:
- "/bin/bash"
- "-c"
- "-l"
- "cd /workspace && python3 train-cifar10.py"
volumes:
- name: workspace-dir
hostPath:
path: /home/data 运行: kubectl apply -f oneflow-job.yaml 说明:
OneFlow 分布式训练在 PytorchJob 中,与 PyTorch 类似。 |
Beta Was this translation helpful? Give feedback.
-
还有一个问题,需要使用这个 PytorchJob ,把2机 * 4卡,把 libai gpt2 启动起来。做这样一个完整的验证。 |
Beta Was this translation helpful? Give feedback.
-
在 这里 有libai下怎么进行多机多卡的训练说明. |
Beta Was this translation helpful? Give feedback.
-
参照李jing的文档: 使用training-operator运行libai分布式训练1、 在挂载目录/home/data中安装libai,并且下载bert训练数据:cd /home/data
git clone https://github.com/Oneflow-Inc/libai.git
cd libai
pip install -e .
mkdir -p data_test/bert_data
cd data_test/bert_data
wget https://oneflow-static.oss-cn-beijing.aliyuncs.com/ci-files/dataset/libai/bert_dataset/bert-base-chinese-vocab.txt
wget https://oneflow-static.oss-cn-beijing.aliyuncs.com/ci-files/dataset/libai/bert_dataset/loss_compara_content_sentence.bin
wget https://oneflow-static.oss-cn-beijing.aliyuncs.com/ci-files/dataset/libai/bert_dataset/loss_compara_content_sentence.idx 2、rdma用不了,在
|
Beta Was this translation helpful? Give feedback.
-
这个可以整理成一篇博客,大家可以协作 |
Beta Was this translation helpful? Give feedback.
参照李jing的文档:
使用training-operator运行libai分布式训练
1、 在挂载目录/home/data中安装libai,并且下载bert训练数据:
2、rdma用不了,在
configs/bert_large_pretrain.py
后添加:3、修改yaml文件: