Kubernetes必备知识: GPU管理机制

简介: GPU全称是Graphics Processing Unit,图形处理单元。它的功能最初与名字一致,是专门用于绘制图像和处理图元数据的特定芯片,后来渐渐加入了其它很多功能。

所属技术领域:

Kubernetes

|名词定义|

GPU全称是Graphics Processing Unit,图形处理单元。它的功能最初与名字一致,是专门用于绘制图像和处理图元数据的特定芯片,后来渐渐加入了其它很多功能。

|发展历程|

1 .NV GPU发展史
以下是GPU发展节点表:
1995 – NV1
1997 – Riva 128 (NV3), DX3
1998 – Riva TNT (NV4), DX5
1999 - GeForce 256(NV10)
2001 - GeForce 3
2003 - GeForce FX系列(NV3x)
2004 - GeForce 6系列 (NV4x)
2006 - GeForce 8系列 (G8x)
2010 - GeForce 405(GF119)
2014 - GeForceGT 710(GK208)
2018 - TITAN RTX(TU102)

  1. NV GPU架构发展史
    • Tesla

2010 - Fermi
2012 - Kepler
2014 - Maxwell
2016 - Pascal
2017 - Volta
2018 - Turing

|技术特点|

 如何在容器环境内运行 GPU 应用。
主要分为两步:
1.构建支持 GPU 的容器镜像;
2.利用 Docker 将该镜像运行起来,并且把 GPU 设备和依赖库映射到容器中。
 GPU 容器镜像原理
要了解如何构建 GPU 容器镜像,先要知道如何要在宿主机上安装 GPU 应用。
如下图左边所示,最底层是先安装 Nvidia 硬件驱动;再到上面是通用的 Cuda 工具库;最上层是 PyTorch、TensorFlow 这类的机器学习框架。
上两层的 CUDA 工具库和应用的耦合度较高,应用版本变动后,对应的 CUDA 版本大概率也要更新;而最下层的 Nvidia 驱动,通常情况下是比较稳定的,它不会像 CUDA 和应用一样,经常更新。

同时 Nvidia 驱动需要内核源码编译,如上图右侧所示,英伟达的 GPU 容器方案是:在宿主机上安装 Nvidia 驱动,而在 CUDA 以上的软件交给容器镜像来做。同时把 Nvidia 驱动里面的链接以 Mount Bind 的方式映射到容器中。
这样的一个好处是:当你安装了一个新的 Nvidia 驱动之后,你就可以在同一个机器节点上运行不同版本的 CUDA 镜像了。
 4. 如何利用容器运行 GPU 程序
有了前面的基础,我们就比较容易理解 GPU 容器的工作机制。下图是一个使用 Docker 运行 GPU 容器的例子。

我们可以观察到,在运行时刻一个 GPU 容器和普通容器之间的差别,仅仅在于需要将宿主机的设备和 Nvidia 驱动库映射到容器中。
上图右侧反映了 GPU 容器启动后,容器中的 GPU 配置。右上方展示的是设备映射的结果,右下方显示的是驱动库以 Bind 方式映射到容器后,可以看到的变化。
通常大家会使用 Nvidia-docker 来运行 GPU 容器,而 Nvidia-docker 的实际工作就是来自动化做这两个工作。其中挂载设备比较简单,而真正比较复杂的是 GPU 应用依赖的驱动库。
对于深度学习,视频处理等不同场景,所使用的一些驱动库并不相同。这又需要依赖 Nvidia 的领域知识,而这些领域知识就被贯穿到了 Nvidia 的容器之中。

|资料来源|

名词定义:https://www.cnblogs.com/timlly/p/11471507.html#gpu历史
技术特点:https://www.cnblogs.com/timlly/p/11471507.html#gpu历史

相关实践学习
通过ACR快速部署网站应用
本次实验任务是在云上基于ECS部署Docker环境,制作网站镜像并上传至ACR镜像仓库,通过容器镜像运行网站应用,网站运行在Docker容器中、网站业务数据存储在Mariadb数据库中、网站文件数据存储在服务器ECS云盘中,通过公网地址进行访问。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
弹性计算 人工智能 Serverless
阿里云ACK One:注册集群云上节点池(CPU/GPU)自动弹性伸缩,助力企业业务高效扩展
在当今数字化时代,企业业务的快速增长对IT基础设施提出了更高要求。然而,传统IDC数据中心却在业务存在扩容慢、缩容难等问题。为此,阿里云推出ACK One注册集群架构,通过云上节点池(CPU/GPU)自动弹性伸缩等特性,为企业带来全新突破。
|
4月前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
431 1
|
4月前
|
弹性计算 监控 调度
ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
303 89
|
4月前
|
Kubernetes 调度 异构计算
Kubernetes集群中,部分使用GPU资源的Pod出现UnexpectedAdmissionError问题的解决方案。
如果在进行上述检查之后,问题依然存在,可以尝试创建一个最小化的Pod配置,仅请求GPU资源而不
313 5
|
10月前
|
缓存 并行计算 PyTorch
PyTorch CUDA内存管理优化:深度理解GPU资源分配与缓存机制
本文深入探讨了PyTorch中GPU内存管理的核心机制,特别是CUDA缓存分配器的作用与优化策略。文章分析了常见的“CUDA out of memory”问题及其成因,并通过实际案例(如Llama 1B模型训练)展示了内存分配模式。PyTorch的缓存分配器通过内存池化、延迟释放和碎片化优化等技术,显著提升了内存使用效率,减少了系统调用开销。此外,文章还介绍了高级优化方法,包括混合精度训练、梯度检查点技术及自定义内存分配器配置。这些策略有助于开发者在有限硬件资源下实现更高性能的深度学习模型训练与推理。
1963 0
|
存储 Kubernetes 对象存储
部署DeepSeek但GPU不足,ACK One注册集群助力解决IDC GPU资源不足
借助阿里云ACK One注册集群,充分利用阿里云强大ACS GPU算力,实现DeepSeek推理模型高效部署。
|
12月前
|
边缘计算 调度 对象存储
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
介绍如何使用ACK Edge与虚拟节点满足DeepSeek部署的弹性需求。
|
12月前
|
存储 Kubernetes 对象存储
部署DeepSeek但GPU不足,ACK One注册集群助力解决IDC GPU资源不足
部署DeepSeek但GPU不足,ACK One注册集群助力解决IDC GPU资源不足
354 3
|
12月前
|
边缘计算 调度 对象存储
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
288 0
|
12月前
|
存储 Kubernetes 对象存储
部署 DeepSeek 但 GPU 不足,ACK One 注册集群助力解决 IDC GPU 资源不足
部署 DeepSeek 但 GPU 不足,ACK One 注册集群助力解决 IDC GPU 资源不足