LLaMA-Factory-310P3/mindie/examples/models/codegeex/v2_6b
wql faa909dcc3 add: add mindie file 2024-09-10 15:38:33 +08:00
..
README.md add: add mindie file 2024-09-10 15:38:33 +08:00
quant_codegeex2_6b_w8a8.py add: add mindie file 2024-09-10 15:38:33 +08:00

README.md

CodeGeeX2-6B 模型推理指导

概述

  • CodeGeeX2-6B 是多语言代码生成模型 CodeGeeX (KDD23) 的第二代模型。不同于一代 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.safetensorsquant_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