首页 > 其他分享 >聊聊LLMs与CIM

聊聊LLMs与CIM

时间:2024-10-09 20:59:48浏览次数:11  
标签:Transformer State LLMs 算法 CIM token 聊聊

聊聊LLMs与CIM

1. LLMs的近况

首先对LLMs,即大语言模型做个简单的回顾,之前也写过长文介绍过来龙去脉。我们知道目前LLMs的基础是2017年提出的Transformer模型结构,更准确的说,现在LLMs中的主流方案是使用Decoder only的Transformer架构。LLMs的工作方式采用的简单的"predict next word"的思想,即每次根据上下文内容(包含输入的prompt token以及已经生成的文本token)对要生成下一个token进行预测。依据IIya在采访中的发言,他认为简单的"predict next word"中包含了对文本内容的压缩和理解,一个形象的例子是,假设阅读一本侦探小说,在结尾说出凶手的名字的时候,就必须要吸收和整合书中前文里提供的所有的信息,而LLMs所作与此类似。

2022年底OpenAI推出的ChatGPT引爆了LLMs的话题,2023年推出的GPT-4又给熊熊大火狠狠填了一把柴,同时各大竞品也层出不穷,如Anthropic家的Claud,Deepmind家的Gemini,Meta的LLaMa等,一时间群雄逐鹿。

但2024年的LLMs的势头有所减弱,OpenAI的宫斗大戏刚吃瓜完,久等的GPT-5没有发布,只等来了GPT-4o,相比GPT-4在benchmark上获得了更高的分数,展现了更强的多模态性能,以及对复杂逻辑问题的解决能力增强等,但对于大部分人来说应该低于预期。领头羊都这样了,其他家的产品自然也放不出什么大招来。

目前来看,LLMs已经过了Scaling Law驱动的时期,进一步放大模型困难重重。训练的算力,高质量数据的匮乏,大模型的训练难度等因素都构成了当下的瓶颈,于是只能从思维链,RLHF等角度切入去做提升。

可以说,在寻找到新的技术上的破局点之前,当下的LLMs在商业上必须解决的问题是如何降本增效,即如何降低自家模型的推理成本,又能保住模型的性能。

2. CIM的“窘境”

再来聊聊CIM的事情,相信这点不止是我,所有在做CIM的人在这个时间节点会有点迷茫:做了这么久的CIM,讲了这么久的边缘端计算的故事,几年下来了容量还是那么几十Kb,benchmark的时候大家还是掏出CNN的那套组合拳:经典永不过时的ResNet/VGG和CIFAR-100/ImageNet。我们该怎么上LLMs时代的车?另外,硬件没跟上算法trend这事并非我首次提出,这里有篇有趣的文章推荐一下(里面举得那个闹笑话的例子也说明了目前CIM Session的TPC以及大部分研究者们的思路大概率还没转过弯儿来,对LLMs和Transformer还是有点迷迷糊糊)。

其实并非没有算法咬的比较紧的人下场来收割红利,如涂老师的一篇面向Transformer的CIM加速器[1],以及面向Cross Attention(多模态)的CIM加速器[2]。但除了对算法亦步亦趋之外,CIMer还需要想一想自己在这个问题下是否能够真正意义上对其他方案建立优势,并且真正在软硬件上做到合理化的协同,而不是简单的用LLMs当作一层概念包装(比如仅仅改了一下数制就给Title里面写Transformer或者LLMs)。

此外benchmark的标准以及相应的指标也得跟进,比如作为baseline的model和dataset;除了能效和算力密度以外的指标(\(\mu J/token\),\(\mu S/token\)​这类),诸如此类。

换句话来说,学术界和工业界在将CIM与LLMs这个当红炸子鸡的结合上都还有非常多的事情可以去做,毕竟考虑到今年诺贝奖都颁给了AI,不出意外的话,人类下一个十年的技术主题仍然会围绕AI打转,而LLMs作为AI技术十年之期结出的大果实,前途一片光明(即使堆不出AGI来,现有的AI如果再迭代几年,恐怕就能cover不少白领工作了,细思恐极)。

3. CIM for LLMs ?

说了那么多,现在来简单谈谈到底该为了LLMs做什么样的CIM?这里以我的思考角度来做一些回答。我们提到目前LLMs的一个重要需求围绕在降低成本上,因此如何降低推理能耗是一个重要的问题,同时为了维持用户体验,推理时间必然是越快越好,且不应该损失过多的模型精度。目前已经有相当多的方案来解决这些问题,例如KV Cache,Sparse Attention,以及很多低精度的量化方案。但之前说过,除了将算法直接映射到硬件上,把CIM简单粗暴的做成某种专用硬件,更应该思考的是如何实现更深度的软硬件结合,即更加关注LLMs推理过程中的访存和计算需求,例如Transformer中的动态权重问题再次将权重更新和计算的同时性问题摆到一个重要的位置,一个经典的方案是采用乒乓操作[3],但调度的粗粒度是这个方案的一个大问题,进而带来利用率上的问题。通过读写通路分离的SRAM Cell设计可以更简便的解决这一问题,同时提供细粒度的操作[4],但代价是Cell面积的增大(6T扩到12T)。在此基础上能否结合一些算法上的Trick实现更好的优化方案呢?这就是一个有趣切入点。

LLMs的风已经吹到了CIM领域,降本增效的需求与CIM本身的技术优势是贴合的,接下来要期待的就是大浪淘沙,除了直接粗浅的follow算法之外,希望能够看到更多有趣的软硬件深度结合的工作出现。

4. 引用


  1. F. Tu et al., "TranCIM: Full-Digital Bitline-Transpose CIM-based Sparse Transformer Accelerator With Pipeline/Parallel Reconfigurable Modes," in IEEE Journal of Solid-State Circuits, vol. 58, no. 6, pp. 1798-1809, June 2023, doi: 10.1109/JSSC.2022.3213542. ↩︎

  2. F. Tu et al., "MulTCIM: Digital Computing-in-Memory-Based Multimodal Transformer Accelerator With Attention-Token-Bit Hybrid Sparsity," in IEEE Journal of Solid-State Circuits, vol. 59, no. 1, pp. 90-101, Jan. 2024, doi: 10.1109/JSSC.2023.3305663. ↩︎

  3. J. Yue et al., "15.2 A 2.75-to-75.9TOPS/W Computing-in-Memory NN Processor Supporting Set-Associate Block-Wise Zero Skipping and Ping-Pong CIM with Simultaneous Computation and Weight Updating," 2021 IEEE International Solid-State Circuits Conference (ISSCC), San Francisco, CA, USA, 2021, pp. 238-240, doi: 10.1109/ISSCC42613.2021.9365958. ↩︎

  4. H. Fujiwara et al., "A 5-nm 254-TOPS/W 221-TOPS/mm2 Fully-Digital Computing-in-Memory Macro Supporting Wide-Range Dynamic-Voltage-Frequency Scaling and Simultaneous MAC and Write Operations," 2022 IEEE International Solid-State Circuits Conference (ISSCC), San Francisco, CA, USA, 2022, pp. 1-3, doi: 10.1109/ISSCC42614.2022.9731754. ↩︎

标签:Transformer,State,LLMs,算法,CIM,token,聊聊
From: https://www.cnblogs.com/sasasatori/p/18455155

相关文章

  • 英璞来(imprai)LLMs企业级智能助理:让大语言模型应用触手可及
    在这个信息爆炸的时代,人工智能和大数据技术正在改变我们的生活。而随着大语言模型的广泛应用,如何快速、高效地将这些模型集成到各种应用场景中,成为了一个亟待面对的问题。今天,我们要向您介绍一款名为英璞来(imprai)的开箱即用的企业级智能助理平台,它能够让您轻松获得各种基于大语言......
  • 【常用API】Math,System,Runtime,BigDecimal
    Math代表数学,是一个工具类,提供的都是对数据进行操作的一些静态方法。Math类提供的常见方法方法名说明publicstaticintabs(inta)获取参数的绝对值publicstaticdoubleceil(doublea)向上取整publicstaticdoublefloor(doublea)向下取整publicstaticintround(......
  • vue中使用decimal.js对前端数值类型进行高精度计算
    需求背景:由于一些场景我们需要在前端JavaScript进行数值计算,且对精度要求比较严谨,而前端数值是浮点类型,直接使用计算可能会产生一系列的精度问题,常见的浮点运算问题,比如精度损失等;所以例如涉及到一些金额计算等,需要进行高精度处理。解决方案:(1)可以把数值计算部分逻辑交给后端接口......
  • 聊聊性能基准测试和容量评估规划
    星球有同学问了一个关于性能测试的问题,我觉得蛮有意思的,遂分享给大家,顺带聊聊我的分析思路和实践经验。问题背景是这样:一个1.0版本的新系统还未上线,需要对其进行性能测试(性能基准),该如何开展工作?其中流量模型如何评估?涉及到缓存的场景如何压测?压测场景的流量配比该如何配置?线上......
  • 将 LLMs 精调至 1.58 比特: 使极端量化变简单
    随着大语言模型(LLMs)规模和复杂性的增长,寻找减少它们的计算和能耗的方法已成为一个关键挑战。一种流行的解决方案是量化,其中参数的精度从标准的16位浮点(FP16)或32位浮点(FP32)降低到8位或4位等低位格式。虽然这种方法显著减少了内存使用量并加快了计算速度,但往往......
  • BigDecimal 详解与实战
    BigDecimal详解与实战JavaBigDecimal完整指南引言什么是`BigDecimal`?创建`BigDecimal`对象常用方法示例代码注意事项实际运用金融计算示例代码:商业应用示例代码:科学计算示例代码:数据汇总和统计示例代码:为什么选择`BigDecimal`?JavaBigDecimal完整指南......
  • decimal,float和double的区别是什么?
    原文链接:https://blog.csdn.net/hellojoy/article/details/118105569 表示小数的一共有三种类型:float是单精度,double是双精度,decimal是数字型,它们所占的内存空间不一样,表示的位数也不一样。1、精度:float单精度小数部分能精确到小数点后面6位,用32位二进制进行描述double......
  • 简单聊聊线程跟进程
    简单聊聊线程跟进程在编程中,我们常常会遇到“线程”和“进程”这两个词。它们都是帮助我们同时执行多个任务的工具,但它们之间有一些重要的区别。让我们用简单的语言来聊聊这两个概念,同时提供一些代码示例,让你更容易理解。 什么是进程?进程可以看作是计算机上运行的一个独立......
  • Java BigDecimal 详解
     目录一、BigDecimal简介二、常用方法A、BigDecimal常用构造方法B、BigDecimal常用方法二、代码实现A、加减乘除1.创建两个BigDecimal对象2.BigDecimal相加3.BigDecimal相减4.BigDecimal相乘5.BigDecimal相除B、转换1.定义一个数值2.转换3.java.math.BigDeci......
  • 聊聊蓝牙配对技术-CTKD OVER BR/EDR
    背景最近一直在调试耳机的BLEAUDIO功能,一次测试中把CTKD(Cross-transportkeyderivation)宏开关给关了,发现手机完全不会去连接耳机的LEAUDIO服务,甚至BLE连接都不会建立。说明手机连接双模蓝牙耳机的机制是:先去配对BR/EDR,然后通过CTKD的方式去建立BLE连接。带着好奇心去一......