Transformer-Lite: High-efficiency Deployment of Large Language Models on Mobile Phone GPUs
相关链接:arxiv 关键字:Large Language Models、Mobile GPU Deployment、Efficiency Optimization、Transformer-Lite、Quantization
摘要
大型语言模型(LLM)在智能手机上的应用越来越广泛,如智能助手、文本摘要、翻译和多模态任务等。然而,当前的设备上LLM部署方法推理速度慢,导致用户体验不佳。为了在设备GPU上高效部署LLM,我们提出了四种优化技术:(a)基于符号表达式的方法支持动态形状模型推理;(b)算子优化和执行优先级设置以提高推理速度并减少手机延迟;(c)一种称为M0E4的FP4量化方法减少了反量化开销;(d)基于子张量的技术消除了LLM推理后对KV缓存进行复制的需求。此外,我们将这些方法实现在我们的移动推理引擎Transformer-Lite中,该引擎兼容Qualcomm和MTK处理器。我们使用参数从2B到14B不等的LLM评估了Transformer-Lite的性能。具体来说,我们为ChatGLM2 6B实现了121 token/s的预填充速度和14 token/s的解码速度,以及为较小的Gemma 2B实现了330 token/s的预填充速度和30 token/s的解码速度。与基于CPU的FastLLM和基于GPU的MLC-LLM相比,我们的引擎在预填充速度上实现了超过10倍的加速,在解码速度上实现了2~3倍的加速。
核心方法
- 基于符号表达式的动态形状推理:提出了一种使用符号表达式来表示和推理张量动态形状的方法,包括动态形状推导、内存复用和执行调度等。
- 算子优化和执行优先级设置:通过优化算子和设置执行优先级来提高性能并减少手机延迟。
- M0E4 FP4量化方法:提出了一种新的FP4量化方法,称为M0E4,通过减少反量化过程中的性能开销,实现更高效的矩阵乘法。
- 子张量技术:开发了一种基于子张量的方法,避免了在每次LLM推理迭代后从模型输出到模型输入的KV缓存复制。
实验说明
实验使用了两种智能手机:OPPO Find X7 24GB内存版本,搭载MTK Dimensity 9300处理器和ARM Mali-G720 Immortalis MC12 GPU;OPPO Find X7 Ultra 12GB内存版本,搭载Qualcomm Snapdragon 8 Gen 3处理器和Adreno 750 GPU。选择了五种不同结构和参数大小的LLM模型进行测试,包括Gemma 2B、Qwen1.5 4B、ChatGLM2 6B、Llama2 7B和Qwen1.5 14B。在不同提示长度(128、1024和2048)下测试这些模型,以评估它们在不同应用场景(如对话和摘要)中的性能。
模型 | 预填充速度 (token/s) | 解码速度 (token/s) |
---|---|---|
Gemma 2B (Snapdragon) | 330 | 30 |
ChatGLM2 6B (Snapdragon) | 121 | 14 |
Gemma 2B (MTK) | 275 | 30 |
ChatGLM2 6B (MTK) | 77 | 14 |
数据来源:实验结果基于上述设备和模型的测试。
结论
本研究提出了几种优化技术,以促进在移动设备GPU上高效部署大型语言模型:(a)基于符号表达式的方法使动态形状模型能够在设备GPU上部署;(b)算子优化和执行优先级配置提高了速度并减少了手机延迟;(c)E0M4 FP4量化方法最小化了反量化的性能开销;(d)KV缓存复制优化消除了LLM推理后的内存复制开销。通过整合这些优化,我们的Transformer-Lite引擎实现了比基于GPU的MLC-LLM和基于CPU的FastLLM快10倍以上的预填充速度和2~3倍的解码速度。具体来说,我们为Gemma 2B实现了330 token/s和30 token/s的预填充和解码速度,为ChatGLM2 6B分别实现了121 token/s和14 token/s的速度。此外,我们还展示了在24GB手机上部署Qwen1.5 14B,并分别实现了54 token/s和5 token/s的预填充和解码速度。