- 查看这里。
SWIFT支持AWQ、GPTQ、FP8、BNB模型的量化导出。其中使用AWQ、GPTQ需使用校准数据集,量化性能较好但量化耗时较长;而FP8、BNB无需校准数据集,量化耗时较短。
| 量化技术 | 多模态 | 推理加速 | 继续训练 |
|---|---|---|---|
| FP8 | ✅ | ✅ | ✅ |
| GPTQ | ✅ | ✅ | ✅ |
| AWQ | ✅ | ✅ | ✅ |
| BNB | ❌ | ✅ | ✅ |
除SWIFT安装外,需要安装以下额外依赖:
# 使用awq量化:
# autoawq和cuda版本有对应关系,请按照`https://github.com/casper-hansen/AutoAWQ`选择版本
# 如果出现torch依赖冲突,请额外增加指令`--no-deps`
pip install autoawq -U
# 使用gptq量化:
# auto_gptq和cuda版本有对应关系,请按照`https://github.com/PanQiWei/AutoGPTQ#quick-installation`选择版本
pip install auto_gptq optimum -U
# 使用gptq v2量化:
pip install gptqmodel optimum -U
# 使用bnb量化:
pip install bitsandbytes -U我们提供了一系列脚本展现SWIFT的量化导出能力:
- 支持AWQ/GPTQ/GPTQ v2/BNB量化导出。
- 多模态量化: 支持使用GPTQ和AWQ对多模态模型进行量化,其中AWQ支持的多模态模型有限。参考这里。
- 更多系列模型的支持: 支持Bert,Reward Model的量化导出。
- 使用SWIFT量化导出的模型支持使用vllm/sglang/lmdeploy进行推理加速;也支持使用QLoRA继续进行SFT/RLHF。
SWIFT支持将训练/量化的模型重新推送到ModelScope/HuggingFace。默认推送到ModelScope,你可以指定--use_hf true推送到HuggingFace。
swift export \
--model output/vx-xxx/checkpoint-xxx \
--push_to_hub true \
--hub_model_id '<model-id>' \
--hub_token '<sdk-token>' \
--use_hf false小贴士:
- 你可以使用
--model <checkpoint-dir>或者--adapters <checkpoint-dir>指定需要推送的checkpoint目录,这两种写法在推送模型场景没有差异。 - 推送到ModelScope时,你需要确保你已经注册了魔搭账号,你的SDK token可以在该页面中获取。推送模型需确保sdk token的账号具有model_id对应组织的编辑权限。推送模型将自动创建对应model_id的模型仓库(如果该模型仓库不存在),你可以使用
--hub_private_repo true来自动创建私有的模型仓库。