安装指南

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