在AI云原生时代应该如何应对复杂的算力环境

引言

随着在2019年ChatGPT4的爆火,AI这个之前常常被人觉得非常高深的技术渐渐的被越来越多的人们所了解,越来越多的公司、组织和开发者开始投入AI的使用和开发中来.随着AI和LLM的火热,算力资源也变的越来越紧缺,所以如何高效的管理和使用算力资源也变成了必须要面对的问题。

因为当前模型的微调、推理以及AI应用的开发过程更加符合云原生的特点,越来越多的公司决定将自己的计算任务放到Kubernetes(下称K8S)上进行。根据OpenAI的官方博客介绍ChatGPT也是使用云原生技术支持模型训练的。官方表示OpenAI已经将K8S集群扩展到了7500个节点,为GPT3,DALL.E等模型提供了可扩展的基础性,同时也为小模型小规模的快速迭代研究提供了基础。这也为AI相关技术的落地提供了参考,越来越多的公司选择将自己的计算任务放到K8S上运行。

而在国内因为特殊情况,当前的的计算设备则具有型号种类多、算力差异大等特点,这些特点彰显了当前的算力环境的复杂,因此如何在K8S上管理、使用如此复杂的算力环境则成为了一个巨大的挑战。

当前AI落地场景

目前在AI落地的不同场景,使用算力资源的场景总体可以分为三个大类,分别是针对大模型的预训练和针对预训练模型的微调的训练场景,以及在模型部署场景中则主要针对训练后模型的推理场景,而目前最多的场景则是针对大模型的应用开发场景,如RAG,Agent等。

而在这三个大类型的不同场景中我们对算力的使用也是不尽相同的,如在训练场景中,我们则往往需要更多的算力也就是更多的卡去并行的训练模型,而在推理场景中我们则更关心的是,我们可能更关系推理服务的稳定和可扩展性,而在应用开发的场景我们则对算力需求比较小,往往仅在使用Embeding、Rerank等小模型时使用小量的算力。

在训练场景中,我们可能会遇到两种情况,分别是算力卡单卡资源不足需要多卡分布式训练的情况,或者单卡资源充足但是进行小参数模型的LoRA微调使用的资源较小的情况。

分布式训练场景

图片

单卡微调场景

图片

在推理场景中,我们仍然可能需要面对的是单卡推理或者分布式推理的场景,以及弹性的扩容推理服务。

单卡推理场景

图片

**
**

多卡推理场景

图片

在AI应用的开发中,使用计算资源的部分往往是小的Embeding、Rerank以及OCR等模型,这种模型往往使用的资源较小,通常无法占满一张卡的全部资源。

AI应用,小模型场景

图片

除了列举的几种情况外,还会有其他更多复杂的情况如多机多卡的推理/训练等场景。在针对不同的使用场景时如何更加精确的按需去管理算力资源则又是一个我们必须要必须要面对的问题。

算力卡现状

国际主流GPU厂商

  1. 英伟达:以CUDA编程环境和GPU计算平台称雄,其卓越的FP32单双精度浮点性能及AI运算能力,使其在AI训练和高性能计算领域独占鳌头。

  2. AMD:Radeon系列GPU在游戏市场与英伟达分庭抗礼,同时,AMD推出Instinct系列加速卡,以卓越的计算力和能效比,领跑AI训练和推理领域。

  3. 英特尔:深耕独立GPU市场,推出基于Xe架构的高性能GPU,在集成GPU领域领先。

  4. 谷歌:TPU(张量处理单元)是专为AI和机器学习优化的ASIC,在TensorFlow框架中显著提升了深度学习训练和推理效率。

国内主流GPU厂商

  1. 海光信息:CPU与DCU产品融合通用计算与特定领域加速,安全性能卓越。

  2. 芯动科技:“风华”系列GPU,像素填充率与AI性能直逼国际标杆。

  3. 摩尔线程:推出春晓、苏堤芯片,同时推出了AI模型以及智算中心。

  4. 华为海思:推出ASIC产品系列,包括昇腾AI芯片,专为人工智能计算设计。

  5. 寒武纪:AI芯片设计翘楚,ASIC产品深度学习领域领先,神经网络计算优化架构,高效运行各类AI算法。

当前的现状

在早起的时候K8S官方并未将GPU等算力资源作为默认支持的资源的一种,推测是因为在早起的设计之初K8S是为容器服务提供编排能力更加关心CPU和内存的使用情况,并且大部分的服务并不适用GPU资源,所以官方并没有考虑GPU资源的控制。

而随着K8S在v1.6开始实验性质的支持英伟达的GPU资源调度而从v1.9开始对AMD GPU也开始支持了,当前市面上的一些组件是从v1.8开始通过Device Plugin的方式来实现,而各个厂商为了自家的GPU能够在K8S上被调度使用也分别开发了属于自己的Device Plugin,例如在K8S官方的调度GPU章节分别举例了AMD,Intel和NVIDIA的3家厂商的插件,同时国内的华为昇腾也提供了MindX DL套件来支持Atlas训练推理卡在K8S上的调度管理支持。虽然已经有了很多计算资源的调度方案,但是由于厂家不同,各个方案也被厂家分别维护,同时官方支持的Device Plugin往往不能够支持GPU的资源隔离和资源共享等功能,导致在使用时往往会造成GPU资源分配不合理从而导致浪费情况。

图片

而为了解决这些情况,越来越多的第三方厂商开始对GPU资源的调度进行适配开发,如阿里开发的GPUShare方案、腾讯的vGPU方案以及华为的Volcano方案,都对调度GPU资源进行了支持,但是这些方案往往还是不能满足复杂场景的需求.

而在公有云上各个厂商推出了更加优秀的GPU资源调度方案, 例如阿里云的cGPU,腾讯云的qGPU等方案,这些方案往往能够在更加底层的维度去管理计算资源,但是由于这些方案往往是厂商的在售的方案所以大部分并未开源.

那么为了能够满足资源共享,资源隔离等需求,这里推荐云原生计算资源管理组件HAMI,他能够满足大部分场景,并且适配了很多国产的计算资源,能够为更多的国产化场景提供有力的支持.并且已经加入了CNCF云原生基金会的景观图中.

HAMI

HAMI是一个云原生的K8S异构计算资源设备插件,它可以兼容原生的NVIDIA的设备插件的字段以及K8S的调度器,同时支持多种计算设备,包括国产的华为NPU,寒武纪MLU等计算设备。

HAMI通过接入不同厂商的docker-runtime以及Device Plugin,在更上层进行统一管理,抹平不同设备的调度差异,从而实现不同设备的统一调度。同时通过自己开发的HAMI Core实现对GPU的细粒度划分。

图片

显卡支持

图片

功能

设备共享 : 每个任务可以分配设备的一部分而不是整个设备,从而允许多个任务共享一个设备.

设备内存控制 : 可以为设备分配特定的设备内存大小或者整个GPU的百分比,确保其不超过指定的边界.

设备类型规范 : 可以通过设置注释来制定针对特定任务的要使用或者避免的设备类型.

设备uuid规范: 可以通过设置注释来制定要使用或者避免用于特定任务的设备UUID

易于使用: 无需修改任务的配置即可使用调度程序,安装后自动支持,也可以指定nvidia之外的资源

调度策略支持: 支持节点级和GPU级策略,可以通过调度参数默认设置,并且两个维度都支持两种策略:binpackspread

应用场景

  1. K8S上的计算设备共享

  2. 需要为pod分配特定的设备内容

  3. 需要在具有多个GPU节点的集群中平衡GPU的使用情况

  4. 设备内存和计算单元的利用率低,例如子一个GPU上运行多个TensorFlow服务

  5. 需要大量小型GPU的情况,例如提供一块GPU供多名学生使用的教学场景、提供小型GPU实例的云平台等

HAMI实践

安装

可以使用Helm命令行快速安装

```helm repo add hami-charts https://project-hami.github.io/HAMi/kubectl versionhelm install hami hami-charts/hami --set scheduler.kubeScheduler.imageTag=v1.16.8 -n kube-system```

使用

按照大小分配具体显存

```resources:        limits:          nvidia.com/gpu: 1 # requesting 1 GPU          nvidia.com/gpumem: 3000 # Each GPU contains 3000m device memory```

按照核数分配

```resources:        limits:          nvidia.com/gpu: 1 # requesting 1 GPU          nvidia.com/gpucores: 50 # Each GPU allocates 50% device cores.```

指定设备的型号

```metadata:  annotations:    nvidia.com/use-gputype: "A100,V100" # Specify the card type for this job, use comma to seperate, will not launch job on non-specified card```

按照id指定设备

```metadata:  annotations:    nvidia.com/use-gpuuuid: "GPU-123456"```

支持寒武纪设备

```apiVersion: v1kind: Podmetadata:  name: gpu-podspec:  containers:    - name: ubuntu-container      image: ubuntu:18.04      command: ["bash", "-c", "sleep 86400"]      resources:        limits:          cambricon.com/mlunum: 1 # requesting 1 MLU          cambricon.com/mlu.smlu.vmemory: 20 # each MLU requesting 20% MLU device memory          cambricon.com/mlu.smlu.vcore: 10 # each MLU requesting 10% MLU device core```

支持昇腾910B设备

```apiVersion: v1kind: Podmetadata:  name: gpu-podspec:  containers:    - name: ubuntu-container      image: ascendhub.huawei.com/public-ascendhub/ascend-mindspore:23.0.RC3-centos7      command: ["bash", "-c", "sleep 86400"]      resources:        limits:          huawei.com/Ascend910: 1 # requesting 1 vGPUs          huawei.com/Ascend910-memory: 2000 # requesting 2000m device memory```

总结

目前的算力环境仍然已英伟达的GPU设备为主,但是目前也有很多厂商的设备在被使用,虽然其中主流厂商都有提供自己的卡在K8S上的调度支持,但是这些厂商方案往往比较基础,通常需要按照卡的数量进行调度而没办法进行更细粒度的调度,导致很多计算资源被浪费,HAMI基于这些厂商的开源方案进行集成,主要在使用劫持CUDA的方案来实现计算设备的共享、隔离,在插件层使用一个方案集成多种计算资源.

目前HAMI在实现设备资源隔离时使用的是在CUDA层进行劫持,会深度依赖CUDA,当CUDA发布新版本有更新如果存在增加功能或者接口变更,则可能导致不可用.更优的方案是类似阿里云上的cGPU在内核层面进行劫持实现,但是由于壁垒、法律等诸多问题阿里的cGPU或者腾讯的qGPU开源的开源的可能性较小.

同时由于显卡市场的发展,越来越多厂家推出更多显卡设备导致当前上设备种类繁多,目前HAMI支持的显卡型号虽然已经很多了,但是仍有大量的显卡不支持,这也为异构计算集群的搭建产生了巨大的挑战.

相信未来随着算力市场的发展,最终会形成一套标准的框架,来屏蔽软件到硬件之间的差异,到时异构计算集群组建将不在是难题.

那么,我们该如何学习大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一、大模型全套的学习路线

学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。

L1级别:AI大模型时代的华丽登场

L2级别:AI大模型API应用开发工程

L3级别:大模型应用架构进阶实践

L4级别:大模型微调与私有化部署

一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。

以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/26368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue2动态路由实现

实现一个简单的动态路由&#xff1a; 1、先定义菜单页面组件的结构&#xff0c;使用的是elementUI的NavMenu 导航菜单 <template><div><el-menu default-active"1" router><el-submenu :index"item.path" v-for"item in menu_…

借助大语言模型快速学习金仓数据库 KES

基础概念 KES 人大金仓数据库管理系统 KingbaseES&#xff08;KES&#xff09; 是由 北京人大金仓信息技术股份有限公司 (以下简称“人大金仓”)自主研发的面向全行业、全客户关键应用的企业级大型通用数据库管理系统。产品融合了人大金仓在数据库领域几十年的产品研发和企业级…

TiKV 源码分析之 PointGet

作者&#xff1a;来自 vivo 互联网存储研发团队-Guo Xiang 本文介绍了TiDB中最基本的PointGet算子在存储层TiKV中的执行流程。 一、背景介绍 TiDB是一款具有HTAP能力(同时支持在线事务处理与在线分析处理 )的融合型分布式数据库产品&#xff0c;具备水平扩容或者缩容等重要特…

Python写UI自动化--playwright(安装)

Playwright是微软推出的开源自动化测试工具&#xff0c;专为跨浏览器端到端测试设计。Playwright可以在多个浏览器引擎上运行测试&#xff0c;包括基于Chromium的浏览器&#xff08;如Chrome、Edge&#xff09;、Firefox和WebKit&#xff08;Safari的技术基础&#xff09;。支持…

标星好多好多k,这2个开源项目绝了!

在这个信息爆炸的世代&#xff0c;不妨让我给大家精选并介绍一些优质的开源项目&#xff0c;让大家感受到开源世界的美好。 我的数据我做主 每个人的微信聊天记录里都藏着无数珍贵的回忆和秘密。如果有一个宝盒&#xff0c;能够帮你把这些记忆永久保存&#xff0c;甚至让它们活…

新加坡裸机云多IP服务器为何适合跨境外贸业务

新加坡裸机云多IP服务器在跨境外贸业务中展现出了卓越的适配性&#xff0c;其独特优势为外贸企业提供了强大的支持。以下将详细阐述为何新加坡裸机云多IP服务器是跨境外贸业务的理想选择。 首先&#xff0c;新加坡裸机云多IP服务器在性能上表现出色。由于去除了虚拟化层的开销&…

大数据在商业中的应用——Kompas.ai如何助力企业决策

引言 在现代商业中&#xff0c;大数据逐渐成为企业决策的重要工具。通过对海量数据的分析和处理&#xff0c;企业可以获得重要的市场信息和决策支持。本文将探讨大数据在商业中的应用&#xff0c;并介绍Kompas.ai如何通过AI技术助力企业决策。 大数据的发展及其重要性 大数据…

为什么要学习Flink系统管理及优化课程?

Flink系统是一种流式处理框架&#xff0c;能够高效地处理大规模数据流。然而&#xff0c;要确保Flink系统的正常运行&#xff0c;就需要进行系统管理和优化。系统管理是指对Flink集群的监控、调度和维护&#xff0c;而系统优化则是指通过调整参数和优化算法&#xff0c;提高Fli…

Anime Girls Pack

动漫女孩包 35个动画&#xff08;就地&#xff09;支持人形。 8情绪。 角色列表&#xff1a;原艾艾琪惠美子惠理文子星薰和子佳子奈子理子凛老师小樱老师津雨僵尸女孩01 下载&#xff1a;​​Unity资源商店链接资源下载链接 效果图&#xff1a;

[vue2]深入理解路由

本节目标 单页应用程序路由概念VueRouter基本使用组件分类存放路由模块封装声明式导航其他路由配置路由模式编程式导航案例-面经基础版 单页应用程序 单页应用程序(SPA): 所有的功能都在一个HTML页面上实现 网易云音乐: 网易云音乐 多页应用程序(MPA): 不同功能通过切换不同…

Kotlin 协程真的轻量吗?

前言 在官方文档的介绍中,提到了: 协程是轻量的 并给出了一个例子: fun main() = runBlocking {repeat(50_000) {// 启动大量的协程launch {delay

计算机网络之网络层知识总结

网络层功能概述 主要任务 主要任务是把分组从源端传到目的端&#xff0c;为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。 分组和数据报的关系&#xff1a;把数据报进行切割之后&#xff0c;就是分组。 主要功能&#xff1a; 路由选择与分组转发 路由器…

5-1RT-Thread互斥量

5-1RT-Thread互斥量 互斥量斥量的管理方式 互斥量 互斥量又称为互斥型信号量&#xff0c;是一种特殊的二值信号量。以超市的储物柜为例&#xff0c;当用户A存入物品并关闭柜门&#xff0c;则用户A就获得了此格柜子的使用权。此时其他用户无法使用此个柜子&#xff0c;只有当用户…

vue3中用setup写的数据,不能动态渲染(非响应式)解决办法

相比于2.0&#xff0c;vue3.0在新增了一个setup函数&#xff0c;我们在setup中可以写数据也可以写方法&#xff0c;就像我们以前最开始学习js一样&#xff0c;在js文件中写代码。 For instance <template><div class"person"><h2>姓名&#xff1…

Python对象序列化库之dill使用详解

概要 在 Python 编程中,序列化(Serialization)和反序列化(Deserialization)是处理对象持久化和数据传输的常见任务。Python 提供了内置的 pickle 模块用于对象序列化,但它在处理复杂对象(如带有 lambda 函数、生成器和闭包的对象)时存在一定局限性。dill 库是 pickle …

博客摘录「 AXI三种接口及DMA DDR XDMA介绍(应用于vivado中的ip调用)」2024年6月10日

关键要点&#xff1a; 1.AXI Stream经过协议转换可使用AXI_FULL&#xff08;PS与PL间的接口&#xff0c;如GP、HP和ACP&#xff09;。 2.传输数据类里就涉及一个握手协议&#xff0c;即在主从双方数据通信前&#xff0c;有一个握手的过程。基本内容&#xff1a;数据的传输源会…

浅谈配置元件之HTTP请求默认值

浅谈配置元件之HTTP请求默认值 在进行HTTP请求的测试计划设计时&#xff0c;"HTTP请求默认值"配置元件扮演着极其重要的角色&#xff0c;它能够简化测试计划的设置&#xff0c;提高测试效率。本问将详细介绍如何使用JMeter中的“HTTP请求默认值”配置元件。 HTTP请求…

rocketmq-5.1.2的dleger高可用集群部署

1、背景 原先为5.0.0版本&#xff0c;因检查出有漏洞&#xff0c;升级到5.1.2版本。 【Rocketmq是阿里巴巴在2012年开发的分布式消息中间件&#xff0c;专为万亿级超大规模的消息处理而设计&#xff0c;具有高吞吐量、低延迟、海量堆积、顺序收发等特点。在一定条件下&#xf…

天锐绿盾 | 无感知加密软件、透明加密系统、数据防泄漏软件

摘要&#xff1a;文件加密软件,包含禁止非授权的文件泄密和抄袭复制解决方案即使被复制泄密都是自动加密无法阅读,透明加密,反复制软件,内网监控,文件加密,网络安全方案,透明文件加密,加密文件,图纸加密,知识产权保护,加密数据; 通过绿盾信息安全管理软件&#xff0c;系统在不改…

3D线扫相机中的深度数据与激光反射强度数据获取及其应用

1. 引言 3D线扫相机&#xff08;3D line scan camera&#xff09;是一种高精度的三维测量设备&#xff0c;广泛应用于工业自动化、质量控制和精密测量等领域。与传统二维成像相机不同&#xff0c;3D线扫相机能够同时获取物体的深度信息和反射强度信息&#xff0c;从而为高精度…