ChatGPT 人工智能 GPT4 伦理 生成式 医疗 监管 安全 机器学习 深度学习 神经网络 计算机视觉 强化学习 模型 算法 应用 开发 研究 工具 平台 框架 数据集 训练 部署 安全 合规 培训 投资 LLM,llm AI,ai,Ai 大模型 大语言模型 制图 生图 绘图 文生图 文生视频 生成式AI AGI 世界模型 sora chatGPT,chatgpt,ChatGpt claude openai Llama deepseek midjourney 红熊猫模型 Red panda,panda Stable Diffusion,StableDiffusion,stable DALL- E 3 DALL E DALL Flux,flux 扩散模型 混元大模型 文心一言 通义千问 可灵 Pika PixelDance 豆包 月之暗面 零一万物 阶跃星辰 搜索增强 MiniMax Talkie Agent prompt fastai LangChain TTS 微调 提示词 知识库 智能体
# 热门搜索 #
搜索
手机跑大模型提速4-5倍!微软亚研院开源新技术,有CPU就行
9255点击    2024-08-09 14:16

有CPU就能跑大模型,性能甚至超过NPU/GPU!


没错,为了优化模型端侧部署,微软亚洲研究院提出了一种新技术——T-MAC


这项技术主打性价比,不仅能让端侧模型跑得更快,而且资源消耗量更少。



咋做到的??


在CPU上高效部署低比特大语言模型


一般来说,要想在手机、PC、树莓派等端侧设备上使用大语言模型,我们需要解决存储和计算问题


常见的方法是模型量化,即将模型的参数量化到较低的比特数,比如4比特、3比特甚至更低,这样模型所需的存储空间和计算资源就会减少。


不过这也意味着,在执行推理时,需要进行混合精度的矩阵乘法运算(mpGEMM),即用低精度的权重和高精度的激活向量进行计算。


然而,现有的系统和硬件并不原生支持这种混合精度的矩阵乘法,因此它们通常需要将低精度的权重转换回高精度,这个过程叫做反量化(dequantization)。


但这种方法不仅效率低,而且当比特数进一步降低时,并不能带来性能上的提升。


对此,新技术T-MAC采用基于查找表(LUT)的计算范式,无需反量化,直接支持混合精度矩阵乘。


这样,T-MAC不仅提高了推理性能,还使得模型更加统一和可扩展,尤其适合在资源受限的端侧设备部署。


此外,T-MAC不依赖于专用的硬件加速器NPU或GPU,能够仅利用CPU部署模型。甚至在某些情况下,它的推理速度可以超过专用加速器。



T-MAC的关键创新在于采用基于查找表(LUT)的计算范式,而非传统的乘累加(MAC)计算范式。


T-MAC利用查找表直接支持低比特计算,从而消除了其他系统中必须的反量化操作,并且显著减少了乘法和加法操作的数量。


经过实验,T-MAC展现出了卓越的性能:


配备了最新高通Snapdragon X Elite芯片组的Surface AI PC 上,3B BitNet-b1.58模型的生成速率可达每秒48个token,2bit 7B llama模型的生成速率可达每秒30个token,4bit 7B llama模型的生成速率可达每秒20个token。


这甚至超越了NPU的性能!


当部署llama-2-7B-4bit模型时,尽管使用NPU可以生成每秒10.4个token,但CPU在T-MAC的助力下,仅使用两核便能达到每秒12.6个token,最高甚至可以飙升至每秒22个token。



这些都远超人类的平均阅读速度,相比于原始的llama.cpp框架提升了4~5倍



BitNet on T-MAC (基于LUT) vs llama.cpp (基于反量化)


即使在较低端的设备如Raspberry Pi 5上,T-MAC针对3B BitNet-b1.58也能达到每秒11个token的生成速率。


同时,T-MAC也具有显著的功耗优势


达到相同的生成速率,T-MAC所需的核心数仅为原始llama.cpp的1/4至1/6,降低能耗的同时也为其它应用留下计算资源。


值得注意的是,T-MAC的计算性能会随着比特数的降低而线性提高,这一现象在基于反量化去实现的GPU和NPU中是难以观察到的。


这进一步使得T-MAC能够在2比特下实现单核每秒10个token,四核每秒28个token,大大超越了NPU的性能。


采用新的计算范式


好了,说完了效果,咱们接着展开T-MAC的技术细节


矩阵乘不需乘,只需查表 (LUT)


对于低比特参数 (weights),T-MAC将每一个比特单独进行分组(例如,一组4个比特),这些比特与激活向量相乘,预先计算所有可能的部分和,然后使用LUT进行存储。


之后,T-MAC采用移位和累加操作来支持从1到4的可扩展位数。


通过这种方法,T-MAC抛弃了CPU上效率不高的FMA(乘加)指令,转而使用功耗更低、效率也更高的TBL/PSHUF(查表)指令。



混合精度GEMV基于现有反量化的实现范式 vs T-MAC基于查找表的新范式


以比特为核心的计算,取代以数据类型为核心的计算


传统的基于反量化的计算,实际上是以数据类型为核心的计算,这种方式需要对每一种不同的数据类型单独定制。


每种激活和权重的位宽组合,如W4A16(权重int4激活float16) 和W2A8,都需要特定的权重布局和计算内核。


例如,W3的布局需要将2位和另外1位分开打包,并利用不同的交错或混洗方法进行内存对齐或快速解码。


然后,相应的计算内核需要将这种特定布局解包到硬件支持的数据类型进行执行。


而T-MAC通过从比特的视角观察低比特矩阵乘计算,只需为单独的一个比特设计最优的数据结构,然后通过堆叠的方式扩展到更高的2/3/4比特。


同时,对于不同精度的激活向量(float16/float32/int8),仅有构建表的过程需要发生变化,在查表的时候不再需要考虑不同的数据结构。



以比特为核心的查表计算混合精度GEMV


同时,传统基于反量化的方法,从4-比特降低到3/2/1-比特时,尽管内存占用更少,但是计算量并未减小,而且由于反量化的开销不减反增,性能反而可能会更差。


但T-MAC的计算量随着比特数降低能够线性减少,从而在更低比特带来更好加速,为最新的工作BitNet, EfficientQAT等发布的2-比特模型提供了高效率的部署方案。


比如下图展示了:


(1)使用不同端侧设备CPU的单核,T-MAC在4到1比特的混合精度GEMV算子相较llama.cpp加速3-11倍


(2)T-MAC的GEMM耗时能随着比特数减少线性减少,而基于反量化的llama.cpp无法做到(1比特llama.cpp的算子性能由其2比特实现推算得到)。



高度优化的算子实现


概括而言,基于比特为核心的计算具有许多优势,但将其实现在CPU上仍具有不小的挑战


与激活和权重的连续数据访问相比,表的访问是随机的


表在快速片上内存中的驻留对于最终的推理性能尤为重要,然而,片上内存是有限的,查找表(LUT)方法相比传统的mpGEMV增大了片上内存的使用。


这是因为查找表需要保存激活向量与所有可能的位模式相乘的结果,这比激活本身要多得多。



T-MAC与llama.cpp在计算数据流上的不同


为此,微软亚洲研究院的研究员们深入探究了基于查表的计算数据流,为这种计算范式设计了高效的数据结构和计算流程,其中包括:


1、将LUT存入片上内存,以利用CPU上的查表向量指令 (TBL/PSHUF) 提升随机访存性能。


2、改变矩阵axis计算顺序,以尽可能提升放入片上内存的有限LUT的数据重用率。


3、为查表单独设计最优矩阵分块 (Tiling) 方式,结合autotvm搜索最优分块参数


4、参数weights的布局优化:


   a、weights重排,以尽可能连续访问并提升缓存命中率


  b、weights交错,以提升解码效率


5、对Intel/ARM CPU做针对性优化,包括


  a、寄存器重排以快速建立查找表


  b、通过取平均数指令做快速8-比特累加


研究员们在一个基础实现上,一步步应用各种优化,最终相对于SOTA低比特算子获得显著加速。


例如,在实现各种优化后,T-MAC 4-比特算子最终相对于llama.cpp获得显著加速:



最后,T-MAC现已开源,相关论文已在arXiv公开,感兴趣可以进一步了解。


文章来源于“量子位”,作者“微软亚洲研究院



关键词: AI , AI手机 , 小模型 , T-MAC , 端侧部署
AITNT资源拓展
根据文章内容,系统为您匹配了更有价值的资源信息。内容由AI生成,仅供参考
1
AI数据分析

【开源免费】DeepBI是一款AI原生的数据分析平台。DeepBI充分利用大语言模型的能力来探索、查询、可视化和共享来自任何数据源的数据。用户可以使用DeepBI洞察数据并做出数据驱动的决策。

项目地址:https://github.com/DeepInsight-AI/DeepBI?tab=readme-ov-file

本地安装:https://www.deepbi.com/

【开源免费airda(Air Data Agent)是面向数据分析的AI智能体,能够理解数据开发和数据分析需求、根据用户需要让数据可视化。

项目地址:https://github.com/hitsz-ids/airda

2
RAG

【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。

项目地址:https://github.com/microsoft/graphrag

【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。

项目地址:https://github.com/langgenius/dify


【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。

项目地址:https://github.com/infiniflow/ragflow/tree/main


【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目

项目地址:https://github.com/phidatahq/phidata


【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。

项目地址:https://github.com/TaskingAI/TaskingAI