热搜:微信 游戏 亮相 内存仅 抢不到 风林火山 电脑公司 王者荣耀 王者荣耀 万能装机 系统 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 快手 系统 迅雷 注册表 学习通 红警
编辑:电脑系统网 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 倍。
▲ 混合精度 GEMV 基于现有反量化的实现范式 vs T-MAC 基于查找表的新范式2、以比特为核心的计算,取代以数据类型为核心的计算传统的基于反量化的计算,实际上是以数据类型为核心的计算,这种方式需要对每一种不同的数据类型单独定制。
每种激活和权重的位宽组合,如 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 比特实现推算得到)。
3、高度优化的算子实现概括而言,基于比特为核心的计算具有许多优势,但将其实现在 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 公开,感兴趣可以进一步了解。
开源地址(含代码):
https://github.com/microsoft/T-MAC
论文:
https://www.arxiv.org/pdf/2407.00088
本文来自微信公众号:量子位(ID:QbitAI),作者:微软亚洲研究院,原标题《手机跑大模型提速 4-5 倍!微软亚研院开源新技术,有 CPU 就行》
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,电脑系统网所有文章均包含本声明。
2024/10/31 12:30
(更新:已恢复)微软承认 Xbox 服务出现问题:账户和档案登录服务不可用2024/10/31 12:30
可阻止 99.2% 的身份攻击:微软 12 月默认为 Entra 新租户启用多因素身份验证2024/10/31 07:30
微软 2025 财年第一财季净利润 246.67 亿美元,同比增长 11%系统之家 10 月 30 日消息,微软扩展 Windows 11 系统中的 Ctrl+Shift 组合键,可用于开始菜单和任务栏跳转列表(Jump List)。这一变化对于那些依赖快捷键进行管理操作的用户来说,...
2024/10/30 14:00:27
微软在英国拥有约 6000 名员工,总部位于雷丁,在帕丁顿、曼彻斯特和爱丁堡设有办事处。此外,微软研究实验室位于英国剑桥,该公司的英国合作伙伴网络覆盖 34000 多家当地公司。...
2024/10/29 15:01:02