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

news2024/12/27 13:50:18

引言

随着在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.coloradmin.cn/o/1820915.html

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

相关文章

13. 第十三章 案例研究-选择数据结构

13. 案例研究-选择数据结构 到这里尼应该已经学会了Python的核心数据结构, 也见过了一些使用它们的算法. 如果你想要更多地了解算个发可以阅读第21章. 本章配合联系介绍一个案例分析, 帮你思考如何选择数据结构并如何使用它们.13.1 单词频率分析 1. 练习1 编写一个程序, 读入…

【C语言函数实现节选1】

前言: 通过前面的博客,C语言基本知识基本上我已给大家分享完成!接下来我会通过两篇博客结 合前面的知识实现一下常见的函数。实现方式不唯一,大家只要大体思路符合都是可以的,在学习 的过程中尽量自己先实现&#xf…

安装VM虚拟机并创建一个Linux CentOS 7无桌面系统

一、安装vm虚拟机软件 1 下载vm压缩包 百度网盘链接 链接:https://pan.baidu.com/s/1ipiWatBr0wHKMt5c5nQirw?pwdwoy2 提取码:woy2 2.下载完毕后,先将杀毒软件关闭 全部关闭 3. 解压后按照步骤安装即可 按照按照步骤,观看…

C++240613

自由发挥登录窗口的应用场景,实现一个登录窗口界面 要求:每行代码都有注释 #include "my_widget.h"My_Widget::My_Widget(QWidget *parent): QWidget(parent) {//设置窗口的标题this->setWindowTitle("真爱生命,远离赌博&…

Vue31-生命周期的简介

一、需求:文字的透明度递减 示例: 对象的简写形式 new vue({ key:value, key:value, 。。。。。。 }) 二、代码的实现 注意:JS不擅长小数的计算!!! 此写法不好!!!追求…

借力AI,助力网络钓鱼(邮件)检测

引言 互联网时代,邮件系统依然是人们工作、生活中的很重要的一部分,与此同时,邮件系统的发展带来的钓鱼邮件问题也成为网络中的最大的安全隐患之一。本文将为大家解开网络钓鱼(邮件)的神秘面纱,一探究竟&a…

刚刚!彬川机器人社招校招入职Verify测评素质性格测评真题原题题库更新了【含答案】

一、测评环境 温馨提示 1.本次测评包含【素质性格测评】和【Verify测评】两部分,预计用时60min,请确保作答时周围环境无干扰、网络畅通; 2.请使用电脑完成作答,建议使用以下浏览器登录:IE9.0及以上版本,火…

笔记99:OSQP 求解器示例代码

注1:以下代码是 OSQP 的官方文档提供的示例,我加上了详细的注释; 注2:OSQP 库仅支持C语言,不支持C,所以下面的示例代码使用的是C语言;但是 OSQP 求解库提供了针对C的接口 OSQP-EIGEN&#xff1…

免费的端口映射工具哪个好用

端口映射,即从一个网络环境下的端口映射到另一个网络环境下访问的过程。通常由软件方式来提供这一过程的实现,或一些客户端工具。当涉及内外网时,如内网端口地址映射到外网地址,即是内网穿透的原理。免费的端口映射工具有哪些&…

C++设计模式——Decorator装饰器模式

一,装饰器模式简介 装饰器模式是一种结构型设计模式, 它允许在不改变现有对象的情况下,动态地将功能添加到对象中。 装饰器模式是通过创建具有新行为的对象来实现的,这些对象将原始对象进行了包装。 装饰器模式遵循开放/关闭原…

对补码的理解:两种求法

课本的结论是:二进制数的最高位是符号位。符号位为 0 表示正数和 零 ,符号位为 1 表示负数。 正数是原码反码补码都是一样的。负数的反码是:符号位不变,剩下位取反。 负数的补码是:符号位不变,剩下位取反&a…

u-boot(四)-顶层目录链接脚本文件(u-boot.lds)介绍

一,IMX6ULL映像文件 1,格式概述 对于IMX6ULL,烧写在EMMC、SD/TF卡上的程序,并不能“自己复制自己”,是“别人把它复制到内存里”。一上电首先运行的是boot ROM上的程序,它从EMMC、SD/TF卡上把程序复制进内…

妙用OSGraph:发掘GitHub知识图谱上的开源故事

作者:范志东 1. 何为OSGraph? OSGraph (Open Source Graph) 是一个开源图谱关系洞察工具,基于GitHub开源数据全域图谱,实现开发者行为、项目社区生态的分析洞察。可以为开发者、项目Owner、开源布道师、社区运营等提供简洁直观的…

电脑自带录屏在哪?电脑录屏,4个详细方法

在现代社会中,越来越多的人需要在电脑上录制视频,比如录制游戏操作、制作教学视频、演示文稿等等。因此,电脑录屏成为了一项非常重要的功能。那么电脑自带录屏在哪?本文将带领大家看看可以使用哪些方法进行录屏。 录屏方法一&…

SK海力士计划于2024年第四季度启动GDDR7大规模生产

SK海力士,作为HBM市场的领头羊,于6月13日宣布,公司目标于2024年第四季度开始其GDDR7芯片的大规模生产。 与此同时,美光科技在Computex展会上也宣布推出其GDDR7图形内存,目前正处于样品测试阶段。据AnandTech报道&#…

Python | Leetcode Python题解之第149题直线上最多的点数

题目&#xff1a; 题解&#xff1a; class Solution:def maxPoints(self, points: List[List[int]]) -> int:n len(points)if n < 2:return nres 2for i in range(n):x1, y1 points[i][0], points[i][1]has {}for j in range(i 1, n):x2, y2 points[j][0], points…

AI虚拟试穿技术:开启高保真、多场景、多样化服装组合的试穿应用

随着电子商务的快速发展,消费者对于在线购物体验的要求越来越高。特别是在服装领域,消费者渴望能够在购买前直观地了解服装的试穿效果。传统的虚拟试穿技术虽然已有一定的发展,但在不同场景下的高保真度和鲁棒性方面仍面临挑战。为此,我们研发了一种全新的AI虚拟试穿技术,…

当JS遇上NLP:开启图片分析的奇幻之旅

前言 在当今科技飞速发展的时代&#xff0c;JavaScript&#xff08;JS&#xff09;作为广泛应用的编程语言&#xff0c;展现出了强大的活力与无限的可能性。与此同时&#xff0c;自然语言处理&#xff08;NLP&#xff09;领域也正在经历着深刻的变革与进步。 当这两者碰撞在一…

探索AI视频生成技术的原理

探索AI视频生成技术的原理 随着人工智能技术的迅猛发展&#xff0c;AI在视频生成领域的应用已经引起了广泛关注。从娱乐、广告到教育和科学研究&#xff0c;AI视频生成技术正在彻底改变我们制作和消费视频内容的方式。本文将深入探讨AI视频生成技术的原理&#xff0c;解析其背…

解决CentOS的yum命令失效的问题

近日笔者对一台装有 CentOS 7.9 系统的服务器反复折腾&#xff0c;玩到最后发现 yum 命令用不了&#xff0c;总是报下面的错误信息&#xff1a; There was a problem importing one of the Python modules required to run yum. The error leading to this problem was:/usr/l…