华为云CCE集群纳管和验证GPU VNT1裸金属服务器的解决方案

举报
modelarts-dev-server 发表于 2023/06/05 23:01:34 2023/06/05
【摘要】 解决如何将GPU VNT1裸金属服务器纳管至已创建好的华为云CCE集群, 并且在集群安装gpu-device-plugin插件, 根据pytorch2.01镜像创建pod,验证cuda是否可用。 本文给出端到端详解的步骤, 助力读者快速部署业务。

0. 前言

解决如何将GPU VNT1裸金属服务器纳管至已创建好的华为云CCE集群, 并且在集群安装gpu-device-plugin插件, 根据pytorch2.01镜像创建pod,验证cuda是否可用。 本文给出端到端详解的步骤, 助力读者快速部署业务。

1. 资源准备

(1) 在华为云CCE购买集群, 需要选择网络模型为VPC网络;

(2) 在华为云ModelArts购买GPU VNT1裸金属服务器, 需要联系客户经理或提ModelArts工单申请相关权限;

(3) 当前GPU VNT1纳管至CCE集群,需要使用的IMS镜像为euler2.9_x86_nosdi_uefi_ib_40G_20230210v1,需要联系客户经理或提ModelArts工单申请。

2. CCE集群纳管节点-纳管VNT1裸金属服务器

在CCE Console界面选择纳管节点,选择对应的VNT1裸金属服务器, 需要注意的配置如下

(1)  容器引擎选择Docker;

(2) 操作系统选择私有镜像euler2.9_x86_nosdi_uefi_ib_40G_20230210v1;

(3) 增加k8s标签: accelerator:nvidia-vnt1

纳管过程涉及对VNT1裸金属服务器更换重装操作系统,预计时间在20分钟左右。

3. CCE集群安装gpu-device-plugin插件

gpu-device-plugin(原gpu-beta)插件是支持在容器中使用GPU显卡的设备管理插件,集群中使用GPU节点时必须安装本插件。

详细介绍可以参考: https://support.huaweicloud.com/usermanual-cce/cce_10_0141.html

(1) 前置条件: 必须在BMS节点上打上标签accelerator:nvidia-vnt1,方法如下(若步骤2纳管节点时已增加,则可略过)

 kubectl label nodes 192.168.0.242 accelerator:nvidia-vnt1   //192.168.0.242为裸金属服务器私有IP

若无法执行kubectl,可以配置/root/.kube/config后执行。

(2) 在CCE console插件管理-选择gpu-device-plugin插件进行安装, 安装完成后可看到实例:

可以在CCE集群中对应的VNT1裸金属服务器节点上执行以下命令,进一步验证GPU插件是否安装成功

在GPU裸金属服务器中执行验证安装是否成功:

cd /opt/cloud/cce/nvidia/bin && ./nvidia-smi

或在容器中执行如下命令验证:

cd /usr/local/nvidia/bin && ./nvidia-smi

注意: 该gpu插件仅安装nvidia驱动,并未安装cuda组件,在宿主机若要开发gpu应用仍需自行安装cuda; 容器场景则不涉及。

至此, CCE集群已经成功纳管VNT1 GPU裸金属服务器,并且可以正常使用k8s pod等资源使用裸金属的GPU算力。

该插件nvidia驱动安装日志请参考: cat /opt/cloud/cce/nvidia/nvidia_installer.log


4. 方案验证: CCE集群中创建pytorch2.0.1 pod验证CUDA的可用性

(1) pytorch2.01镜像准备, 拉取pytorch2.0.1镜像, 若无法拉取需要在VNT1裸金属服务器上绑定弹性IP,使其具备外网访问权限:

docker pull  pytorch/pytorch:2.0.0-cuda11.7-cudnn8-devel 

(2) 创建gpu类deployment, 详细使用如下yaml, 可以直接挂在VNT1的8张GPU卡:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: v100-gpu-torch
  namespace: default
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: v100-gpu-torch
      version: v1
  template:
    metadata:
      labels:
        app: v100-gpu-torch
        version: v1
    spec:
      containers:
      - command:
        - sleep
        - "200000000000000000000000"
        image: pytorch/pytorch:2.0.0-cuda11.7-cudnn8-devel
        imagePullPolicy: IfNotPresent
        name: container-1
        resources:
          limits:
            cpu: 250m
            memory: 512Mi
            nvidia.com/gpu: "8"
          requests:
            cpu: 250m
            memory: 512Mi
            nvidia.com/gpu: "8"
      dnsPolicy: ClusterFirst
      imagePullSecrets:
      - name: default-secret
      restartPolicy: Always

(3) 查看deployment和pod创建状态, 成功的状态如下:

(4) 进入pytorch2.0.1容器, 验证CUDA的可用性:

至此已经验证完成,在已纳管VNT1 GPU裸金属服务器的CCE集群中, 安装gpu-device-plugin插件后, 可以创建pod正常使用VNT1的GPU算力。

注意事项:

如果裸金属服务器和想挂载的EVS云硬盘不在一个可用区,是无法创建pod+evs卷调度到该裸金属上的, 二者必须保证在同一个可用区。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。