安装指南
Installation Guide
-
1. 安装XPU
安装XPU之前请先安装docker,GPU驱动及nvidia-docker:
确保docker已安装
版本大于19.03。
确保GPU驱动已安装
GPU驱动已被正确安装。 您可以用命令nvidia-smi来检查。 如果您的GPU驱动未被正确安装,可以参考英伟达官网上的文档安装合适的GPU驱动。如果您对安装哪个版本的GPU驱动有疑问,可以阅读这个文档。
确保nvidia-docker已安装
确保nvidia-docker已被正确安装,请参阅该文档进行安装
通过优优网站下载安装脚本来安装XPU,安装脚本会根据当前Linux的版本来决定使用的版本,下载地址:
http://www.openxpu.com/release/xpu-installer.sh
2. 使用XPU
XPU将完整的GPU切分成不同的份额来供容器使用,我们称之为shares,shares是算力和显存的集合。运行XPU容器时需要将不同GPU的shares通过容器的环境变量指定给容器使用。XPU container runtime会根据相应的环境变量为容器准备对应的GPU设备,分配相应的shares。XPU通过切分的shares,来进行GPU共享,做到故障隔离,显存隔离,算力隔离。
示例如下:
# ubuntu>sudo docker run --gpus all --runtime=nvidia --name xpu -it -v /mnt:/mnt -e OPENXPU_XPU_SHARES=0:4096-50%,2:4096-50%H nvcr.io/nvidia/cuda:11.2.0-devel-centos7 /bin/bash
该写法表示为该容器分配索引为0的显卡,shares为显存4096MB,算力50%;分配索引为2的显卡,shares为显存4096MB,算力50%,资源属于高优先级。
您也可以使用GPU UUID来指定所使用的GPU:OPENXPU_XPU_SHARES=GPU-c5963e55-4cc8-359b-d2d8-b8d4ba5bd92d:4096-50%。
您也可以使用百分比来设置显存:OPENXPU_XPU_SHARES=0:50%-50%。
更多信息请参考文档:《XPU 安装和使用指南》。
-
在K8S集群中使用XPU,主要利用了K8S 1.8版本后提出的Extended Resources和Device Plugin方案。Device Plugin:K8S制定设备插件接口规范,定义异构资源的上报和分配,设备厂商只需要实现相应的API接口,无需修改kubelet源码即可实现对其他硬件设备的支持。Extended Resource(XPU定义的extended resource为yoyoworks.com/xpu-shares),K8S scheduler可以根据Pod的创建删除计算资源可用量,而不再局限于CPU和内存的资源统计,进而将有特殊资源需求的Pod调度到相应的节点上。在K8S的使用过程中,除了安装前文所述XPU driver module 和 XPU container runtime之外,需要用到xpu-device-plugin和xpu-extend-scheduler两个插件 。
1. 确保Kubernetes集群已经正确安装,版本 >= 1.18;
2. 存在GPU的node上打上xpu=true的标签:
# ubuntu>sudo kubectl label node <node_name> xpu=true
查询如下图所示:
3. 部署xpu-device-plugin插件:
# ubuntu>sudo kubectl apply -f http://www.yoyoworks.com/release/latest/k8s-plugin/device-plugin-rbac.yaml
# ubuntu>sudo kubectl apply -f http://www.yoyoworks.com/release/latest/k8s-plugin/device-plugin-ds.yaml
4. 部署xpu-extend-scheduler插件:
# ubuntu>sudo wget http://www.yoyoworks.com/release/latest/k8s-plugin/scheduler-policy-config.json
修改K8S scheduler的配置文件,/etc/kubernetes/manifests/kube-scheduler.yaml,增加:
- --policy-config-file=/etc/kubernetes/scheduler-policy-config.json
- --use-legacy-policy-config=true
- mountPath: /etc/kubernetes/scheduler-policy-config.json
name: scheduler-policy-config
readOnly: true
- hostPath:
path: /etc/kubernetes/scheduler-policy-config.json
type: FileOrCreate
name: scheduler-policy-config
应用yaml文件:
# ubuntu>sudo kubectl apply -f http://www.yoyoworks.com/release/latest/k8s-plugin/xpu-scheduler-extender.yaml
5. 检查xpu-device-plugin和xpu-extend-scheduler两个插件是否正常运行:
6. 测试,将XPU定义的extended resource写入需要调度的Pod yaml文件中:
或者直接从优优网站下载一个示例 yaml文直接应用:
# ubuntu> sudo kubectl apply -f http://www.yoyoworks.com/release/latest/k8s-plugin/xpu-sam.yaml
GPU 容器虚拟化及 PaaS 云服务
联系我们