阿里云飞天发布时刻,领先大模型限免,超7000万 tokens免费体验 了解详情
写点什么

服务器仅靠 4 颗 CPU 运行千亿大模型的“算法秘籍”

InfoQ

  • 2024-08-01
    北京
  • 本文字数:2412 字

    阅读完需:约 8 分钟

服务器仅靠 4 颗 CPU 运行千亿大模型的“算法秘籍”

巨量模型的智能生产力正在逐步渗透到各行各业,但它们的部署和运行通常需要专用的 AI 加速卡,能否在 CPU 上运行千亿大模型,对千行百业智能化转型的深化与普惠至关重要。


日前,浪潮信息研发工程师基于 2U4 路旗舰通用服务器 NF8260G7,通过张量并行、模型压缩量化等技术,解决了通用服务器的 CPU 计算资源不足、内存带宽瓶颈、缺乏大规模并行计算环境等问题,在业内首次实现服务器仅依靠 4 颗 CPU 即可运行千亿参数“源 2.0”大模型。该方案建设成本更低,首次投入可节约 80%以上建设成本,且通用服务器功耗更低,运维更便捷,能够有效降低客户 TCO。

一、大模型推理的硬件需求:内存与带宽的双重考验

当前,大模型的推理计算面临多方面的挑战,制约了大模型服务成本的降低和应用落地。


首先是对内存容量的需求。大模型的推理过程中,需要将全部的模型权重参数、计算过程中的 KV Cache 等数据存放在内存中,一般需要占用相当于模型参数量 2-3 倍的内存空间。随着业界 LLM 的网络架构从 GPT 架构走向 MOE 架构,主流开源模型的尺寸越来越大,千亿及以上参数的模型已经成为主流,运行一个千亿大模型(100B),则需要 200-300GB 的显存空间。


其次是对计算和内存读写带宽的需求。大模型的推理主要分为预填充和解码两个阶段。预填充阶段把 Prompt 一次性输入给模型进行计算,对显存的需求更大;解码阶段,每次推理仅生成 1 个 token,计算访存较低,对内存带宽的需求更大。因此,千亿大模型的实时推理,计算设备需要具备较高的计算能力,以及较高的存储单元到计算单元的数据搬运效率。


NF8260G7 作为一款采用高密度设计的 2U4 路服务器,支持 16TB 大内存容量,配置了 4 颗具有 AMX(高级矩阵扩展)的 AI 加速功能的英特尔至强处理器,内存带宽极限值为 1200GB/s。尽管 NF8260G7 服务器可以轻松满足千亿大模型推理的内存需求,甚至于万亿参数的 MOE 架构大模型推理的内存需求。但是,按照 BF16 的精度计算,千亿参数大模型运行时延要小于 100ms,内存与计算单元之间的通信带宽至少要在 2TB/s 以上。因此,要在 NF8260G7 上实现千亿大模型的高效运行,仅靠硬件升级还远远不够,硬件资源与软件算法协同优化至关重要。

二、张量并行+NF4 量化,实现千亿模型极致优化

Yuan2.0-102B 是浪潮信息发布的新一代基础语言大模型,参数量为 1026 亿,通过提出全新的局部注意力过滤增强机制(LFA:Localized Filtering-based Attention),有效提升了自然语言的关联语义理解能力。



为了尽可能提升 Yuan2.0-102B 模型在 NF8260G7 服务器上的推理计算效率,浪潮信息算法工程师采用了张量并行(tensor parallel)策略。该策略改变了传统 CPU 服务器串行运行的模式,把 Yuan2.0-102B 模型中的注意力层和前馈层的矩阵计算分别拆分到多个处理器,实现同时使用 4 颗 CPU 进行计算加速。然而,张量并行对模型参数的切分粒度较细,要求 CPU 在每次张量计算后进行数据同步,增加了对 CPU 间通信带宽的需求。在传统的使用多个基于 PCIe 互联的 AI 芯片进行张量并行时,通信占比往往会高达 50%,也就是 AI 芯片有 50%的时间都在等待数据传输,极大影响了推理效率。


NF8260G7 服务器的 4 颗 CPU 通过全链路 UPI(Ultra Path Interconnect)总线互连,该设计带来了两个优势:首先,全链路 UPI 互连允许任意两个 CPU 之间直接进行数据传输,减少了通信延迟;其次,全链路 UPI 互连提供了高传输速率,高达 16GT/s(Giga Transfers per second),远高于 PCIe 的通信带宽,保障了 4 颗处理器间高效的数据传输,从而支持张量并行策略下的数据同步需求。



UPI 总线互连示意图


为了进一步提升 Yuan2.0-102B 模型在 NF8260G7 服务器上的推理效率,浪潮信息算法工程师还采用了 NF4 量化技术,来进一步提升推理的解码效率,从而达到实时推理的解码需求。NF4(4 位 NormalFloat)是一种分位数量化方法,适合于正态分布的数据。它通过确保量化区间内输入张量的值数量相等,来实现对数据的最优量化。由于大型语言模型(LLM)的权重通常呈现零中心的正态分布,NF4 量化技术可以通过调整标准差来适配量化数据类型的范围,从而获得比传统的 4 位整数或 4 位浮点数量化(这些量化方法的数据间隔通常是平均分布或指数分布的)更高的精度。



INT4 数据类型与 NF4 数据类型对比


为了进一步压缩 Yuan2.0-102B 模型的权重参数,浪潮信息算法工程师采用了嵌套量化(Double Quant)技术,这是在 NF4 量化基础上进行的二次量化。NF4 量化后,由于会产生大量的 scale 参数,如果使用 32 位浮点数(FP32)存储,会占用大量的内存空间。若以 64 个参数作为一个量化块(block size=64)来计算,对于一个千亿参数的大模型,仅存储 scale 参数就需要额外的 6GB 内存:


(100B/64) * 4 = 6GB


为了减少内存占用,浪潮信息工程师通过将这些 scale 参数量化到 8 位浮点数(FP8),可以显著减少所需的存储空间。在采用 256 为量化块大小(block size=256)的情况下,存储所有 scale 参数所需的额外空间仅为 1.57GB:


(100B/64/256)* 4 + (100B/64) * 1 = 1.57GB


通过嵌套量化,模型的每个权重参数最终仅占用 4 字节的内存空间,这比原始的 FP32 存储方式减少了大量的内存占用,从内存到 CPU 的数据搬运效率提高了 4 倍。这样的优化显著减轻了内存带宽对 Yuan2.0-102B 模型推理解码效率的限制,从而进一步提升了模型的推理性能。

三、高算效,低成本

通过在 NF8260G7 服务器上应用张量并行和 NF4 量化技术,浪潮信息工程师成功实现了千亿大模型 Yuan2.0-102B 的实时推理,根据性能分析(profiling)的结果,可以清晰地看到模型中不同部分的计算时间分布:线性层运行时间占比 50%,卷积运行时间占比 20%,聚合通信时间占比 20%,其它计算占比 10%。在整个推理过程中,计算时间占比达到了 80%,和此前相比,计算时间占比提升 30%,大幅提升了算力利用率。



Yuan2.0-102B 模型推理性能分析(profiling)结果图


浪潮信息基于通用服务器 NF8260G7 的软硬件协同创新,为千亿参数 AI 大模型在通用服务器的推理部署,提供了性能更强,成本更经济的选择,让 AI 大模型应用可以与云、大数据、数据库等应用能够实现更紧密的融合,从而充分释放人工智能在千行百业中的创新活力。

2024-08-01 17:129119

评论

发布
暂无评论
发现更多内容

14. Python 与数据库那点事儿,滚雪球学 Python

梦想橡皮擦

python 爬虫 2月春节不断更

新闻|2021 FOSDEM为期两天的活动成功举办,一大波学习资源来袭!

PostgreSQLChina

数据库 postgresql 软件 开源社区

Java架构大牛之路必备“微服务架构笔记”

Java架构之路

Java 程序员 架构 面试 编程语言

华为云FusionInsight MRS在金融行业存算分离的实践

华为云开发者联盟

大数据 金融 华为云 存算分离 FusionInsight MRS

ElasticSearch.04 - 基础操作

insight

elasticsearch 2月春节不断更

阿里云大佬爆裂推荐“redis全新手册”,内容即精华

比伯

Java redis 程序员 架构 程序人生

心理声学基础

行者AI

心理 音乐

什么是阻抗?

不脱发的程序猿

阻抗 电路设计 电子元器件

程序员成长第九篇:真实项目中的注意事项

石云升

程序员 项目实战 2月春节不断更

LeetCode题解:63. 不同路径 II,动态规划,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

阿里面试这样问:redis 为什么把简单的字符串设计成 SDS?

程序员小富

Java redis 面试

哲少荐书:鞋狗

Jackey

书籍推荐

日记 2021年2月18日(周四)

Changing Lin

2月春节不断更

区块链挖矿系统APP开发|区块链挖矿软件开发(现成)

v16629866266

厉害了!这群95后正在用三维成像技术让科幻变成现实

华为云开发者联盟

视频 华为云 三维 裸眼 光学

Java中多线程启动,为什么调用的是start方法,而不是run方法?

Java 编程 架构

我用 go-zero 一周实现了一个中台系统,已开源!

万俊峰Kevin

微服务 go-zero Go 语言

山东党建系统!组织部智慧管理平台搭建

源中瑞-龙先生

智慧党建 组织部 山东

4.从legacy或concurrent开始(从入口开始,然后让我们奔向未来)

全栈潇晨

React React Hooks react源码

如何 1 天快速集成自己的“Clubhouse”?

融云 RongCloud

音视频 clubhouse 语音社交 融云

【STM32】EXTI---外部中断/事件控制器

AXYZdong

硬件 stm32 2月春节不断更

2021新年最新分享:阿里Java岗5轮技术面经整理

比伯

Java 编程 架构 面试 程序人生

话题讨论 | 如何使用“网站SEO”,让网站排在最前面?

我是哪吒

大前端 后端 话题讨论 SEO 2月春节不断更

技术实践 | 新思路!解决线上系统异常问题

百度开发者中心

28天写作再次开启,你准备好来挑战了吗?

TGO鲲鹏会

28天写作 热门活动

OAuth:每次授权暗中保护你的那个“MAN”

华为云开发者联盟

大前端 协议 权限 Oauth web服务

进程管理:kill命令之-9与-15

程序员架构进阶

Java Linux 进程 七日更 2月春节不断更

offer稳了!四面阿里面经分享,定级P6之路。

Java架构之路

Java 程序员 架构 面试 编程语言

面试的季节到了,老哥确定不来复习下数据结构吗

Silently9527

面试 数据结构与算法

话题讨论 | 今年,你回家过年了吗?

xcbeyond

话题讨论 春节 就地过年

大厂必问算法!查漏补缺LeetCode必考“1024道技术点面试题”

Java架构之路

Java 程序员 架构 面试 编程语言

服务器仅靠 4 颗 CPU 运行千亿大模型的“算法秘籍”_生成式 AI_Xue Liang_InfoQ精选文章