EETQ:轻松高效的Transformer量化方案
EETQEasy and Efficient Quantization for Transformers项目地址:https://gitcode.com/gh_mirrors/ee/EETQ
项目介绍
EETQ(Easy and Efficient Quantization for Transformers)是一个专为Transformer模型设计的量化库,旨在提供高性能的权重量化支持,特别是对NVIDIA GPU的优化。它实现了一种无需校准数据集且预先不需要模型量化的int8逐通道权重量化方法。EETQ利用FasterTransformer和TensorRT-LLM的高效GEMM(矩阵乘法)和GEMV(向量乘法)内核,即便在量化后,也能保持几乎无损的精度。该项目基于Apache-2.0许可协议,并兼容多种CUDA版本,适用于加速Transformer模型的推理过程。
项目快速启动
要开始使用EETQ,首先确保你的环境满足CUDA能力介于7.0到8.9之间的要求。接着,通过以下步骤安装EETQ:
pip install --no-cache-dir https://github.com/NetEase-FuXi/EETQ/releases/download/v1.0.0/EETQ-1.0.0+cu121+torch1.12.2-cp310-cp310-linux_x86_64.whl
或者从源码安装:
git clone https://github.com/NetEase-FuXi/EETQ.git
cd EETQ/
git submodule update --init --recursive
pip install .
快速启用量化,以一个假设的Transformer模型为例:
from transformers import AutoModelForCausalLM
from eetq import EetqConfig
path_to_model = "/path/to/your/model"
quantization_config = EetqConfig("int8")
model = AutoModelForCausalLM.from_pretrained(
path_to_model,
device_map="auto",
quantization_config=quantization_config
)
# 推理示例
# model.to("cuda:0") # 确保模型在GPU上运行
# res = model.generate(prompt) # 根据具体需求替换prompt
应用案例和最佳实践
在TGI中的应用
- 文本生成:可以将EETQ应用于TGI来加速预训练模型的文本生成任务,例如使用Mistral-7B-v0.1模型时加上
--quantize eetq
参数。
结合LoRAX的使用
- 低延迟部署:LoRAX启动器同样支持EETQ量化,通过添加相应的命令行参数实现模型的高效加载和执行。
使用于VLLM
- 虽然处于开发阶段,但EETQ也计划集成至VLLM中,以实现通过命令行参数加载量化模型的功能。
典型生态项目
EETQ与Hugging Face社区紧密相连,支持 Transformer 模型的量化优化,可广泛应用于自动机器翻译、对话系统、文档摘要等场景。通过集成EETQ,开发者能够在Hugging Face的模型库、Spaces和各种工具中提升他们的模型性能,尤其是在资源受限或追求极致效率的应用环境中。
本快速入门指南简要介绍了EETQ的基本概念、安装过程及应用实例,帮助用户迅速上手并探索其在不同项目中的潜力。记住,实际应用时请参考最新文档以获取更详细的信息和更新。
EETQEasy and Efficient Quantization for Transformers项目地址:https://gitcode.com/gh_mirrors/ee/EETQ