NVIDIA GPU Operator分析五:GPU Feature Discovery安装

简介: 背景我们知道,如果在Kubernetes中支持GPU设备调度,需要做如下的工作:节点上安装nvidia驱动节点上安装nvidia-docker集群部署gpu device plugin,用于为调度到该节点的pod分配GPU设备。除此之外,如果你需要监控集群GPU资源使用情况,你可能还需要安装DCCM exporter结合Prometheus输出GPU资源监控信息。要安装和管理这么多的组件,对于运维

背景

我们知道,如果在Kubernetes中支持GPU设备调度,需要做如下的工作:

  • 节点上安装nvidia驱动
  • 节点上安装nvidia-docker
  • 集群部署gpu device plugin,用于为调度到该节点的pod分配GPU设备。

除此之外,如果你需要监控集群GPU资源使用情况,你可能还需要安装DCCM exporter结合Prometheus输出GPU资源监控信息。

要安装和管理这么多的组件,对于运维人员来说压力不小。基于此,NVIDIA开源了一款叫NVIDIA GPU Operator的工具,该工具基于Operator Framework实现,用于自动化管理上面我们提到的这些组件。

NVIDIA GPU Operator有以下的组件构成:

  • 安装nvidia driver的组件
  • 安装nvidia container toolkit的组件
  • 安装nvidia devcie plugin的组件
  • 安装nvidia dcgm exporter组件
  • 安装gpu feature discovery组件

本系列文章不打算一上来就开始讲NVIDIA GPU Operator,而是先把各个组件的安装详细的分析一下,然后手动安装这些组件,最后再来分析NVIDIA GPU Operator就比较简单了。

在本篇文章中,我们将介绍NVIDIA GPU Operator安装GPU Feature Discovery组件。

GPU Feature Discovery介绍

GPU Feature Discovery这个组件主要的作用是给GPU节点打上一些与GPU设备属性相关的标签,比如:该节点的GPU驱动是哪个版本,GPU显存是多大等,其效果是节点拥有很多以"nvidia.com"开头的标签。

$ kubectl get nodes cn-beijing.192.168.8.44 -o yaml | grep nvidia.com | grep -v "feature-labels"
    nvidia.com/cuda.driver.major: "450"
    nvidia.com/cuda.driver.minor: "102"
    nvidia.com/cuda.driver.rev: "04"
    nvidia.com/cuda.runtime.major: "11"
    nvidia.com/cuda.runtime.minor: "0"
    nvidia.com/gfd.timestamp: "1616729805"
    nvidia.com/gpu.compute.major: "7"
    nvidia.com/gpu.compute.minor: "0"
    nvidia.com/gpu.count: "1"
    nvidia.com/gpu.family: volta
    nvidia.com/gpu.machine: Alibaba-Cloud-ECS
    nvidia.com/gpu.memory: "16160"
    nvidia.com/gpu.present: "true"
    nvidia.com/gpu.product: Tesla-V100-SXM2-16GB
    nvidia.com/mig.strategy: single
    nvidia.com/gpu: "1"
    nvidia.com/gpu: "1"

打上这些标签的主要作用是在之后的任务调度中,可以根据这些标签将任务调度到指定节点上。

集群部署GPU Feature Discovery组件

接下来演示一下如何在集群中部署GPU Feature Discovery组件。

前提条件

  • k8s集群的版本 > 1.8。
  • 集群中的GPU节点已经安装了GPU驱动,如果没有安装驱动,请参考本系列文章《NVIDIA GPU Operator分析一:NVIDIA驱动安装》。
  • 集群中的GPU节点已经安装NVIDIA Container Toolkit,如果没有安装,请参考本系列文章《NVIDIA GPU Operator分析二:NVIDIA Container Toolkit安装》。
  • 集群中的GPU节点已经安装NVIDIA Device Plugin,如果没有安装,请参考本系列文章《NVIDIA GPU Operator分析三:NVIDIA Device Plugin安装》。

安装步骤

1.下载gpu-operator源码。

$ git clone -b 1.6.2 https://github.com/NVIDIA/gpu-operator.git
$ cd gpu-operator
$ export GPU_OPERATOR=$(pwd) 

2.确认节点已经打了标签nvidia.com/gpu.present=true。

$ kubectl get nodes -L nvidia.com/gpu.present
NAME                       STATUS   ROLES    AGE   VERSION            GPU.PRESENT
cn-beijing.192.168.8.44    Ready    <none>   13d   v1.16.9-aliyun.1   true
cn-beijing.192.168.8.45    Ready    <none>   13d   v1.16.9-aliyun.1   true
cn-beijing.192.168.8.46    Ready    <none>   13d   v1.16.9-aliyun.1   true
cn-beijing.192.168.9.159   Ready    master   13d   v1.16.9-aliyun.1
cn-beijing.192.168.9.160   Ready    master   13d   v1.16.9-aliyun.1
cn-beijing.192.168.9.161   Ready    master   13d   v1.16.9-aliyun.1

3.删除不用的yaml。

$ rm -rf assets/gpu-feature-discovery/*openshift*

4.修改assets/gpu-feature-discovery/0500_daemonset.yaml中的镜像。

  • 将container gpu-feature-discovery的镜像修改为nvcr.io/nvidia/gpu-feature-discovery:v0.4.1。
    spec:
      serviceAccount: nvidia-gpu-feature-discovery
      containers:
        - image: "nvcr.io/nvidia/gpu-feature-discovery:v0.4.1"
          name: gpu-feature-discovery

5.部署gpu-feature-discovery组件。

$ kubectl apply -f assets/gpu-feature-discovery

6.查看组件的pod是否处于Running状态。

$ kubectl get po  -n gpu-operator-resources -l app=gpu-feature-discovery
NAME                          READY   STATUS    RESTARTS   AGE
gpu-feature-discovery-49css   1/1     Running   0          96s
gpu-feature-discovery-k4nlp   1/1     Running   0          96s
gpu-feature-discovery-lx46x   1/1     Running   0          96s

7.查看其中一个pod的日志。

$ kubectl logs gpu-feature-discovery-49css -n gpu-operator-resources
gpu-feature-discovery: 2021/03/31 12:58:46 Running gpu-feature-discovery in version v0.4.1
gpu-feature-discovery: 2021/03/31 12:58:46 Loaded configuration:
gpu-feature-discovery: 2021/03/31 12:58:46 Oneshot: false
gpu-feature-discovery: 2021/03/31 12:58:46 FailOnInitError: true
gpu-feature-discovery: 2021/03/31 12:58:46 SleepInterval: 1m0s
gpu-feature-discovery: 2021/03/31 12:58:46 MigStrategy: single
gpu-feature-discovery: 2021/03/31 12:58:46 NoTimestamp: false
gpu-feature-discovery: 2021/03/31 12:58:46 OutputFilePath: /etc/kubernetes/node-feature-discovery/features.d/gfd
gpu-feature-discovery: 2021/03/31 12:58:46 Start running
gpu-feature-discovery: 2021/03/31 12:58:46 Writing labels to output file
gpu-feature-discovery: 2021/03/31 12:58:46 Sleeping for 1m0s
gpu-feature-discovery: 2021/03/31 12:59:46 Writing labels to output file
gpu-feature-discovery: 2021/03/31 12:59:46 Sleeping for 1m0s
gpu-feature-discovery: 2021/03/31 13:00:46 Writing labels to output file
gpu-feature-discovery: 2021/03/31 13:00:46 Sleeping for 1m0s

8.查看GPU节点是否被打上以nvidia.com开头的标签。

(1)查看集群节点:

$ kubectl get nodes
NAME                       STATUS   ROLES    AGE   VERSION
cn-beijing.192.168.8.44    Ready    <none>   18d   v1.16.9-aliyun.1
cn-beijing.192.168.8.45    Ready    <none>   18d   v1.16.9-aliyun.1
cn-beijing.192.168.8.46    Ready    <none>   18d   v1.16.9-aliyun.1
cn-beijing.192.168.9.159   Ready    master   19d   v1.16.9-aliyun.1
cn-beijing.192.168.9.160   Ready    master   19d   v1.16.9-aliyun.1
cn-beijing.192.168.9.161   Ready    master   19d   v1.16.9-aliyun.1

(2)以cn-beijing.192.168.8.45为例,查看其标签:

$ kubectl get nodes cn-beijing.192.168.8.44 -o yaml  | grep -v feature-labels |  grep nvidia.com
    nvidia.com/cuda.driver.major: "450"
    nvidia.com/cuda.driver.minor: "102"
    nvidia.com/cuda.driver.rev: "04"
    nvidia.com/cuda.runtime.major: "11"
    nvidia.com/cuda.runtime.minor: "0"
    nvidia.com/gfd.timestamp: "1616729805"
    nvidia.com/gpu.compute.major: "7"
    nvidia.com/gpu.compute.minor: "0"
    nvidia.com/gpu.count: "1"
    nvidia.com/gpu.family: volta
    nvidia.com/gpu.machine: Alibaba-Cloud-ECS
    nvidia.com/gpu.memory: "16160"
    nvidia.com/gpu.present: "true"
    nvidia.com/gpu.product: Tesla-V100-SXM2-16GB
    nvidia.com/mig.strategy: single
    nvidia.com/gpu: "1"
    nvidia.com/gpu: "1"

可以看到,节点已经打上了与GPU设备属性相关的标签。 

总结

本篇文章主要演示了如何在集群中手动安装GPU Feature Discovery组件,至此NVIDIA GPU Operator所涉及的所有组件我们都手动安装了一遍。在本系列文章的下一篇文章中,我们将从源码的角度分析NVIDIA GPU Operator是怎么实现的。

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
目录
相关文章
|
8月前
|
Kubernetes 安全 异构计算
K8S 部署 Deepseek 要 3 天?别逗了!Ollama+GPU Operator 1 小时搞定
最近一年我都在依赖大模型辅助工作,比如 DeepSeek、豆包、Qwen等等。线上大模型确实方便,敲几个字就能生成文案、写代码、做表格,极大提高了效率。但对于企业来说:公司内部数据敏感、使用外部大模型会有数据泄露的风险。
K8S 部署 Deepseek 要 3 天?别逗了!Ollama+GPU Operator 1 小时搞定
|
7月前
|
Kubernetes 调度 异构计算
一文搞懂 GPU 共享方案: NVIDIA Time Slicing
本文主要分享 GPU 共享方案,包括如何安装、配置以及使用,最后通过分析源码了 TImeSlicing 的具体实现。通过配置 TImeSlicing 可以实现 Pod 共享一块物理 GPU,以提升资源利用率。
389 11
|
9月前
|
并行计算 PyTorch 算法框架/工具
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
本文探讨了如何通过技术手段混合使用AMD与NVIDIA GPU集群以支持PyTorch分布式训练。面对CUDA与ROCm框架互操作性不足的问题,文章提出利用UCC和UCX等统一通信框架实现高效数据传输,并在异构Kubernetes集群中部署任务。通过解决轻度与强度异构环境下的挑战,如计算能力不平衡、内存容量差异及通信性能优化,文章展示了如何无需重构代码即可充分利用异构硬件资源。尽管存在RDMA验证不足、通信性能次优等局限性,但该方案为最大化GPU资源利用率、降低供应商锁定提供了可行路径。源代码已公开,供读者参考实践。
818 3
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
|
并行计算 TensorFlow 算法框架/工具
Windows11+CUDA12.0+RTX4090如何配置安装Tensorflow2-GPU环境?
本文介绍了如何在Windows 11操作系统上,配合CUDA 12.0和RTX4090显卡,通过创建conda环境、安装特定版本的CUDA、cuDNN和TensorFlow 2.10来配置TensorFlow GPU环境,并提供了解决可能遇到的cudnn库文件找不到错误的具体步骤。
2303 3
|
Linux TensorFlow 算法框架/工具
安装GPU版本的TensorFlow
【7月更文挑战第3天】安装GPU版本的TensorFlow。
573 1
|
并行计算 TensorFlow 算法框架/工具
Window安装TensorFlow-GPU版本
Window安装TensorFlow-GPU版本
417 0
|
机器学习/深度学习 人工智能 弹性计算
阿里云GPU服务器全解析_GPU服务器租用费用_NVIDIA A10、V100、T4、P4、P100 GPU卡
阿里云GPU云服务器提供NVIDIA A10、V100、T4、P4、P100等多种GPU卡,结合高性能CPU,单实例计算性能高达5PFLOPS。支持2400万PPS及160Gbps内网带宽。实例规格多样,如A10卡GN7i(3213.99元/月)、V100-16G卡GN6v(3830.00元/月)等。适用于深度学习、科学计算、图形处理等场景。GPU软件如AIACC-Training、AIACC-Inference助力性能优化。购买方式灵活,客户案例包括深势科技、流利说、小牛翻译。
3039 0
|
XML 机器学习/深度学习 监控
性能监控之Telegraf+InfluxDB+Grafana NVIDIA GPU实时监控
【6月更文挑战12天】性能监控之Telegraf+InfluxDB+Grafana NVIDIA GPU实时监控
679 0
|
2月前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
305 1
|
2月前
|
人工智能 城市大脑 运维
喜讯!阿里云国产异构GPU云平台技术荣获“2025算力中国·年度重大成果”
2025年8月23日,在工业和信息化部新闻宣传中心、中国信息通信研究院主办的2025中国算力大会上,阿里云与浙江大学联合研发的“国产异构GPU云平台关键技术与系统”荣获「算力中国·年度重大成果」。该评选旨在选拔出算力产业具有全局性突破价值的重大成果,是业内公认的技术创新“风向标”。
328 0

热门文章

最新文章