使用Karpenter通过时间切片管理GPU节点

本文介绍了如何使用Karpenter在Kubernetes中管理GPU节点,通过NVIDIA k8s插件实现GPU时间切片,降低云服务成本。作者详细阐述了架构设计、部署步骤和配置细节,旨在提供一种更经济、灵活的GPU资源调度方案。
摘要由CSDN通过智能技术生成

79fe253f2333f1a438d16b941feaa486.png

导语

在机器学习领域,我们经常使用 GPU 来加速计算工作负载。但现在的企业和开发者都更热衷于“上云”。有了云计算,使用云服务,用多少付多少,也就能降低运营成本了。

当你拥有数十个在不同时间段需要用到 GPU 的应用程序时,怎么以更低成本,怎么更灵活地在云服务器中调度资源,就会变成一件非常重要的事情。 

作者介绍

Jina AI 云架构研发工程师陶然

问题

那么,如何优化云服务中 GPU 的使用成本呢?在使用虚拟机时,哪怕你不需要全天候的服务,你也必须持续为所有的设备付费。相比于虚拟机,容器拥有更高的资源使用效率,作为容器界的扛把子,kubernetes 提供了弹性的节点缩放方式。

因为我使用的是 Amazon EKS,所以本文选择了 Karpenter 作为节点缩放器。Karpenter 是一个为 Kubernetes 构建的开源自动扩缩容项目,你可以通过此 文档[1] 了解更多关于 Karpenter 的信息。

想要管理多个 GPU 节点,还需要用到 NVIDIA 的 k8s 插件[2]。这是一个 Daemonset(守护进程),提供了以下自动化的功能:

  • • 公开集群每个节点上的 GPU 数量

  • • 实时追踪 GPU 的运行状况

  • • 在 Kubernetes 集群中运行启用 GPU 的容器

除此之外,它还支持 时间切片[3],使得用户可以在 Pod (Kubernetes 的最小调度对象)之间共享 GPU,从而节省成本。

Karpenter 本身也为节点提供了自动缩放功能,也就是说,只有在需要算力时,才会创建 GPU 实例,并且可以根据实际需求修改应用实例的调度规则。除了降低成本之外,也能更灵活地把 GPU 资源调度到 kubernetes 集群中的应用程序。

架构

97f6e31055d867aa9c51761fc60be1d0.jpeg

基础架构

0b227c80734060f68c4e6a927846c1a1.png

组件

这个架构非常简单易懂:应用程序选择了一个带有选择器(selector)的 karpenter 制备器(provisioner),接着,karpenter 制备器根据启动模板创建节点。

部署

接下来最重要的问题是如何去部署它,仍有一些细节需要考虑清楚:

  • • 如何将 NVID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值