论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
容器及微服务
›
容器及微服务
›
Kubernetes GPU 虚拟化方案
Kubernetes GPU 虚拟化方案
王海鱼
金牌会员
|
2025-1-9 16:09:30
|
显示全部楼层
|
阅读模式
楼主
主题
824
|
帖子
824
|
积分
2472
主流架构
Device Plugin:K8s订定装备插件接口规范,定义异构资源的上报和分配,装备厂商只必要实现相应的API接口,无需修改kubelet源码即可实现对其他硬件装备的支持。
Extended Resource:Scheduler可以根据Pod的创建删除计算资源可用量,而不再范围于CPU和内存的资源统计,进而将有特殊资源需求的Pod调度到相应的节点上。
通过Device Plugin 异构资源调度流程如下:
Device plugin 向kubelet上报当前节点资源情况
用户通过yaml文件创建负载,定义Resource Request
kube-scheduler根据从kubelet同步到的资源信息和Pod的资源请求,为Pod绑定符合的节点
kubelet监听到绑定到当前节点的Pod,调用Device plugin的allocate接口为Pod分配装备
kubelet启动Pod内的容器,将装备映射给容器
GPU虚拟化方案大致分为用户态隔离和内核态隔离:
用户态主要是通过vcuda的方式,挟制cuda调用,比如下面介绍的两种开源
内核态主要是用过虚拟gpu驱动的方式,比如腾讯云的qgpu和阿里云的cgpu,不过这两个都是闭源的
Nvidia-GPU
NVIDIA 提供的 Time-Slicing GPUs in Kubernetes 是一种通过 oversubscription(超额订阅) 来实现 GPU 共享的计谋,有两种计谋,单卡调度模式和超卖模式。
单卡的意思就是一个Pod调度一张GPU,当这个GPU有Pod使用了,就不可被其他Pod使用。
超卖模式这种计谋能让多个任务在同一个 GPU 上进行,而不是每个任务都独占一个 GPU。Time Slicing(时间片)指的是 GPU 自己的时间片调度。
也就是说假如有两个进程同时使用同一个GPU,两个进程同时把 CUDA 任务发射到 GPU 上去,GPU 并不会同时实行,而是采用时间片轮转调度的方式。
进程和进程间的显存和算力没有任何限制,谁抢到就是谁的。
腾讯GPU-manager
基于Nvidia的k8s Device Plugin 实现
GPUManager
是腾讯自研的容器层GPU虚拟化方案,除兼容Nvidia 官方插件的GPU资源管理功能外,还增加碎片资源调度、GPU调度拓扑优化、GPU资源Quota等功能,在容器层面实现了GPU资源的化整为零,而在原理上仅使用了wrap library和linux动态库链接技能,就实现了GPU 算力和显存的上限隔离。
在工程设计上,GPUManager方案包括三个部分,cuda封装库vcuda、k8s device plugin 插件gpu-manager-daemonset和k8s调度插件gpu-quota-admission。
vcuda库是一个对nvidia-ml和libcuda库的封装库,通过挟制容器内用户程序的cuda调用限制当前容器内进程对GPU和显存的使用。
gpu-manager-daemonset是尺度的k8s device plugin,实现了GPU拓扑感知、装备和驱动映射等功能。GPUManager支持共享和独占两种模式,当负载里tencent.com/vcuda-core request 值在0-100情况下,采用共享模式调度,优先将碎片资源集中到一张卡上,当负载里的tencent.com/vcuda-core request为100的倍数时,采用独占模式调度,必要注意的是GPUManager仅支持0~100和100的整数倍的GPU需求调度,无法支持150,220类的非100整数倍的GPU需求调度。
gpu-quota-admission是一个k8s Scheduler extender,实现了Scheduler的predicates接口,kube-scheduler在调度tencent.com/vcuda-core资源请求的Pod时,predicates阶段会调用gpu-quota-admission的predicates接口对节点进行过滤和绑定,同时gpu-quota-admission提供了GPU资源池调度功能,办理不同类型的GPU在namespace下的配额问题。
方案优点:
同时支持碎片和整卡调度,提高GPU资源利用率
支持同一张卡上容器间GPU和显存的使用隔离
基于拓扑感知,提供最优的调度计谋
对用户程序无侵入,用户无感
方案缺点:
驱动和加速库的兼容性依靠于厂商
存在约5%的性能消耗
此项目腾讯云官方已不再支持,社区也处在无人维护状态,亲测cuda12有问题,调用报错
HAMi
HAMi
可为多种异构装备提供虚拟化功能,支持装备共享和资源隔离。
支持的装备:
HAMi 由多个组件组成,包括统一的 mutatingwebhook、统一的调度器扩展器、不同的装备插件以及针对每种异构 AI 装备的容器内虚拟化技能。
https://github.com/Project-HAMi/HAMi/tree/master
能力:
支持碎片、整卡、多卡调度隔离,支持按量或者按百分比调度隔离
支持指定目标卡型
支持指定目标卡
目前该项目非常活跃,而且支持的cuda版本也比力友爱,
>10.1
原文地点:
https://leason.top/Kubernetes-GPU-虚拟化方案.html#more
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
王海鱼
金牌会员
这个人很懒什么都没写!
楼主热帖
如何在 Vue 3 中使用<script lang=“t ...
在Winform开发中,使用Async-Awati异步 ...
Vue 和 Django 前后端分离实践 (注册 ...
一条SQL的执行原理
go中 for循环的坑
C#依赖注入(直白明了)讲解 一看就会系 ...
银河麒麟V10安装达梦数据库DM8 ...
clickhouse的稀疏索引
2023大数据面试总结
Vulnhub之Monkeybox详细测试过程(不同 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表