faa909dcc3 | ||
---|---|---|
.. | ||
README.md | ||
quant_codegeex2_6b_w8a8.py |
README.md
CodeGeeX2-6B 模型推理指导
概述
- CodeGeeX2-6B 是多语言代码生成模型 CodeGeeX (KDD’23) 的第二代模型。不同于一代 CodeGeeX(完全在国产华为昇腾芯片平台训练) ,CodeGeeX2 是基于 ChatGLM2 架构加入代码预训练实现,得益于 ChatGLM2 的更优性能,CodeGeeX2 在多项指标上取得性能提升(+107% > CodeGeeX;仅60亿参数即超过150亿参数的 StarCoder-15B 近10%)。
- 此代码仓中实现了一套基于NPU硬件的CodeGeeX2推理模型。配合加速库使用,旨在NPU上获得极致的推理性能。
特性矩阵
- 此矩阵罗列了CodeGeeX2-6B模型支持的特性
模型及参数量 | 800I A2 Tensor Parallelism | 300I DUO Tensor Parallelism | FP16 | BF16 | Flash Attention | Paged Attention | W8A8量化 | W8A16量化 | W4A16量化 | KV cache量化 | 稀疏量化 | MOE量化 | MindIE | TGI | 长序列 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
CodeGeeX2-6B | 支持world size 1,2,4,8 | 支持world size 1,2,4 | 是 | 否 | 否 | 是 | 是 | 否 | 否 | 否 | 否 | 否 | 是 | 是 | 否 |
- 此模型仓已适配的模型版本
使用说明
- 执行推理前需要将权重目录下的config.json中的
torch_dtype
改为"float16"
- 除了“量化权重导出”章节,其余均参考此README文件
量化权重导出
量化权重可通过msmodelslim(昇腾压缩加速工具)实现。
环境准备
环境配置可参考msmodelslim官网:https://www.hiascend.com/document/detail/zh/canncommercial/70RC1/devtools/auxiliarydevtool/modelslim_0002.html
导出量化权重
通过${llm_path}/examples/models/codegeex/v2_6b/quant_codegeex2_6b_w8a8.py
文件导出模型的量化权重(注意量化权重不要和浮点权重放在同一个目录下):
python quant_codegeex2_6b_w8a8.py --model_path ${浮点权重路径} --save_path ${量化权重保存路径} --dataset_path ${校准数据集路径}
校准数据集采用 ${llm_path}/tests/modeltest/dataset/full/BoolQ/dev.jsonl
导出量化权重后应生成quant_model_weight_w8a8.safetensors
和quant_model_description_w8a8.json
两个文件。
注:
1.quant_codegeex2_6b_w8a8.py文件中已配置好较优的量化策略,导出量化权重时可直接使用,也可修改为其它策略。
2.执行脚本生成量化权重时,会在生成的权重路径的config.json文件中添加(或修改)quantize
字段,值为相应量化方式,当前仅支持w8a8
。
3.执行完以上步骤后,执行量化模型只需要替换权重路径。
4.如果生成权重时遇到OpenBLAS Warning: Detect OpenMP Loop and this application may hang. Please rebuild the library with USE_OPENMP = 1 option
,可通过设置export OMP_NUM_THREADS=1
来关闭多线程规避。
精度测试
性能测试
FAQ
import torch_npu
遇到xxx/libgomp.so.1: cannot allocate memory in static TLS block
报错,可通过配置LD_PRELOAD
解决。- 示例:
export LD_PRELOAD=/lib/aarch64-linux-gnu/libgomp.so.1:$LD_PRELOAD
- 示例: