伪量化精度测试工具¶
Precision Tool¶
简介¶
Precision Tool为伪量化精度测试工具,在torch_npu路线下进行精度测试。
使用前准备¶
- CANN包安装: 安装开发运行环境的昇腾 AI 推理相关驱动、固件、CANN 包,参照 昇腾文档
- 设置 Python 环境变量
(可选)如果需要使用NPU多卡并行进行精度测试,需要关闭NPU虚拟内存,设置使用的卡:
# work_dir 为项目工作目录,即 msmodelslim 项目所在的根目录路径 # 例如:如果项目路径为 /home/user/projects/msit/msmodelslim,则 work_dir 应为 /home/user/projects export PYTHONPATH=${work_dir}/msmodelslim:$PYTHONPATHexport PYTORCH_NPU_ALLOC_CONF=expandable_segments:False #关闭NPU虚拟内存 export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 #指定使用的NPU卡 - 编写测试脚本,示例:
from transformers import AutoModel, AutoTokenizer, AutoModelForCausalLM from precision_tool import PrecisionTest import torch if __name__ == '__main__': model_path = "meta-llama/Llama-2-7b-chat-hf" model = AutoModelForCausalLM.from_pretrained( model_path, torch_dtype=torch.float16, device_map="auto", use_safetensors=True, local_files_only=True ).eval() tokenizer = AutoTokenizer.from_pretrained(model_path, local_files_only=True) precision_test = PrecisionTest(model, tokenizer, "truthfulqa", 1, "npu") precision_test.test()
功能介绍¶
接口介绍¶
实例创建接口¶
def __init__(self, model, tokenizer, dataset, batch_size, hardware_type,
tokenizer_return_type_id=False, shot=5):
"""
@param model:
llm to run the test, should be an instance of transformers.PreTrainedModel
@param dataset:
dataset to test precision
@param batch_size:
batch_size to run inference
@param hardware_type:
currently only npu is supported
@param tokenizer_return_type_id:
tokenizer return token type id
@param shot:
shot to test precision
"""
测试结果接口¶
def test(self):
使用方法¶
- 下载数据集,并修改成如下的样式
请保持文件夹名称与结构一致
|-- dataset |-- boolq | `-- dev.jsonl |-- mmlu | |-- possibly_contaminated_urls.txt | |-- dev | |-- test | `-- val |-- truthfulqa | `-- TruthfulQA.csv |-- humaneval | `-- human-eval-v2-20210705.jsonl
数据集下载链接:https://storage.cloud.google.com/boolq/dev.jsonl http://opencompass.oss-cn-shanghai.aliyuncs.com/datasets/data/humaneval.zip http://opencompass.oss-cn-shanghai.aliyuncs.com/datasets/data/mmlu.zip https://github.com/sylinrl/TruthfulQA/blob/main/data/v0/TruthfulQA.csv - 将数据集放到与 precision_tool.py 同一个路径下,如图所示:
- 如果测试 HumanEval,则需要安装 https://github.com/openai/human-eval