Kubernetes v1.13 对 GPU 的支持
时间:2022-07-22
本文章向大家介绍Kubernetes v1.13 对 GPU 的支持,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Kubernetes 是从 v1.6 开始实验性地支持 Nvidia GPU 的资源调度的。而在 v1.9 开始对 AMD GPU 也开始支持了。现在 v1.13 对 GPU 的支持模式,是从 v1.8 开始通过 Device Plugin 来实现的。
鉴于 Kubernetes 支持越来越多不同类型硬件的资源管理和调度了,所以抽象一个 Device Plugin 是非常合理的,现在比如 InfiniBand 等支持 RDMA 协议的高性能网卡也可以通过 Device Plugin 来实现调度了,作为深度学习的基础设施,这是非常有利的。
关于 Nvidia GPU 的调度,网上的资料比价多,而实际上,目前大部分公司的 GPU 设备也都是来自 Nvidia 的 GPU,所以本文就 AMD GPU 简单介绍一下。
https://github.com/RadeonOpenCompute/k8s-device-plugin
关于 ROCm,可以参考官网,简单解释一下,就是一个通用的多 GPU 计算平台,抽象的这一层,可以让用户无需关注硬件是使用 AMD 哪种制式的 GPU。
- 服务器可以支持 ROCm
- kubeadm 部署的集群是可以的
- 服务器安装了 ROCm 内核和最新的 AMD GPU Linux 的驱动
-
--allow-privileged=true
开启
相对于 Nvidia GPU 的资源名 nvidia.com/gpu
,AMD GPU 的资源名是 amd.com/gpu
。
apiVersion: v1
kind: Pod
metadata:
name: alexnet-tf-gpu-pod
labels:
purpose: demo-tf-amdgpu
spec:
containers:
- name: alexnet-tf-gpu-container
image: rocm/tensorflow:latest
workingDir: /root
env:
- name: HIP_VISIBLE_DEVICES
value: "0" # # 0,1,2,...,n for running on GPU and select the GPUs, -1 for running on CPU
command: ["/bin/bash", "-c", "--"]
args: ["python3 benchmarks/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py --model=alexnet; trap : TERM INT; sleep infinity & wait"]
resources:
limits:
amd.com/gpu: 1 # requesting a GPU
- Java后端WebSocket的Tomcat实现
- jwplayer 隐藏属性方法记载
- TensorFlow从0到1丨开篇:Hello TensorFlow !
- JS原型继承和类式继承
- 在Servlet的init方法中创建线程
- TensorFlow从0到1丨第2篇:TensorFlow核心编程
- AngularJS中的按需加载ocLazyLoad
- AngularJS driective 封装 自动滚动插件
- java类过滤器,防止页面SQL注入
- Web项目添加Maven支持
- Jquery 获取第一个子元素
- Dropwizard框架入门
- Java 解析Excel文件为JSON
- SQL语句大小写是否区分的问题,批量修改整个数据库所有表所有字段大小写
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 极客算法训练笔记(三),链表详细图解,别再逃避了朋友
- 我就感觉到快 —— zsh 和 oh my zsh 冷启动速度优化
- equals和HashCode深入理解(转)
- LeetCode18|排序链表
- LeetCode17|删除链表的节点
- LeetCode16|两数相加
- 12-2 提示符添加颜色及光标移动
- Redux入门实战——todo-list2.0实现
- 29.Python的集合
- 性能分析(4)- iowait 使用率过高案例
- swagger (GO) API文档工具入门
- 流媒体协议RTSP视频平台EasyNVR录像回看列表删除提示日期错误,遇此问题该怎么解决?
- Azure认知服务之表格识别器
- [Go]go语言实战-go版本的supervisord编译安装与运行
- Kafka2.6.0发布——性能大幅提升