k8s英伟达GPU插件(nvidia-device-plugin)

2023-11-16

安装方法

Installation Guide — NVIDIA Cloud Native Technologies documentation

1.本地节点添加 NVIDIA 驱动程序

要求:NVIDIA drivers ~= 384.81
先确保你的主机上的 NVIDIA 驱动程序正常工作,你应该能够成功运行 nvidia-smi 并查看你的 GPU 名称、驱动程序版本和 CUDA 版本

$ nvidia-smi
Thu Jul 14 11:49:33 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 515.57       Driver Version: 515.57       CUDA Version: 11.7     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:02:00.0 Off |                  N/A |
|  0%   48C    P8    11W / 200W |      0MiB /  8192MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

需要注意的是,第一次安装显卡驱动的话,是不用重启服务器的

2.本地节点安装nvidia-docker或nvidia-container-toolkit

nvidia-docker >= 2.0 || nvidia-container-toolkit >= 1.7.0

运行NVIDIA Container Toolkit的条件:

  • 内核版本 > 3.10 的 GNU/Linux x86_64
  • Docker >= 19.03(推荐,但某些发行版可能包含旧版本的 Docker。支持的最低版本为 1.12)
  • 架构 >= Kepler(或计算能力 3.0)的 NVIDIA GPU
  • NVIDIA Linux 驱动程序>= 418.81.07(请注意,不支持较旧的驱动程序版本或分支。)

如:centos, nvidia-container-toolkit

$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo

$ yum install -y nvidia-container-toolkit

$ rpm -qa | grep nvidia

libnvidia-container-tools-1.10.0-1.x86_64

libnvidia-container1-1.10.0-1.x86_64

nvidia-container-toolkit-1.10.0-1.x86_64

3.每个节点Docker的默认运行时设置为 nvidia-container-runtime

$ cat /etc/containerd/config.toml  | grep BinaryName -C6
          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
            NoPivotRoot = false
            NoNewKeyring = false
            ShimCgroup = ""
            IoUid = 0
            IoGid = 0
            BinaryName = "/usr/bin/nvidia-container-runtime"  //修改此处即可
            Root = ""
            CriuPath = ""
            SystemdCgroup = false
    [plugins."io.containerd.grpc.v1.cri".cni]
      bin_dir = "/opt/cni/bin"
      conf_dir = "/etc/cni/net.d"

$ systemctl daemon-reload
$ systemctl restart containerd

4.部署 NVIDIA 设备插件: kubectl create -f nvidia-device-plugin.yml

#1.0.0-beta4

$ docker pull nvidia/k8s-device-plugin:1.0.0-beta4

$ kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/1.0.0-beta4/nvidia-device-plugin.yml

# 或1.12

$ docker pull nvidia/k8s-device-plugin:1.11

$ kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v1.12/nvidia-device-plugin.yml

5.检查:

Kubernetes将暴露 amd.com/gpu或nvidia.com/gpu为可调度的资源

$ kubectl describe node | grep nvidia.com/gpu

验证

$ docker run --name hfftest --rm -it --gpus all nvidia/cuda:10.0-base nvidia-smi
Thu Jul 14 04:54:04 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 515.57       Driver Version: 515.57       CUDA Version: 11.7     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:02:00.0 Off |                  N/A |
| 21%   49C    P8    16W / 200W |      0MiB /  8192MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

k8s:

apiVersion: v1
kind: Pod
metadata:
  name: test-gpu
spec:
  restartPolicy: OnFailure
  containers:
    - name: test-gpu
      image: "k8s.gcr.io/cuda-vector-add:v0.1"
      resources:
        limits:
          nvidia.com/gpu: 1

一些限制的:

  • GPUs 只能设置在 limits 部分,这意味着:

你可以指定 GPU 的 limits 而不指定其 requests,Kubernetes 将使用限制 值作为默认的请求值;
你可以同时指定 limits 和 requests,不过这两个值必须相等。
你不可以仅指定 requests 而不指定 limits。

  • 容器(以及 Pod)之间是不共享 GPU 的。GPU 也不可以过量分配(Overcommitting)。
  • 每个容器可以请求一个或者多个 GPU,但是用小数值来请求部分 GPU 是不允许的。

参考

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

k8s英伟达GPU插件(nvidia-device-plugin) 的相关文章

  • 深度学习(5)--Keras实战

    一 Keras基础概念 Keras是深度学习中的一个神经网络框架 是一个高级神经网络API 用Python编写 可以在TensorFlow CNTK或Theano之上运行 Keras优点 1 允许简单快速的原型设计 用户友好性 模块化和可扩
  • Making Large Language Models Perform Better in Knowledge Graph Completion论文阅读

    文章目录 摘要 1 问题的提出 引出当前研究的不足与问题 KGC方法 LLM幻觉现象 解决方案 2 数据集和模型构建
  • 计算 GPU 上的彩色像素 - 理论

    我有一张 128 x 128 像素的图像 它被分解为 8 x 8 的网格 每个网格块包含 16 x 16 像素 要求 我想计算我的图像包含多少个黑色像素 直接的方法 I could通过逐行 逐列检查整个图像并检查像素是否为黑色来实现此目的
  • 尝试运行 TensorFlow 时 CUDNN_STATUS_NOT_INITIALIZED

    我已经在带有 Cuda 9 0 和 CuDNN 7 0 5 以及普通 Python 2 7 的 Ubuntu 16 04 上安装了 TensorFlow 1 7 尽管它们的 CUDA 和 CuDNN 示例都运行良好 并且 TensorFlo
  • tensorflow gpu仅在CPU上运行

    我在 Windows 10 上安装了 Anaconda Navigator 和所有必需的 Nvidia Cuda 软件包 创建了一个名为 tensorflow gpu env 的新环境 更新了 PATH 信息等 当我运行模型时 使用tens
  • GPU - 系统内存映射

    如何映射系统内存 RAM 以供 GPU 访问 我很清楚虚拟内存如何为 cpu 工作 但不确定当 GPU 访问 GPU 映射的系统内存 主机 时 虚拟内存如何工作 基本上与数据如何从系统内存复制到主机内存以及反之亦然有关 您能提供有参考文章支
  • 有关 CUDA 中统一虚拟寻址 (UVA) 的信息/示例

    我试图理解 CUDA 中统一虚拟寻址 UVA 的概念 我有两个问题 是否有任何示例 伪 代码可以演示这个概念 我在 CUDA C 编程指南中读到 UVA 只能在 64 位操作系统上使用 为什么会这样呢 A 统一虚拟地址空间 http doc
  • 监控显卡使用情况[关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 当我运行某个应用程序时 如何监控显卡的使用情况 我想查看我的应用程序使用 GPU 的情况 如果您在 Visual Studio 201
  • 为什么 nvidia-smi 在 Windows 10 21H2 下的 WSL2 中返回“GPU 访问被操作系统阻止”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在 WSL2 上安装 CUDA 我已按照以下说明在台式机 配备 RTX3080 的 AMD 5950X 系统 和笔记本电脑 配备 i7 7
  • 在 Cython 中使用半精度 NumPy 浮点数

    我正在尝试从一些 Cython 代码将 float16 数据发送到 Nvidia P100 卡 当我使用 float32 时 我可以在 Cython 中定义我的类型 如下所示 DTYPE np float32 ctypedef np flo
  • 某些子网格未使用 CUDA 动态并行执行

    我正在尝试 CUDA 5 0 GTK 110 中的新动态并行功能 我遇到了一个奇怪的行为 即我的程序没有返回某些配置的预期结果 不仅是意外的 而且每次启动都会出现不同的结果 现在我想我找到了问题的根源 似乎当生成太多子网格时 某些子网格 由
  • 带 GPU 的 Lightgbm 分类器

    model lgbm LGBMClassifier n estimators 1250 num leaves 128 learning rate 0 009 verbose 1 使用 LGBM 分类器 现在有没有办法通过 GPU 来使用它
  • CUDA素数生成

    当数据大小增加超过 260k 时 我的 CUDA 程序停止工作 它不打印任何内容 有人能告诉我为什么会发生这种情况吗 这是我的第一个 CUDA 程序 如果我想要更大的素数 如何在 CUDA 上使用大于 long long int 的数据类型
  • 使 CUDA 内存不足

    我正在尝试训练网络 但我明白了 我将批量大小设置为 300 并收到此错误 但即使我将其减少到 100 我仍然收到此错误 更令人沮丧的是 在 1200 个图像上运行 10 epoch 大约需要 40 分钟 有什么建议吗 错了 我怎样才能加快这
  • DirectX 世界视图矩阵乘法 - GPU 或 CPU 的地方

    我是 directx 的新手 但令我惊讶的是 我看到的大多数示例中 世界矩阵和视图矩阵都是作为顶点着色器的一部分相乘 而不是与 CPU 相乘并将结果传递给着色器 对于刚性对象 这意味着您为对象的每个顶点将相同的两个矩阵相乘一次 我知道 GP
  • 无法在 CUDA 中执行设备内核

    我正在尝试在全局内核中调用设备内核 我的全局内核是矩阵乘法 我的设备内核正在查找乘积矩阵每列中的最大值和索引 以下是代码 device void MaxFunction float Pd float max int x threadIdx
  • C# - 获取 GPU 的总使用百分比

    我正在向我的程序添加一些新功能 这些功能当前通过串行连接将 CPU 使用情况和 RAM 使用情况发送到 Arduino 请参阅this https create arduino cc projecthub thesahilsaluja cp
  • Tensorflow:docker 镜像和 -gpu 后缀

    在具有 GPU 支持的 Tensorflow 的 Docker 映像中 例如 tensorflow tensorflow 2 2 0 gpu 安装的python包是tensorflow gpu 如图所示pip freeze 安装任何依赖于的
  • 无法满足显式设备规范“/device:GPU:0”,因为没有匹配的设备

    我想在我的 Ubuntu 14 04 机器上使用 TensorFlow 0 12 作为 GPU 但是 当将设备分配给节点时 我收到以下错误 InvalidArgumentError see above for traceback Canno
  • 如何为 CUDA 内核选择网格和块尺寸?

    这是一个关于如何确定CUDA网格 块和线程大小的问题 这是对已发布问题的附加问题here https stackoverflow com a 5643838 1292251 通过此链接 talonmies 的答案包含一个代码片段 见下文 我

随机推荐

  • 数据降维算法

    文章目录 效果一览 文章概述 部分源码 参考资料 效果一览 文章概述 数据降维算法 Matlab 基于局部费歇尔判别 LFDA 的分类数据降维可视化 部分源码
  • OpenCV Android以及扩展模块opencv_contrib的编译

    OpenCV和OpenCV contrib模块4 5 x版本的编译 环境准备 Ubuntu 16 04 1 环境变量 export ANDROID HOME work android sdk export ANDROID NDK HOME
  • 【allegro 17.4软件操作保姆级教程一】软件操作环境设置

    个人主页 highman110 作者简介 一名硬件工程师 持续学习 不断记录 保持思考 输出干货内容 目录 1操作环境准备 1 1单位设置 1 2画布面积设置 1 3软件显示设置 1 4布局显示设置 1 5格点设置 1 6大十字光标设置 1
  • 什么场景应该用 MongoDB ?

    月初在云栖社区上发起了一个 MongoDB 使用场景及运维管理问题交流探讨 的技术话题 有近5000人关注了该话题讨论 这里就 MongoDB 的使用场景做个简单的总结 谈谈什么场景该用 MongoDB 很多人比较关心 MongoDB 的适
  • 华为OD机试(JAVA)真题 2023(汽水瓶\随机数\进制转换)

    系列文章目录 文章目录 系列文章目录 前言 一 1 汽水瓶 二 明明的随机数 前言 一 1 汽水瓶 某商店规定 三个空汽水瓶可以换一瓶汽水 允许向老板借空汽水瓶 但是必须要归还 小张手上有n个空汽水瓶 她想知道自己最多可以喝到多少瓶汽水 数
  • 运维岗位面试被问到的问题

    一 tcp ip 三次握手具体过程 二 静态路由动态路由里面有哪些协议 三 ip地址分类 四 iptabled 五 linu系统和windows系统的区别 六 linux软连接与硬链接的区别 七 Linux命令 八 如何将一个用户添加到某一
  • cocosCreator 之 ScrollView

    版本 3 4 0 参考 ScrollView组件 简介 ScrollView组件作为滚动容器来使用 它的实现通过ScrollBar组件来展示内容的位置和Mask组件显示指定区域 来保证有限的区域内显示更多的内容 它的构成部分 ScrollB
  • 史上功能最全的Java权限认证框架

    文章目录 Sa Token是什么 Sa Token 能做什么 代码示例 官网地址 sa token 使用示例 SpringBoot 环境 1 创建项目 2 设置jar包依赖 3 配置文件 4 启动类 5 运行 Sa Token是什么 sa
  • LeetCode 101:和你一起你轻松刷题(python版) 第 1 章 题目分类

    LeetCode 101 和你一起你轻松刷题 python版 注 作者 高畅 Chang Gao 原书为c 版本 解题思路清晰 知识点全面 是一本好书 翻译成python版本的解法可能未必是最优解法 由于本人是新手小白 算法实现是第一步 优
  • stm32+lwip(四):网页服务器测试

    ST官方有lwip的例程 下载地址如下 https www st com content st com en products embedded software mcus embedded software stm32 embedded
  • ubuntu 22.04 升级openssh9.4p1 ,openssl3.1.2,zlib1.2.13

    参考 https blog csdn net weixin 37534043 article details 120822689 https blog csdn net xujiamin0022016 article details 878
  • C++设计模式---组合模式

    文章目录 使用场景 组合模式的定义 安全组合模式 使用场景 组合模式和类与类之间的组合是不同的概念 组合模式主要用来处理树形结构的数据 如果要表达的数据不是树形结构 就不太适合组合模式 比如我们有一个目录结构 这个目录我们把它绘制成树形结构
  • python中sha1 md5等用法

    import hashlib sha1 hashlib sha1 sha1 update a encode utf 8 sha1 update b encode utf 8 sha1 update c encode utf 8 等同于 sh
  • Linux下more命令高级用法

    我们在 Linux 环境下工作时 每天肯定会跟各种各样的文本文件打交道 这些文件 有时候会非常长 无法在一屏的空间内显示完全 所以 在查看这种文件时 我们需要分页显示 这时 我们就可以使用 more 命令 more 命令基本用法 more
  • 上传文件至svn

    1 软件管理搜索下载tortoiseSVN 2 在D盘新建一个文件夹 重命名 最好与SVN上要上传的目录名字保持一致 自己取也可以 3 选中文件夹右键点击SVN checkout 弹出框标红的填写XXSVN上的地址 拉取远程仓库的文件 完成
  • 游戏贪吃蛇计分c语言,C语言实现贪吃蛇游戏(命令行)

    这是一个纯C语言写的贪吃蛇游戏 供大家参考 具体内容如下 include include include include include define SNAKE LENGTH 100 定义蛇的最大长度 define SCREEN WIDE
  • C++中的STL中map用法详解

    C 中的STL中map用法详解 Map是STL的一个关联容器 它提供一对一 其中第一个可以称为关键字 每个关键字只能在map中出现一次 第二个可能称为该关键字的值 的数据 处理能力 由于这个特性 它完成有可能在我们处理一对一数据的时候 在编
  • 我们规定对一个字符串的shift操作如下:

    shift ABCD 0 ABCD shift ABCD 1 DABC shift ABCD 2 CDAB 换言之 我们把最左侧的N个字符剪切下来 按序附加到了右侧 给定一个长为n的字符串 我们规定最多可以进行n次向左的循环shift操作
  • itextpdf、freemarker和flying-saucer-pdf实现PDF导出功能

    目录 目录 1 导入maven 2 代码结构 编辑 3 纯文本生成方式 JavaToPdfHtml template html simhei ttf 字体文件自行百度下载 4 基础上加了freemarker模板引擎 JavaToPdfHtm
  • k8s英伟达GPU插件(nvidia-device-plugin)

    安装方法 Installation Guide NVIDIA Cloud Native Technologies documentation 1 本地节点添加 NVIDIA 驱动程序 要求 NVIDIA drivers 384 81 先确保