Quantitative Analysis: PIM Chip Demands for LLAMA-7B inference

news2024/11/24 5:29:23

1 Architecture

如果将LLAMA-7B模型参数量化为4bit,则存储模型参数需要3.3GB。那么,至少PIM chip 的存储至少要4GB。

  • AiM单个bank为32MB,单个die 512MB,至少需要8个die的芯片。
  • 8个die集成在一个芯片上。
    • 提供8×16bank级别的访存带宽。
  • 整个推理过程完全下放至PIM。
    • CPU把 prompt 传给 Controller
    • Controller 控制推理过程,将推理出的token返回给CPU
  • Controller
    • ALUs
      • 处理softmax、Norm和向量乘等。
    • CRAM
      • cache
    • CMEM
      • 推理过程中,保存中间结果
  • Die
    • DieRAM
      • 数据 buffer,Controller broadcast 数据时用到。
  • Bank
    • MACs
      • Multiply-And-Accumulate
      • 用于GEMV and GEMM
    • BRAM
      • cache
    • BMEM
      • capacity: 32MB

在这里插入图片描述

2 Data partition

2.1 LLAMA-7B

在这里插入图片描述

2.2 Model parameter

在 batch_size=1 的情况下

  • prefill 阶段,嵌入prompt,此时为GEMM算子
  • decode 阶段,推理出一个个token,此时为GEMV算子

模型参数划分就是将上图中的矩阵划分至8×16个bank中。

2.2.1 一维划分

在这里插入图片描述

2.2.2 二维划分
  • 在分布式计算场景下的常用划分
  • 优势:通信量小。但是,要求计算节点间存在通信能力。
  • 在PIM场景下,无法假设bank间存在通信能力,此时,Controller的reduction开销会很大。

在这里插入图片描述

2.3 KV cache

2.3.1 attention
  • NUM_HEAD 个相互独立的 attention 操作
  • max sequence length = (8×16×32×1024×1024 - 6607077376/2)/(32×4096/2) = 15128

在这里插入图片描述

2.3.2 a bank for a head
  • 一个head attention由一个bank执行
  • 优势:Controller 与 banks 通信少
  • 劣势:
    • NUM_HEAD < NUM_BANK,3/4的bank访存带宽和算力被浪费。
    • bank内不仅要支持MAC,还要支持softmax。

在这里插入图片描述

2.3.3 multiple banks for a head
  • 一个head attention由多个bank执行
  • 优势:所有的bank访存带宽和算力得到利用。
  • 劣势:
    • Controller 与 banks 通信开销变大
    • Controller 需要进行softmax和reduction。

在这里插入图片描述

3 Demands

本节使用量化方法来分析PIM chip,希望能够回答以下几个问题:

  • CRAM、CMEM、BRAM做多大合适?

  • Bank级并行带宽需要多少?并行算力需要多少?

  • Controller 如何与bank通信?通信带宽需要多少?

  • Controller 需要提供多大的算力?

PIM chip面向端侧推理,一般来说,推理的batch size = 1。LLM在推理时,可以大致分为两个阶段:

  • prefill
    • 在prefill阶段,模型嵌入prompt。
    • 假设嵌入prompt的长度为N,则在这个过程中模型参数会被复用N次。
      • 典型算子为GEMM
  • decode
    • 在decode阶段,模型以自回归的方式推理出一个个token
    • 假设推理出S个token
      • 每推理出一个token,则在这个过程中都必须扫描一遍模型参数和kv cache。
      • 典型算子为GEMV

3.1 bandwidth

显然,LLM模型在decode阶段的瓶颈在于访存带宽。定量分析decode过程,也就可以分析出在给定访存带宽下,模型推理的速度。

3.1.1 hypothesis
  • 假设推理的sequence的长度为L

  • 在decode阶段,Controller和bank内的算力均可以吃满访存带宽。

    • 对于GEMV算子,Operational intensity = 2 Ops/weight byte
    • 这个假设完全合理。
  • 并行intra-bank bandwidth 总带宽为BM

    • 对于AiM,BM = 8 × 512 GB/s
  • Controler-bank bandwidth 总带宽为CBM

    • 一般来说,CBM << BM

    • 对于AiM,CBM = 8 × 32 GB/s

    • 这儿应该进行更加精细的讨论

      • 每次 Controler-bank 通信的基础开销(时延)设置为 λ \lambda λ

      在这里插入图片描述

  • intra-Controler bandwidth 带宽为CM

    • 能够达到类似CPU 100GB/s的访存带宽?
  • 在decode过程,推理出一个token的时延 = bank内并行访存(GEMV)的时延 + Controler-bank 通信的时延 + Controler 内访存(softmax、Norm 和 reduction 等)的时延

3.1.2 intra-bank bandwidth

bank内并行访存(GEMV)的时延包含两部分:模型参数相关的GEMV的时延和kv cache相关的GEMV的时延。

  • 模型参数相关的GEMV的时延

    • 这个时延非常好算,其实就是 模型总参数量/BM。
    • 对于AiM,这个时延为 (6607077376 / 2 / 1024 / 1024 / 1024)/(BM) = 7.5 × 10^-4 s
  • kv cache相关的GEMV的时延

    • kv cache 大小
      • L×H×NUM_LAYER×2
    • 与kv cache相关的attention算子的时延计算就比较复杂,因为其有两者计算方案。
    • a bank for a head
      • NUM_HEAD 的数量为32,bank数量为8×16
      • bank并行访存带宽的利用率为25%
      • 时延 = ((L × H + NUM_HEAD × L + L × H) × NUM_LAYER / 2 / 1024 / 1024 / 1024)/(BM / 4)
      • 如果L=4096,时延 = 4.9 × 10^-4 s
    • multiple banks for a head
      • 4 banks for a head
      • 时延 = ((L × H + L × H) × NUM_LAYER / 2 / 1024 / 1024 / 1024)/(8 × 512)
      • 如果L=4096,时延 = 1.2 × 10^-4 s
3.1.3 Controler-bank bandwidth
  • 模型参数相关的通信时延

    • 通信次数
      • 运算一个GEMV算子,需要两次通信,向bank发送向量,取回结果。
      • 通信次数 2 × (1 + NUM_LAYER × 7)
    • 通信量
      • (V + H) + NUM_LAYER × (4 × 2 × H + 3 × (H + DIM_MLP))
    • 通信时延
      • (2 × (1 + NUM_LAYER × 7)) λ \lambda λ + ((V + H) + NUM_LAYER × (4 × 2 × H + 3 × (H + DIM_MLP))) /2 / 1024 / 1024 / 1024 / CBM
      • UPMEM中 λ \lambda λ=0.0001s,AiM中CBM=8 × 32 GB/s,此时,时延 = 450 λ \lambda λ + 4.61×10^-6 s
  • kv cache相关的通信时延

    • a bank for a head

      • 通信次数

        2 × NUM_LAYER

      • 通信量

        NUM_LAYER × (2H)

      • 通信时延

        (2 × NUM_LAYER) λ \lambda λ + NUM_LAYER × (2H) /2 / 1024 / 1024 / 1024 / (CBM/4)

        64 λ \lambda λ + 1.91 × 10^-6 s

    • multiple (4) banks for a head

      • 通信次数

        2 × NUM_LAYER × 2

      • 通信量

        NUM_LAYER × (4H + NUM_HEAD × L + NUM_HEAD × L + 4H)

      • 通信时延

        (2 × NUM_LAYER × 2) λ \lambda λ + NUM_LAYER × (4H + NUM_HEAD × L + NUM_HEAD × L + 4H) /2 / 1024 / 1024 / 1024 / CBM

        192 λ \lambda λ + 1.72 × 10^-5 s

3.1.4 intra-Controler bandwidth
  • 模型参数相关的GEMV的时延

    • 主要是做处理softmax、Norm和向量乘等。
    • 处理数据量
      • V + NUM_LAYER × (H + H + H + 2 × DIM_MLP + H)
    • 处理时延
      • (V + NUM_LAYER × (H + H + H + 2 × DIM_MLP + H)) /2 / 1024 / 1024 / 1024 / CM
      • 5.87 × 10^-6 s
  • kv cache相关的GEMV的时延

    • a bank for a head

    • multiple (4) banks for a head

      • softmax 和 reduction

      • 处理数据量

        NUM_LAYER × (L + 4 × H)

      • 处理时延

        NUM_LAYER × (L + 4 × H) /2 / 1024 / 1024 / 1024 / CM

        3.05 × 10^-6 s

3.1.5 summary
  • sequence len = 4096,推理出一个token的总时延

    • a bank for a head

      intra-bank 模型参数intra-bank qkvControler-bank 模型参数Controler-bank qkvintra-Controler 模型参数intra-Controler qkvtotal
      7.5 × 10^-4 s4.9 × 10^-4 s450 λ \lambda λ + 4.61×10^-6 s64 λ \lambda λ + 1.91 × 10^-6 s5.87 × 10^-6 s0514 λ \lambda λ+1.25 × 10^-3 s
    • multiple (4) banks for a head

      intra-bank 模型参数intra-bank qkvControler-bank 模型参数Controler-bank qkvintra-Controler 模型参数intra-Controler qkvtotal
      7.5 × 10^-4 s1.2 × 10^-4 s450 λ \lambda λ + 4.61×10^-6 s192 λ \lambda λ + 1.72 × 10^-5 s5.87 × 10^-6 s3.05 × 10^-6 s642 λ \lambda λ+1.27 × 10^-3 s
    • 如果可以将Controler-bank通信时延优化掉,1s 可以推理出500+ token。这时候,性能是冗余的。

    • Controler要放在PIM chip上,否则Controler-bank通信基础开销会成为系统瓶颈。

    • 削减成本,将上述三种带宽均减小一个数量级,系统吞吐 50+ token/s,性能也能满足需求。

3.2 Computing

LLM模型在prefill阶段的瓶颈在于硬件算力。

3.2.1 Controler
  • Controler 部分承担softmax、Norm 和 reduction 访存密集性算子
  • Controler 的算力只要能吃满 Controler 的访存带宽就可以。
  • CRAM容量
    • L最长16K,能够放入L长度的向量进行softmax就可以
    • CRAM容量最小 8KB,设置64KB是合理的。
    • 当然,如果追求更大的并行度,设置 NUM_HEAD × 8KB = 256 KB
  • CMEM容量
    • 在prefill阶段,要能够放入L×L的矩阵,最小128MB
    • 设置256MB是合理的
3.2.2 bank
  • bank 承担GEMM算子

    • 嵌入prompt的长度为N,模型参数加载进入cache可以重用N次

    • 核心还是MAC

      在这里插入图片描述

  • 可以将 N 以 batch_size (例如16) 为粒度进行切分,以tile的方式进行GEMM

    • 可以设置BRAM的大小为 16 KB ~ 64 KB,更大的BRAM可以允许更大的tile。
  • 需要算力:BM×2×batch_size ops

3.3 conclusion

如果decode阶段需要50+ token/s的推理速度:

  • CRAM、CMEM、BRAM做多大合适?

    CRAMCMEMBRAM
    256 KB256MB16 KB ~ 64 KB
  • Bank级并行带宽需要多少?并行算力需要多少?

    • 512 GB/s

    • 512×2 ~ 512×2×16 Gops

      • prefill 阶段的embedding速度和并行算力相关。

      • 512×2 Gops 对应50+ token/s的embedding速度

      • 512×2×16 Gops 对应50×16+ token/s的embedding速度

  • Controller 如何与bank通信?通信带宽需要多少?

    • Controller 必须在片内,降低通信时延
    • 4 ~ 32GB/s
  • Controller 需要提供多大的访存带宽和算力?

    • 16 GB/s
    • 32 Gops

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

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

相关文章

Docker 第十四章 : Docker 三剑客之 Machine

第十四章 : Docker 三剑客之 Machine 本章知识点: Docker Machine 是 Docker 三剑客之一,它是一个工具,允许用户在本地或远程机器上创建 Docker 主机。它简化了 Docker 环境的设置,特别是在不同的操作系统和云平台上。通过 Docker Machine,用户可以轻松地在虚拟机或物理…

《白话C++》第9章 泛型,Page842~844 9.4.2 AutoPtr

源起&#xff1a; C编程中&#xff0c;最容易出的问题之一&#xff0c;就是内存泄露&#xff0c;而new一个对象&#xff0c;却忘了delete它&#xff0c;则是造成内存泄露的主要原因之一 例子一&#xff1a; void foo() {XXXObject* xo new XXXObject;if(!xo->DoSomethin…

支付交易——跨境交易

摘要 老王兢兢业业经营生意多年&#xff0c;一步步从小杂货店做到现在&#xff0c;成立大型贸易公司。在做大做强的过程中&#xff0c;老王觉得国内市场已经饱和&#xff0c;竞争处处是红海。老王留意海外很多年了&#xff0c;决定走出去&#xff0c;转向海外:将国外的商品引进…

蓝桥杯官网填空题(寻找整数)

问题描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 有一个不超过 10^17 的正整数 n&#xff0c;知道这个数除以 2 至 49 后的余数如下表所示&#xff0c;求这个正整数最小是多少。 运行限制 最大运行时间&#xff1a;…

C/C++重点解析——内存管理

1. C/C内存分布 我们先来看一段代码和其相关问题&#xff1a; int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] "abcd";const char* pChar3 "abcd"…

4 月 9 日至 4 月 10 日,Hack.Summit() 2024 首聚香江

Hack.Summit() 是一系列 Web3 开发者大会。2024 年的活动将于 2024 年 4 月 9 日至 4 月 10 日在香港数码港举行。自十年前首次举办以来&#xff0c;此次会议标志着 Hack.Summit() 首次在亚洲举办&#xff0c;香港被选为首次亚洲主办城市&#xff0c;这对 Hack VC 和该地区都具…

【大厂AI课学习笔记】【2.1 人工智能项目开发规划与目标】(4)数据准备的流程

今天学习的是数据准备的流程。 我们已经知道&#xff0c;数据准备占了AI项目超过一半甚至79%的时间。 那么数据准备&#xff0c;都做些什么&#xff0c;有哪些流程。 1.数据采集 观测数据人工收集调查问卷线上数据库 2.数据清洗 有缺失的数据有重复的数据有内容错误的数据…

Filezilla:文件无法传输的问题

问题 解决方法 我发现我站点管理器原本设置的是FTP, 改成了SFTP就可以正常传输 FTP和SFTP 安全通道&#xff1a;FTP不提供安全通道&#xff0c;SFTP提供安全通道。 传输协议&#xff1a;FTP使用TCP/IP协议&#xff0c;SFTP是SSH协议的一部分。 最后由于SFTP使用了加密解密技…

究极小白如何自己搭建一个自动发卡网站-独角数卡

本人从来没接触过建站&#xff0c;我之前都是在TB上花90叫别人给我搭建的网站&#xff0c;前几天这个TB店倒闭跑路了&#xff0c;而我的发卡网也打不开了&#xff0c;没办法&#xff0c;逼上梁山&#xff0c;自己捣鼓出来了&#xff01;下面是2023/4/2自己建好的&#xff01; …

Tampermonkey油猴用户脚本API文档

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

Redis篇----第三篇

系列文章目录 文章目录 系列文章目录前言一、缓存雪崩**二、缓存穿透三、缓存预热四、缓存更新五、缓存降级 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女…

【数据结构】二叉查找树和平衡二叉树,以及二者的区别

目录 1、二叉查找树 1.1、定义 1.2、查找二叉树的优点 1.2、查找二叉树的弊端 2、平衡二叉树 2.1、定义 2.2、 实现树结构平衡的方法&#xff08;旋转机制&#xff09; 2.2.1、左旋 2.2.2、右旋 3、总结 1、二叉查找树 二叉查找树又名二叉排序树&#xff0c;亦称二叉搜…

【Java程序员面试专栏 Java领域】Java虚拟机 核心面试指引

关于Java 虚拟机部分的核心知识进行一网打尽,主要包括Java虚拟机的内存分区,执行流程等,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 JVM 程序执行流程 包括Java程序的完整执行流程,以及Javac编译,JIT即时编译 Java程序的完整执…

2024年【A特种设备相关管理(电梯)】找解析及A特种设备相关管理(电梯)模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 A特种设备相关管理&#xff08;电梯&#xff09;找解析是安全生产模拟考试一点通生成的&#xff0c;A特种设备相关管理&#xff08;电梯&#xff09;证模拟考试题库是根据A特种设备相关管理&#xff08;电梯&#xff…

NBA2K24 精品蔡徐坤面补

NBA2K24 精品蔡徐坤面补 NBA2K23-NBA2K24通用 精品蔡徐坤面补 下载地址&#xff1a; https://www.changyouzuhao.cn/13072.html

【JavaEE】_HTTP请求报头header

目录 1. Host 2. Content-Length与Content-Type 2.1 Content-Length 2.2 Content-Type 3. User-Agent&#xff08;UA&#xff09; 4. Referer 5. Cookie header的整体格式是“键值对”结构&#xff0c;一行是一个键值对&#xff0c;这些键值对都是HTTP定义好的、有特殊含…

【STM32 CubeMX】SPI W25Q64功能实现

文章目录 前言一、内部函数的实现1.1 选中和取消选中SPI Flash1.2 写使能函数1.3 获取读状态1.4 等待就绪状态 二、Flash读写函数实现2.1 读Flash ID2.2 擦除某个扇区2.3 写扇区2.4 读数据 三、测试代码总结 前言 SPI Flash 存储器在嵌入式系统中扮演着重要角色&#xff0c;它…

各类有关于花卉的深度学习数据集

花卉的识别和分类在深度学习过程中是最常见的使用的案例&#xff0c;因此各类有关花卉分类、识别、计数的图像数据集是大家都常用的数据集。最近收集到各类有关花卉的各类数据集分享给大家&#xff01;&#xff01; 1、16种花常见的图像数据集 数据说明&#xff1a;我们看到我…

数据库设计、JDBC、数据库连接池

数据库设计 数据库设计概念 数据库设计就是根据业务 系统的具体需求&#xff0c;结合我们所选用的DBMS,为这个业务系统构造出最优的数据存储模型。建立数据库中的表结构以及表与表之间的关联关系的过程。有哪些表?表里有哪些字段?表和表之间有什么关系? 数据库设计的步骤…

企业计算机服务器中了faust勒索病毒怎么办?Faust勒索病毒解密数据恢复

网络技术的不断发展与更新&#xff0c;为企业的生产运营提供了极大便利&#xff0c;但也为企业的数据安全埋下隐患。近期&#xff0c;云天数据恢复中心接到很多企业的求助&#xff0c;企业的计算机服务器遭到了faust勒索病毒攻击&#xff0c;给企业的生产运营带来了极大困扰&am…