Repository: https://github.com/Cornell-RelaxML/quip-sharp
Blog post: https://cornell-relaxml.github.io/quip-sharp/
相关pr已经合到text-generation-webui里面了
网友测试效果非常好
Model | QuIP PPL | QuIP size | Q2_K* PPL | Q2_K* size | Q2_K PPL | Q2_K size |
---|---|---|---|---|---|---|
LLaMA-2-7B | 8.201 | 2.15 GB | 6.766 | 2.03 GB | 6.025 | 2.23 GB |
LLaMA-2-13B | 6.003 | 3.83 GB | 5.523 | 3.86 GB | 5.152 | 4.26 GB |
LLaMA-2-70B | 4.156 | 18.2 GB | 3.915 | 20.3 GB | 3.671 | 22.9 GB |
LLaMA-1-7B | 8.146 | 2.15 GB | 7.114 | 2.03 GB | 6.355 | 2.23 GB |
LLaMA-1-13B | 6.353 | 3.83 GB | 5.846 | 3.86 GB | 5.371 | 4.26 GB |
LLaMA-1-30B | 5.311 | 8.89 GB | 4.827 | 9.54 GB | 4.489 | 10.55 GB |
安装
The installation is currently manual, but later I will add it to the one-click installer.
clone & install
git clone 'https://github.com/Cornell-RelaxML/quip-sharp' repositories/quip-sharp
cd repositories/quip-sharp/quiptools
python setup.py install
cd ../../..
需要有c++编译器 (g++), 装好了nvcc
安装依赖包
pip install fast-hadamard-transform glog==0.3.1 primefac==2.0.12
下载模型
python download-model.py relaxml/Llama-2-70b-E8P-2Bit
python download-model.py oobabooga/llama-tokenizer
可以启动了
python server.py --model relaxml_Llama-2-70b-E8P-2Bit --loader 'QuIP#'
用llama.cpp的小伙伴可以看下面地址
https://github.com/ggerganov/llama.cpp/discussions/4327
作者目前提供了所有的llama版本的量化模型,在官方仓库提供了量化后的脚本。
对于非llama结构的模型,在官方仓库里。目前,hessian_offline_llama.py、quantize_llama.py和hfize_llama.py是针对Llama架构编写的。然而,它们唯一的“特殊”之处在于识别需要量化的相关nn.Linear层(q/k/v/o/up/gate/down),注入Hessian hooks并对其进行量化。如果您想量化非Llama架构的模型,您需要找到相关的nn.Linear文件并创建自己的hessian_offline/quantize/hfize文件。这应该很简单,如果遇到任何问题,可以随时在GitHub上提交issue。您还需要将HF源代码中的modeling_.py复制到models/文件夹中,并将相关的nn.Linear层替换为QuantizedLinear层(参见models/llama.py的实现方式)。我们当前的quantize_llama.py实现将q/k/v层和up/gate层进行了融合,以提高速度,因为它们共享相同的Hessians。然而,这不是必需的,您也可以单独量化这些层。
最后,周末快乐,不写原理了,感兴趣的可以从上面提供的链接去看