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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决IDEA的Project无法正常显示的问题

一、问题描述 打开IDEA&#xff0c;结果发现项目结构显示有问题&#xff1a; 二、解决办法 File -> Project Structure… -> Project Settings (选Modules)&#xff0c;然后导入Module 结果&#xff1a; 补充&#xff1a; IDEA提示“The imported module settings a…

root MUSIC 算法补充说明

root MUSIC 算法补充说明 多项式求根root MUSIC 算法原理如何从 2 M − 2 2M-2 2M−2 个根中确定 K K K 个根从复数域上观察 2 M − 2 2M-2 2M−2 个根的分布 这篇笔记是上一篇关于 root MUSIC 笔记的补充。 多项式求根 要理解 root MUSIC 算法&#xff0c;需要理解多项式求…

面试题-01

1、JDK 和 JRE 和 JVM 分别是什么&#xff0c;有什么区别&#xff1f; JDK&#xff08;Java Development Kit&#xff0c;Java 软件开发工具包&#xff09; JDK&#xff08;Java Development Kit&#xff09;&#xff1a;JDK 是 Java 开发⼯具包&#xff0c;包含了编写、编译…

社区居家养老新选择,全视通智慧方案让长者生活更安心

随着人口老龄化趋势加剧&#xff0c;养老问题已经成为社会各界关注的焦点。我国政府积极采取相关措施&#xff0c;加速推动养老服务业的健康发展。2023年5月&#xff0c;《城市居家适老化改造指导手册》发布&#xff0c;针对城市老年人居家适老化改造需求&#xff0c;提出了47项…

Linux线程(1)--线程的概念 | 线程控制

目录 前置知识 线程的概念 Linux中对线程的理解 重新定义进程与线程 重谈地址空间 线程的优缺点 线程的优点 线程的缺点 线程异常 线程的用途 Linux线程 VS 进程 线程控制 创建线程 线程等待 线程终止 线程ID的深入理解 前置知识 我们知道一个进程有属于自己的P…

python学习24

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

macOS开启HiDPI外接2K显示器(解决字体发虚问题)

1.前言&#xff1a; 购置了一台2K显示器&#xff0c;但通过HDMI直接连接时的显示效果让人难以接受&#xff0c;因此我们需要启用苹果系统的HiDPI模式&#xff0c;以实现更完美的显示效果。 那么&#xff0c;为什么要启用HiDPI模式呢&#xff1f;2K显示器的分辨率为2560*1440&…

数学建模【线性规划】

一、线性规划简介 线性规划通俗讲就是“有限的资源中获取最大的收益”&#xff08;优化类问题&#xff09;。而且所有的变量关系式都是线性的&#xff0c;不存在x、指数函数、对数函数、反比例函数、三角函数等。此模型要优化的就是在一组线性约束条件下&#xff0c;求线性目标…

7.1 Qt 中输入行与按钮

目录 前言&#xff1a; 技能&#xff1a; 内容&#xff1a; 参考&#xff1a; 前言&#xff1a; line edit 与pushbotton的一点联动 当输入行有内容时&#xff0c;按钮才能使用&#xff0c;并能读出输入行的内容 技能&#xff1a; pushButton->setEnabled(false) 按钮不…

17.3.2.9 像素处理与内存处理之比较

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 通过第17.3.2.1节到第17.3.2.8节&#xff0c;相信读者对通过锁定内存来处理图像有了一定认识。与第17.3.1节相比较&#xff0c;可以…

【递归】【后续遍历】【迭代】【队列】Leetcode 101 对称二叉树

【递归】【后续遍历】Leetcode 101 对称二叉树 解法一&#xff1a; 递归&#xff1a;后序遍历 左右中解法二&#xff1a; 迭代法&#xff0c;用了单端队列 ---------------&#x1f388;&#x1f388;对称二叉树 题目链接&#x1f388;&#x1f388;------------------- 解法一…

项目开发日志(登录界面):2. LoginTitle组件

LoginTitle组件 样式 说明 属性 属性名含义类型是否必填默认值welcomeTitle欢迎标语String是无mainTitle标题String是无 样式 mainColor -> 主题颜色 代码 <template><div class"logintitle-container"><p class"subtitle">{{ welc…

模拟算法.

1.什么是模拟 在信息奥赛中,有一类问题是模拟一个游戏的对弈过程或者模拟一项任务的操作过程.比如乒乓球在比赛中模拟统计记分最终判断输赢的过程等等,这些问题通常很难通过建立数学模型用特定的算法来解决因为它没有一种固定的解法,需要深刻理解出题者对过程的解释一般只能采…

备战蓝桥杯---图论之建图基础

话不多说&#xff0c;直接看题&#xff1a; 首先&#xff0c;这个不是按照字典序的顺序&#xff0c;而是以只要1先做&#xff0c;在满足后让2先做。。。。 就是让数字小的放前面做拓扑排序。 我们可以先做1&#xff0c;看看它的前驱。 举个例子&#xff1a; 我们肯定要把1放…

⭐北邮复试刷题429. N 叉树的层序遍历(按层入队出队BFS)

429. N 叉树的层序遍历 给定一个 N 叉树&#xff0c;返回其节点值的层序遍历。&#xff08;即从左到右&#xff0c;逐层遍历&#xff09;。 树的序列化输入是用层序遍历&#xff0c;每组子节点都由 null 值分隔&#xff08;参见示例&#xff09;。 示例 1&#xff1a;输入&a…

VMware Workstation创建虚拟机

一、VMware Workstation下载安装 1、安装教程 VMware Workstation下载安装&#xff08;含密钥&#xff09; 二、VMware Workstation 创建虚拟机 1、新建虚拟机&#xff0c;点击“创建新的虚拟机” 2、选择自定义&#xff08;高级&#xff09;&#xff0c;点击“下一步” 3…

docker (六)-进阶篇-数据持久化最佳实践MySQL部署

容器的数据挂载通常指的是将宿主机&#xff08;虚拟机或物理机&#xff09;上的目录或文件挂载到容器内部 MySQL单节点安装 详情参考docker官网文档 1 创建对应的数据目录、日志目录、配置文件目录(参考二进制安装&#xff0c;需自己建立数据存储目录) mkdir -p /data/mysq…

Ps:污点修复画笔工具

污点修复画笔工具 Spot Healing Brush Tool专门用于快速清除图像中的小瑕疵、污点、尘埃或其他不想要的小元素。 它通过分析被修复区域周围的内容&#xff0c;无需手动取样&#xff0c;自动选择最佳的修复区域来覆盖和融合这些不完美之处&#xff0c;从而实现无痕修复的效果。 …

使用PaddleNLP UIE模型提取上市公司PDF公告关键信息

项目地址&#xff1a;使用PaddleNLP UIE模型抽取PDF版上市公司公告 - 飞桨AI Studio星河社区 (baidu.com) 背景介绍 本项目将演示如何通过PDFPlumber库和PaddleNLP UIE模型&#xff0c;抽取公告中的相关信息。本次任务的PDF内容是破产清算的相关公告&#xff0c;目标是获取受理…

解锁Spring Boot中的设计模式—02.解释器模式:探索【解释器模式】的奥秘与应用实践!

解释器模式 1.简介 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为设计模式&#xff0c;它用于定义语言的文法&#xff0c;并且解释语言中的表达式。在Java中&#xff0c;解释器模式可以用于构建解释器以解析特定的语言或表达式&#xff0c;如数学表达式、…