LLMC的安装#

git clone https://github.com/ModelTC/llmc.git
cd llmc/
pip install -r requirements.txt

准备模型#

LLMC目前仅支持hugging face格式的模型。以Qwen2-0.5B为例,可以在这里找到模型。下载方式可以参考这里

大陆地区用户还可以使用hugging face镜像

一个简单的下载例子可以参考

pip install -U hf-transfer

HF_ENDPOINT=https://hf-mirror.com HF_HUB_ENABLE_HF_TRANSFER=1 huggingface-cli download --resume-download Qwen/Qwen2-0.5B --local-dir Qwen2-0.5B

下载数据集#

LLMC需要的数据集可以分为校准数据集测试数据集校准数据集可以在这里下载,测试数据集可以在这里下载

当然LLMC也支持在线下载数据集,只需要在config中的download设置为True即可。

calib:
    name: pileval
    download: True

设置配置文件#

所有的配置文件都在这里可以找到,同时关于配置文件的说明请参考此章节 以SmoothQuant为例,config这里

base:
    seed: &seed 42
model:
    type: Qwen2 # 设置模型名,可支持Llama,Qwen2,Llava,Gemma2等模型
    path: # 设置模型权重路径
    torch_dtype: auto
calib:
    name: pileval
    download: False
    path: # 设置校准数据集路径
    n_samples: 512
    bs: 1
    seq_len: 512
    preproc: pileval_smooth
    seed: *seed
eval:
    eval_pos: [pretrain, transformed, fake_quant]
    name: wikitext2
    download: False
    path: # 设置测试数据集路径
    bs: 1
    seq_len: 2048
quant:
    method: SmoothQuant
    weight:
        bit: 8
        symmetric: True
        granularity: per_channel
    act:
        bit: 8
        symmetric: True
        granularity: per_token
save:
    save_vllm: True # 当设置为True时,可以保存真实量化的整型模型,并通过VLLM推理引擎进行推理
    save_trans: False # 当设置为True,可以保存下调整之后的浮点权重
    save_path: ./save

有关于save的更多选项和说明,请参照此章节

LLMCconfigs/quantization/methods路径下,提供了很多的算法配置文件供大家参考。

开始运行#

LLMC无需安装,只需在运行脚本中将/path/to/llmc修改为LLMC本地路径即可。

llmc=/path/to/llmc
export PYTHONPATH=$llmc:$PYTHONPATH

根据你想运行的算法,需相应修改运行脚本中的配置路径。例如,${llmc}/configs/quantization/methods/SmoothQuant/smoothquant_w_a.yml对应的是 SmoothQuant 量化的配置文件。task_name用于指定LLMC运行时生成的日志文件名称

task_name=smooth_w_a
config=${llmc}/configs/quantization/methods/SmoothQuant/smoothquant_w_a.yml

当在运行脚本中,修改完相应的LLMC路径和config路径后,运行即可:

bash run_llmc.sh

量化推理#

假设你在配置文件中指定了保存真实量化模型的选项,例如 save_vllm: True,那么保存的真实量化模型即可直接用于对应的推理后端执行,具体可参照文档量化推理后端章节。

常见问题#

问题1

ValueError: Tokenizer class xxx does not exist or is not currently imported.

解决方法

pip install transformers –upgrade

问题2

下载数据集卡住,下载不下来

解决方法

大陆地区可能需要在vpn环境下才能正常访问hugging face的数据集

问题3

如果运行的是一个很大的模型,单卡显存放不下整个模型,那么eval的时候,会爆显存

解决方法

使用per block进行推理测试,打开inference_per_block,在不爆显存的前提下,适当提高bs以提高推理速度

bs: 10
inference_per_block: True

问题4

Exception: ./save/transformed_model existed before. Need check.

解决方法

保存的路径是一个已经存在的目录,需要换个不存在的保存目录