1.利用TPU-MLIR实现LLM INT8量化部署
利用TPU-MLIR实现LLM INT8量化部署
在年7月的源码进展中,我们已经成功将ChatGLM2-6B部署在BMX单芯片上,源码采用F量化模式,源码模型大小达GB,源码kodi怎样源码输出平均速度约为每秒3个token。源码为了进一步优化效率并减小存储负担,源码我们转向INT8量化部署。源码
然而,源码传统的源码TPU-MLIR INT8量化策略对大型语言模型(LLM)并不适用。PTQ校准和QAT训练在LLM上成本高昂,源码可能需要1-2天,源码徽商五源码头且量化带来的源码误差在LLM中难以收敛,会导致精度大幅下降。源码因此,源码我们采取了ChatGLM2的源码W8A策略,只对GLMBlock中的视觉贴片源码Linear Layer权重进行通道级量化,运算时恢复到F,这样可以保持%以上的余弦相似度,几乎无精度损失。
在TPU-MLIR编译器的lowering阶段,我们特别处理了MatMul算子,出击指标源码公式针对权重维数为2的线性层,将其转换为W8AMatMul算子。如ChatGLM2的一个MatMul示例中,量化后的权重存储空间从MB降至MB,Scale数据仅占0.MB,后勤保修系统源码存储空间减半。具体实现和源码可以在TPU-MLIR仓库查看。
性能提升的关键在于W8AMatMul的后端优化。TPU架构中,W8A通过量化右矩阵数据,减少数据搬运时间,尤其当左矩阵数据量小而右矩阵数据量大时,性能提升更为显著。在LLM的推理过程中,prefill阶段的输入数据量取决于模型支持的最大文本长度,而decode阶段的输入固定,这决定了W8A在不同的阶段效果不同。
将W8A应用到ChatGLM2-6B后的性能数据显示,这种策略显著地改善了模型的部署效率和存储效率。具体效果,通过详细的性能测试,我们可以看到显著的提升。