热搜:微信 游戏 亮相 内存仅 抢不到 风林火山 电脑公司 王者荣耀 王者荣耀 万能装机 系统 xp 电脑公司 浏览器 一键重装 蜘蛛侠 快手 win7 fix realtek 微信 游戏 office mumu模拟器 微软电脑管家 22H2 secoclient 11 11 11 开始菜单 WingetUI 腾讯电脑管家 打印机 应用商店 谷歌浏览 批量下载 中国建设银行 win1032位 龙信 系统 Outlook AutoCAD 2023 Fix 迅雷 系统大师 装机大师 win7系统 WIFI sscom wps 采集 启动 植物大战僵尸 驱动人生 腾讯QQ V9.7.20 优酷 输入法 抖音 三只羊 短视频 qq 快手 系统 迅雷 注册表 学习通 红警 the vmware win11 必应 原神 小米 乙 和 UC浏览器网页版 TT
编辑:电脑系统网 2024-09-09 来源于:电脑系统网
有 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 倍。
传统的基于反量化的计算,实际上是以数据类型为核心的计算,这种方式需要对每一种不同的数据类型单独定制。
每种激活和权重的位宽组合,如 W4A16(权重 int4 激活 float16)和 W2A8,都需要特定的权重布局和计算内核。
例如,W3 的布局需要将 2 位和另外 1 位分开打包,并利用不同的交错或混洗方法进行内存对齐或快速解码。
然后,相应的计算内核需要将这种特定布局解包到硬件支持的数据类型进行执行。
而 T-MAC 通过从比特的视角观察低比特矩阵乘计算,只需为单独的一个比特设计最优的数据结构,然后通过堆叠的方式扩展到更高的 2/3/4 比特。
同时,对于不同精度的激活向量(float16 / float32 / int8),仅有构建表的过程需要发生变化,在查表的时候不再需要考虑不同的数据结构。
同时,传统基于反量化的方法,从 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 增大了片上内存的使用。
这是因为查找表需要保存激活向量与所有可能的位模式相乘的结果,这比激活本身要多得多。
为此,微软亚洲研究院的研究员们深入探究了基于查表的计算数据流,为这种计算范式设计了高效的数据结构和计算流程,其中包括:
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 公开,感兴趣可以进一步了解。
开源地址(含代码):
https://github.com/microsoft/T-MAC
论文:
https://www.arxiv.org/pdf/2407.00088
本文来自微信公众号:量子位(ID:QbitAI),作者:微软亚洲研究院,原标题《手机跑大模型提速 4-5 倍!微软亚研院开源新技术,有 CPU 就行》
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,电脑系统网所有文章均包含本声明。
2024/11/22 16:07
微软重拳出击:依法捣毁大型网络钓鱼平台 ONNX,斩断 240 个恶意域名2024/11/22 16:07
诺基亚与微软再合作,为 Azure 数据中心供货延长五年2024/11/21 14:12
微软 Win11 Build 27729 隐私策略文件中将 Copilot AI 称为“Windows Intelligence”微软发布新闻稿,提到他们正在美国弗吉尼亚州北部郊区附近建立该公司旗下第一个基于木质材料打造的数据中心,该数据中心在建设时主要选用防火交叉层压木材(CLT)以取代钢筋混凝土...
2024/11/21 14:12:40
为了吸引用户使用自家产品,微软推出了一项诱人的活动:使用微软 Edge 浏览器和 Bing 搜索引擎,就有机会赢取 100 万美元的大奖。此外,另外还有 10 名幸运儿可获得 1 万美元奖金。...
2024/11/21 14:12:39