纯干技术分享:大模型LLama2-7B在高能效可重构视觉芯片部署
清微智能
可重构计算芯片设计企业
+关注
已关注
已点赞
点赞
转发
已收藏
收藏

模型结构

LLaMA2-7B采用与LLaMA-7B相同的结构,如下图所示,相较于传统的Transformer,主要区别在于:

1)采用RMS Norm代替Layernorm,并在顺序上做了前移;

2)采用SwiGLU作为激活函数;

3)采用RoPE通过动态位置编码,来解决传统位置编码处理长序列时困难的问题。



图片


量化方案

清微骑士Knight工具链,支持INT8量化(整网算子输入输出均采用W8A8量化方式,linear权重采用per-channel方式),可以很方便的把浮点模型(比如pytorch/tensorflow/onnx/paddlepaddle等)转换、部署到指定芯片上;Knight工具链还针对硬件架构做了深度优化,在精度和性能两个维度达到较好的平衡。因为LLaMA2-7B模型较大,这里采用分块的方式转换成若干ONNX模型,对这些模型分别进行PTQ量化、编译,并在板端串联起来进行部署、测试。

推理流程

LLaMA2-7B按照模型结构分拆了几个模块Tokenizer/Embedding/LlamaLayer/LmHead,、通过Knight工具链进行转换,调度到TX536芯片上运行。

模型及权重可以通过Hugging Face提供的资源下载到本地,然后按照下面方法导出ONNX模型。

Embedding,词嵌入模块:



图片


LmHead模块



图片


LlamaLayer:



图片


整体推理流程:



图片


板端部署、性能测试

对Embedding/LlamaLayer/LmHead分别进行量化、编译后,生成可执行二进制文件,Sequence-length设置为1的条件下,完整执行过程如下:

Embedding板端运行:



图片


LlamaLayer板端运行:



图片


LmHead板端运行:



图片


清微工具链目前已经完成了与百度paddlepaddle III级兼容性认证,支持30个多模型,涉及视觉,自然语言处理和推荐,无论是面向大模型还是在通用性方面,可重构软件工具都具有相当的优势。



推荐
来自清微智能