H20 GPU算力评估分析

news2024/9/21 22:32:50

0f6638657571b978cd09bfa62ba4efa5.jpeg

H20算力秘密: GPU算力评估

   

一、从H20谈起

NVIDIA国内热销H20显卡,TFLOPS达标,却声称能媲美A800/A100,究竟凭何底气?揭秘其背后的性能奥秘。

看下表:

1e25d62a17cf346fd47d74699d2bf691.jpeg

H20的FP16 TFLOPS为148,虽不及A800的312,但其在FP8 TFLOPS上表现优异,高达296,远超A800,因为A800并未设计FP8功能。

H20显存高达96G,远超A800的80G,其NVL速率更是A800的两倍多,显存带宽也近乎翻倍,性能卓越。

根据上一篇文章中的方法:

GPU算力评估-上

H20展现卓越性能,FP16峰值计算能力高达148Tflops,NVLink双向带宽达900GB/s。在H20配置中,最多可支持148个张量并行GPU,确保通信畅通无阻,满足高性能计算需求。

A800的FP16峰值计算能力高达312Tflops,NVLink双向带宽达400GB/s。在H20配置中,张量并行GPU数量可达31个,确保通信无阻,性能卓越。

但我们知道,一个H20服务器最多是8个卡。也就是说,相对于算力来说,NVL通讯量剩余。那么,训练中什么数值会影响NVL通讯量呢?影响大小分别为:MicroBS, gradient accumulate >TP>Global BS。也就是说,我们在训练的时候。如果NVL不是限制,可以增加MicroBS,MicroBS越大,训练步数越少,相对训练速度越快。但有个前提是不能出现内存溢出。而H20的显存比A800多20%。

也就是说,在相同的训练环境下,当GPU算力没有到上限前,增加BS,A800会先比H20出现OOM。但前面也提到了A800的FP16算力是H20的两倍多。但如果H20用FP8和A800的FP16比呢?是不是两者GPU算力就接近了,而H20的内存速率和NVL更高,BS就能更大些。

FP8在推理中的应用/FP8 in Inference

二、训练和推理对AI算力的要求


训练过程

训练过程需存储模型参数、梯度、优化器状态及每层中间状态,大幅增加内存需求。训练涉及正向与反向传播两阶段,确保模型学习效果的同时,对计算资源提出更高要求。

  1. 正向传播(Forward Pass)
  2. 反向传播(Backward Pass)
    • 反向传播是训练核心,计算损失函数对参数的梯度并更新,涉及复杂矩阵运算与微分,是计算密集型任务,对计算性能要求极高。
    • 存储需求:需要存储梯度和优化器状态,这些存储需求通常比模型参数本身更大。
  3. 通信需求
    • 梯度同步优化:数据并行时,各GPU独立计算梯度,再同步。这一流程虽高效但通信需求大,确保数据传输流畅成为关键。
    • 模型并行显著提升了训练过程的算力需求,因正向与反向传播均需在GPU间传输数据与梯度,导致通信量激增。其中,梯度计算和参数更新作为计算密集型任务,成为训练的核心依赖。尽管通信带宽对梯度同步至关重要,但算力仍是训练过程中的关键因素。
推理过程
  1. 正向传播(Forward Pass)
    • 推理主要依赖正向传播,计算量大但相对训练中的反向传播,算力需求较低,实现高效推理的关键在于优化正向传播计算。
    • 推理过程简化存储需求:无需保留梯度和优化器状态,仅存储正向传播的激活值。因输入数据独立,各层中间状态无需持久化,极大降低存储压力,高效满足推理需求。
  2. 通信需求
  3. KV Cache
    • 通过KV Cache缓存token的K和V矩阵,能大幅提升推理效率,无需重复计算。此策略虽增加存储需求,但显著减少计算量,实现内存与计算的高效交换,是优化推理性能的关键策略。
    • KV Cache显著减少计算量,每字节存储大幅减轻计算负担。推理过程更侧重通信带宽,模型并行时GPU间数据交互频繁。尽管计算需求不高,但存储容量不可或缺,用于缓存中间结果与KV Cache,确保高效推理。

总结

  • 训练过程高度依赖算力,因梯度计算和参数更新均为计算密集型任务。尽管通信带宽对梯度同步不可或缺,但算力需求仍为核心要素。
  • 推理过程高度依赖通信带宽,特别是在模型并行时,GPU间数据传递频繁。虽然计算需求不高,但存储容量不可或缺,用于缓存中间结果和KV Cache,确保推理的高效进行。

在训练中,H20采用FP8而A800使用FP16,H20训练性能至少与A800相当。而在推理环节(H20支持8位推理),H20凭借更大的显存、更高的内存及NVL带宽,展现出更优越的性价比,超越A800。

三、KV cache都和什么有关

如前文所述,推理中会用到KV cache,那么KV cache都和什么有关?

 KV Cache 是一种用于优化生成模型推理过程的技术。对于每个输入的 prompt,在计算第一个 token 的输出时,每个 token 的 attention 都需要从头计算。然而,在后续 token 的生成过程中,需要计算 self-attention,即输入 prompt 和前面生成的 token 的 attention。在这种情况下,需要用到前面每一个 token 的 Key(K)和 Value(V)矩阵。

由于每一层的参数矩阵是固定的,因此在生成新的 token 时,只有刚生成的那个 token 的 K 和 V 需要重新计算,而输入 prompt 和之前生成的 token 的 K 和 V 矩阵实际上是与上一轮相同的。因此,我们可以将每一层的 K 和 V 矩阵缓存起来,在生成下一个 token 时不再需要重新计算,这就是所谓的 KV Cache。需要注意的是,Query(Q)矩阵每次都不同,因此没有缓存的价值。

在训练过程中,选择性保存正向传播的中间状态(activations)是一种用计算换内存的策略,而 KV Cache 则是一种用内存换计算的策略。

KV Cache 的存储需求

 
KV Cache 的存储需求取决于以下几个因素:

  1. 层数(L):模型的层数。
  2. token 数量(T):需要缓存的 token 数量。
  3. 批量大小(B):批量大小,即一次处理的样本数量。
  4. 嵌入维度(D):模型的嵌入维度。
  5. 数据类型大小(S)决定了数值的存储效率,如float16占2字节,float32占4字节,精确选择以优化存储和性能。
  6. 模型的最大序列长度决定了每层KV Cache的存储容量。在LLaMA 2 70B模型中,若批量大小为8,token数达极限4096,80层的KV Cache总容量将基于嵌入维度、token数和批量大小计算得出。这一精细设计确保了模型在处理大规模数据时的高效性和准确性。

KV Cache空间计算为2(K,V) × 80 × 8192 × 4096 × 8 × 2B,总计达80GB。若增大batch size,KV Cache占用空间将超过参数本身的140GB,需留意资源分配。

KV Cache 的计算节约

计算K、V矩阵在每层涉及大量操作,总计为4倍(K, V)矩阵乘法与加法运算,乘以嵌入维度平方,即4 * 8192²。考虑输入的token数、层数和batch size,总计算量高达640 Tflops。这意味着每存储1字节,我们实际上节省了高达16K次计算,显著提升了效率与性能。

内存带宽的影响

计算 K 和 V 矩阵的过程是一个典型的内存密集型过程,需要加载每一层的 K 和 V 参数矩阵。如果不做任何缓存,假设 prompt 长度很短而输出长度接近 token 的最大长度 4096,到了最后一个 token 时,单是重复计算前面每个 token 的 K 和 V 矩阵,就需要读取内存:

4096 * 80 * 2 * 8192 * 8192 = 40T 次,每次 2 个字节,要知道 H100 的内存带宽只有 3.35 TB/s,4090 更是只有 1 TB/s,这单是最后一个 token 就得耗掉一张卡几十秒的时间来做重复计算。这样,token 的输出就会越来越慢,整个输出时间是输出长度平方级别的,根本没法用。通过使用 KV Cache,可以显著减少重复计算,提高推理效率。

关于序列长度对KV cache的影响,可以参照我此前文章。

Phi3+vLLM的验证:SLM系列3

TensorRT-LLM融合PagedAttention与FlashAttention,高效处理大模型,显著提升性能与效率。

四、长文本推理带来的挑战

长文本推理带来的挑战:

  • 更大的 KV 缓存带来更大的内存访问需求
  • 无法为生成阶段构建大型批处理。
  • 生成请求延迟会受到上下文阶段的干扰更长的系统提示,大量冗余计算。

所以长文本推理优化主要需要解决KV cache带来的问题。

优化方法1:Streaming-LLM

  1. 滑动窗口注意力:只缓存最近的键值状态。当初始标记被驱逐时,模型会崩溃。
  2. 流式LLM创新地在滑动窗口注意力中引入“汇”标记,通过位置移动而非文本变动实现高效处理。图示直观对比了不同层、头注意力矩阵及密集、窗口注意力,并突出流式LLM在处理长输入时的卓越性能,通过图表清晰展现其优势。

优化方法2:Multi-Block-Mode

  1. 分割键/值:将键和值分割成更小的块。
  2. 并行计算:并行计算查询与每个分割块的注意力。
  3. 通过并行计算,将键和值分割为多个块,分别处理查询与每块的注意力。随后,运用对数和指数精细调整各块贡献,归约整合所有分割块,精准计算最终输出。

优化方法3:Inflight Batching

旨在优化大型语言模型的键值缓存(KV-Cache)。主要内容包括:

  1. 批处理后,优化计算效率的关键在于移除输入填充。此举显著提升键值缓存的利用率,进而强化大型语言模型的性能表现。

优化方法4:Chunked Context

  1. 传统IFB调度器
    • 单个标记需要与非常大的上下文输入一起批处理,导致生成延迟较大。
    • 激活内存成本高。
    • 用户体验受损。
  2. 启用分块上下文
    • 注意力计算因KV缓存的重复内存访问而复杂化。启用分块上下文后,通过批处理多个上下文块,显著提升性能,同时降低延迟。
    • 上下文分块增加了批处理上下文和生成阶段的可能性,从而提高了性能。
    • 对于第一个标记存在多重固有问题,带来了额外的开销。

优化方法5:KV-Cache-Reuse

  1. 全新输入序列现已划分为多个高效处理块,包括block1、block2、block3、block4及block5,提升数据处理效率。
  2. 推理引擎:推理引擎使用KV缓存来加速推理过程。
  3. 优化KV缓存机制:当键未匹配时,新KV缓存即被插入缓冲池并设索引,显著提升推理效率,实现资源高效重用。

优化方法6:使用FP8量化模型

  1. GPT-175B模型的性能分析
    • 对比了不同硬件配置下的上下文阶段和生成阶段的时间消耗。
    • 重点关注了FP8和BFP16在不同批量大小下的性能差异。
  2. FP8 GEMM的优势
    • FP8 FMHA在性能上比FP16(BFP16)FMHA快2倍。
  3. 性能数据
    • 表格中列出了不同批量大小下,FP8和BFP16的FMHA性能对比。
    • FP8在多种批量规模下性能超越BFP16,尤其在GEMM和FMHA上表现卓越,显著领先于大型模型的推理与训练,性能优势显著。


-对此,您有什么看法见解?-

-欢迎在评论区留言探讨和分享。-

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

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

相关文章

Pandas DataFrame 多条件索引

问题背景 在数据分析和处理中,经常需要根据特定条件过滤数据,以提取感兴趣的信息。Pandas DataFrame 提供了多种灵活的方式来索引数据,其中一种是使用多条件索引,它允许使用逻辑条件组合来选择满足所有条件的行。 解决方案 可以…

Web开发-CSS篇-上

CSS的发展历史 CSS(层叠样式表)最初由万维网联盟(W3C)于1996年发布。CSS1是最早的版本,它为网页设计提供了基本的样式功能,如字体、颜色和间距。随着互联网的发展,CSS也不断演进: C…

AI人工智能 强化学习

AI人工智能 强化学习基础 强化学习基础 这种类型的学习被用来加强或加强基于评论者信息的网络。 也就是说,在强化学习下训练的网络从环境中获得一些反馈。 但是,反馈是评价性的,并且不像监督式学习的情况那样具有启发性。 基于这种反馈&…

Python自动化水印处理:让你的图像版权保护更高效

在这个数字化时代,图像和照片已成为我们日常生活和工作中的重要组成部分。然而,随着互联网的普及,版权保护变得越来越具有挑战性。 在这个数字化时代,图像和照片已成为我们日常生活和工作中的重要组成部分。然而,随着…

在线音频剪辑免费工具哪个好用?推荐这6款新手必备的工具

在这个声音无处不在的时代,音频剪辑不仅是专业音乐人的专利,更是每个新媒体运营者不可或缺的利器。 无论是制作引人入胜的短视频背景音乐,还是编辑动人心弦的播客内容,一款强大的音频剪辑工具都能让你的作品如虎添翼。 今天&…

Linux系统之ls命令的基本使用

Linux系统之ls命令的基本使用 一、ls命令介绍二、ls命令的使用帮助2.1 命令格式2.2 命令选项2.3 使用帮助 三、ls命令的基本使用3.1 列出当前目录中的所有文件和目录3.2 列出指定目录中的所有文件和目录3.3 显示文件的详细信息3.4 列出所有文件和目录3.5 显示目录本身&#xff…

临床必备!常用的营养评估量表分享,附操作步骤与评分标准

常笑医学整理了3个临床常用的营养评估量表,支持下载和在线使用,供临床医护工作人员参考。 01 营养风险筛查评分简表 (完整量表请点击量表名称查看) NRS2002(Nutrition Risk Screening 2002, NRS2002)是欧洲…

嵌入式学习笔记十三——C语言指针变量、一维数组的指针、快速排序

指针变量 指针初始化 指针变量初始化:如果没有初始化,指针是随机值,既野指针。初始化可以让指针变量有明确的指向。 int a 10;int *p &a;//指针初始化int *p NULL; //NULL 0号地址 --- 空指针 指针赋值 int * p;p NULL;int a;i…

【机器学习西瓜书学习笔记——特征选择与稀疏学习】

机器学习西瓜书学习笔记【第十一章】 第十一章 特征选择与稀疏学习11.1子集搜索与评价特征特征选择为什么要特征选择如何进行特征选择子集搜索子集评价 11.2过滤式选择Relief适用场景如何确定相关统计量 11.3包裹式选择优缺点 11.4嵌入式选择与L1正则化L1/L2正则化L1正则化问题…

【微信小程序开发】——奶茶点餐小程序的制作(一)

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

Nginx+Tomcat负载均衡、动静分离群集(群集)

实验主机:101 102 103 101:nginx 102:tomcat1 103:tomcat2 先配置两个tomcat服务器 拉进去所需的安装包; 同步会话开始搭建; 安装编译环境; 解压并移动到方便管理的地方; 然后在root的家目录下创建一个目录及测试…

Google安装JSON-handle扩展

JSON-hande下载地址: JSON-Handle 官网 - 打开json格式文件的浏览编辑器 1. 重命名扩展文件(crx)后缀 为 zip。 2. 解压zip成文件夹,保存到指定目录。 3. Google浏览器地址栏输入 “chrome://extensions/”回车。然后开启 开发者模式。 4. 点击“加载…

疯狂Java讲义_08_泛型

文章目录 泛型的传参若函数里的参数使用基类接受所有的派生类,怎么做? 类型通配符的上限类型通配符的下限 泛型的传参 注意 若类 Base 是类 Derived 的基类(父类),那么数组类型 Base[] 是 Derived[] 的基类&#xff0…

【编码解码神器】CyberChef v10.18.9

# 简介 CyberChef 是一个在线编码解码工具,包含了四百多种在线编解码工具,它提供了一种简单易用的方式来对数据进行各种加密、解密、编码和解码操作。你可以把它想象成一个多功能的”数字厨房”,在这里,你可以用各种”烹饪”方法…

无人机与自主系统

无人机(Unmanned Aerial Vehicle, UAV)和自主系统正在迅速改变许多行业,从农业到物流,再到军事领域。无人机作为一种能够自主或半自主飞行的飞行器,结合自主系统的技术,具备了更高的灵活性和执行复杂任务的…

牛羊肉巨头的数字化战略:凯宇星辉如何领先市场

凯宇星辉的创业成长史,给出了中国牛羊肉企业如何从散户走向集团化经营的路线图。 总部位于大连的凯宇星辉,在牛羊肉进口贸易领域白手起家,十余年时间,已形成以澳新、南美、北美等全球三大牛羊肉主产区为主渠道的全球直采网络布局…

【linux|001】Unix和Linux的关系 及 它们的发展历史

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 ​ 🏅阿里云ACE认证高级工程师 ​ 🏅阿里云开发者社区专家博主 💊交流社…

巴黎奥运会上,墨水屏标签能怎么玩?

截至8月7日,中国代表团在2024巴黎奥运会上已经斩获了22金21银16铜,合计59枚奖牌,位居奖牌第二。在为奥运健儿欢呼喝彩的同时,我们也注意到巴黎奥运会在环保方面的创新,并探讨如何应用墨水屏标签这一智慧显示技术&#…

[转]通俗易懂的LLM(上篇)

前言 2022年年底OpenAI发布ChatGPT,将LLM(Large Language Model)带向了一个新的高度,而2023年OpenAI继续放出大招:更强大的GPT-4问世,瞬间引爆了整个互联网圈。在这个大模型时代,作为一名NLPer&…

什么是oled?

LED 是有机发光二极管(Organic Light-Emitting Diode)的缩写,是一种先进的显示技术。与传统的液晶显示技术(LCD)不同,OLED 显示器不需要背光模块,因为每个像素本身可以发光。 OLED 的基本原理和…