文件最后提交记录最后更新时间
[docs] fix the invalid link error Co-authored-by: zhongzhoutan<1710115119@bjmu.edu.cn> # message auto-generated for no-merge-commit merge: !327 merge docs/fix-invalid-link into master [docs] fix the invalid link error Created-by: tangxuanya Commit-by: zhongzhoutan Merged-by: ascend-robot Description: 感谢您贡献的Pull Request! 在提交之前,请务必阅读 [CONTRIBUTING.md](https://gitcode.com/Ascend/msmodelslim/blob/master/CONTRIBUTING.md)。 Thanks for sending a pull request! BEFORE SUBMITTING, PLEASE READ [CONTRIBUTING.md](https://gitcode.com/Ascend/msmodelslim/blob/master/CONTRIBUTING.md). ## PR描述 (What this PR does / why we need it?) - 请明确说明您提交PR的变更内容。本部分旨在概述所做的变更,以及此PR是如何解决该问题的。请尽可能地提供有助于评审人员更高效、更快速完成检视审查的实用说明。 - 请说明为何需要这些更改,例如具体的使用场景或bug描述。 - 关联issue号(如果有)。 - Please clarify what changes you are proposing. The purpose of this section is to outline the changes and how this PR fixes the issue. If possible, please consider writing useful notes for better and faster reviews in your PR. - Please clarify why the changes are needed. For instance, the use case and bug description. - Related issue number (if any) 1. fix the invalid dos link ## 面向用户的变更 (Does this PR introduce _any_ user-facing change)? - 请注意,这里指的是**任何**面向用户的变更,包括但不限于API、用户界面或其他使用方式上的变更。 - Note that it means *any* user-facing change including all aspects such as API, interface or other behavior changes. ## 功能验证 (How was this patch tested?) 请确认CI已通过增量及存量的单元测试用例。 如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤(最好提供完整的可复现的操作路径及关键截图),以便Committer能够快速复现验证,也便于后续的维护。 如果未添加测试,请说明未添加的原因,以及为何难添加测试。 - [_] 功能自验 - [_] 本地自验截图(涉及个人标识符等敏感信息请注意脱敏) - [_] 新增/变更内容是否已新增/适配UT测试用例看护 CI passed with new added/existing test. If it was tested in a way different from regular unit tests, please clarify how you tested step by step, ideally copy and paste-able, so that other reviewers can test and check, and descendants can verify in the future. If tests were not added, please describe why they were not added and/or why it was difficult to add. - [_] Self-verification of the feature. - [_] Screenshot of local self-verification (please anonymize any sensitive information such as personal identifiers) - [_] Have new or modified unit test (UT) cases been added or adapted to cover the newly added or changed content? See merge request: Ascend/msmodelslim!3271 个月前
【msmodelslim】刷新文件头部声明和版权 Co-authored-by: caishengcheng<caishengcheng@huawei.com> # message auto-generated for no-merge-commit merge: !28 merge license into master 【msmodelslim】刷新文件头部声明和版权 Created-by: caishengcheng Commit-by: caishengcheng Merged-by: ascend-robot Description: 【msmodelslim】刷新文件头部声明和版权 See merge request: Ascend/msmodelslim!284 个月前
README.md

GLM 量化说明

模型介绍

  • GLM是智谱AI推出的最新一代预训练模型GLM-4系列中的开源版本。在语义、数学、推理、代码和知识等多方面的数据集测评中,GLM-4-9B 及其人类偏好对齐的版本GLM-4-9B-Chat均表现出超越 Llama-3-8B的卓越性能。除了能进行多轮对话,GLM-4-9B-Chat还具备网页浏览、代码执行、自定义工具调用(Function Call)和长文本推理(支持最大128K上下文等高级功能)。本代模型增加了多语言支持,支持包括日语,韩语,德语在内的26种语言。我们还推出了支持 1M 上下文长度(约 200 万中文字符)的GLM-4-9B-Chat-1M模型和基于 GLM-4-9B的多模态模型GLM-4V-9B。GLM-4V-9B具备1120 * 1120高分辨率下的中英双语多轮对话能力,在中英文综合能力、感知推理、文字识别、图表理解等多方面多模态评测中,GLM-4V-9B表现出超越GPT-4-turbo-2024-04-09、Gemini 1.0 Pro、Qwen-VL-Max 和 Claude 3 Opus的卓越性能。

使用前准备

支持的模型版本与量化策略

模型系列 模型版本 HuggingFace链接 W8A8 W8A16 W4A16 W4A4 稀疏量化 KV Cache Attention 量化命令
GLM GLM-4-9B GLM-4-9B W8A8C8

说明:

  • ✅ 表示该量化策略已通过msModelSlim官方验证,功能完整、性能稳定,建议优先采用。
  • 空格表示该量化策略暂未通过msModelSlim官方验证,用户可根据实际需求进行配置尝试,但量化效果和功能稳定性无法得到官方保证。
  • 点击量化命令列中的链接可跳转到对应的具体量化命令

量化权重生成

  • 量化权重统一使用quant_glm.py脚本生成,以下提供GLM模型量化权重生成快速启动命令。

量化参数说明

参数名 含义 默认值 使用方法
model_path 浮点权重路径 无默认值 必选参数;
输入GLM权重目录路径。
save_directory 量化权重路径 无默认值 必选参数;
输出量化结果目录路径。
part_file_size 生成量化权重文件大小/GB 无默认值 可选参数;
生成量化权重文件大小,请用户自定义单个量化权重文件的最大限制。
calib_texts 量化校准数据 无默认值 可选参数;
校准数据集。
calib_file 量化校准数据 teacher_qualification.jsonl 可选参数;
存放校准数据的json文件。
anti_file 异常值抑制校准数据 mix_dataset_glm.json 存放异常值抑制校准数据的json文件。
w_bit 权重量化bit 8 大模型量化场景下,可配置为8或16;
大模型稀疏量化场景下,需配置为4。
a_bit 激活值量化bit 8 大模型量化场景下,可配置为8或16;
大模型稀疏量化场景下,需配置为8。
disable_names 手动回退的量化层名称 默认回退所有down_proj层 用户可根据精度要求手动设置,默认回退隐藏层的降维投影层。
device_type device类型 cpu 可选值:['cpu', 'npu']。
fraction 模型权重稀疏量化过程中被保护的异常值占比 0.01 取值范围[0.01,0.1]。
act_method 激活值量化方法 1 (1) 1代表Label-Free场景的min-max量化方式。
(2) 2代表Label-Free场景的histogram量化方式。
(3) 3代表Label-Free场景的自动混合量化方式,LLM大模型场景下推荐使用。
co_sparse 是否开启稀疏量化功能 False True: 使用稀疏量化功能;
False: 不使用稀疏量化功能。
anti_method 离群值抑制参数 无默认值 'm1': SmoothQuant算法。
'm2': SmoothQuant加强版算法,推荐使用。
'm3': AWQ算法。
'm4': smooth优化算法 。
'm5': CBQ量化算法。
默认为m2。
disable_level 自动回退等级 L0 配置示例如下:
'L0':默认值,不执行回退。
'L1':回退1层。
'L2':回退2层。
'L3':回退3层。
'L4':回退4层。
'L5':回退5层。
do_smooth 是否启动smooth量化功能 False True: 开启smooth量化功能;
False: 不开启smooth量化功能。
use_sigma 是否启动sigma功能 False True: 开启sigma功能;
False: 不开启sigma功能。
use_reduce_quant 权重量化是否是lccl all reduce量化 False 用于MindIE推理的标识。
tp_size 模拟多卡量化时的卡数 1 数据取值范围为[1,2,4,8,16],默认值为1,不启用模拟多卡量化。
设置为2、4、8、16时,对于通信层的linear会进行模拟多卡,每张卡使用不同的scale和offset进行量化。
sigma_factor sigma功能中sigma的系数 3.0 数据类型为float,默认值为3.0,取值范围为[1.0, 3.0]。
说明:仅当use_sigma为True时生效。
is_lowbit 是否开启lowbit量化功能 False (1) 当w_bit=4,a_bit=8时,为大模型稀疏量化场景,表示开启lowbit稀疏量化功能。
(2) 其他场景为大模型量化场景,会开启量化自动精度调优功能。
当前量化自动精度调优框架支持W8A8,W8A16量化。
mm_tensor 是否开启mm_tensor量化功能 True True: 开启mm_tensor量化功能;
False: 不开启mm_tensor量化功能。
w_sym 是否开启w_sym量化功能 True True: 开启w_sym量化功能;
False: 不开启w_sym量化功能。
use_kvcache_quant 是否使用kvcache量化功能 False True: 使用kvcache量化功能;
False: 不使用kvcache量化功能。
use_fa_quant 是否使用FA3量化 False True: 使用FA3量化类型;
False: 不使用FA3量化类型。
fa_amp FA3量化场景下的自动回退的layer数量 0 数据类型为int,默认值为0。数据取值范围是大于等于0,并且小于等于模型layer数量,如果超出模型的layer数量将会取模型的最大layer数量为回退层数。
open_outlier 是否开启权重异常值划分 True True:开启权重异常值划分。
False:关闭权重异常值划分。
说明:(1)仅在lowbit设置为True时生效。(2)per_group量化场景下,需协同设置is_lowbit为True,open_outlier为False。
group_size per_group量化中group的大小 64 默认值为64,支持配置为32,64,128。
说明:仅适用于per_group量化场景,需协同设置is_lowbit为True,open_outlier为False。
is_dynamic 是否使用per-token动态量化功能 False True: 使用per-token动态量化;
False: 不使用per-token动态量化。
input_ids_name 指定分词结果中输入 ID 对应的键名 input_ids
attention_mask_name 指定分词结果中注意力掩码对应的键名 attention_mask
tokenizer_args 加载自定义tokenizer时传入的自定义参数 以字典方式传入。
disable_last_linear 是否回退最后linear层 True True:回退最后linear层。
False:不回退最后linear层。
model_name 模型名称,可选参数 None 用于控制异常值抑制参数。
trust_remote_code 是否信任自定义代码 False 指定trust_remote_code=True让修改后的自定义代码文件能够正确地被加载(请确保所加载的自定义代码文件来源可靠,避免潜在的安全风险)。
mindie_format 非多模态模型量化后的权重配置文件是否兼容MindIE现有版本 False 开启mindie_format时保存的量化权重格式能够兼容MindIE 2.1.RC1及之前的版本。
  • 更多参数配置要求,请参考量化过程中配置的参数 QuantConfig 以及量化参数配置类 Calibrator

使用示例

  • 请将{浮点权重路径}和{量化权重路径}替换为用户实际路径。

  • 如果需要使用NPU多卡量化,请先配置环境变量,支持多卡量化,但GLM-4-9B量化仅需要单卡:

    export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
    export PYTORCH_NPU_ALLOC_CONF=expandable_segments:False
    
  • 若加载自定义模型,调用from_pretrained函数时要指定trust_remote_code=True让修改后的自定义代码文件能够正确的被加载。(请确保加载的自定义代码文件的安全性)

GLM-4-9B模型量化

GLM-4-9B W8A8C8量化

  • 生成GLM-4-9B模型w8a8c8量化权重,使用histogram量化方式,在NPU上进行运算

    python3 quant_glm.py --model_path {浮点权重路径} --save_directory {W8A8C8量化权重路径} --device_type npu --act_method 2 --disable_level L0 --w_bit 8 --a_bit 8 --use_kvcache_quant True --calib_file ../common/mix_dataset_glm.json --anti_file ../common/mix_dataset_glm.json --trust_remote_code True