当前位置:   article > 正文

Aquila2-34B推出Int4量化版本,低资源实现最强开源模型性能_autoloader = autoloader("aquila2", model_name=mode

autoloader = autoloader("aquila2", model_name=model_name, all_devices=true)

图片

日前,智源团队发布了中英双语基础模型 Aquila2-34B以及中英双语对话模型AquilaChat2-34B,在各种中英双语主/客观综合评测中全面领先现有的全球开源模型(包括LLama-70B等)。其强大的推理(Reasoning)能力在多项推理评测中超越 LLama2-70B、GPT3.5等模型,仅次于 GPT4。

为了降低开发者使用大模型的门槛,智源Aquila团队在AquilaChat2 系列模型基础上整合了Int4量化技术和QLoRA微调推理技术,显著降低了34B级别大模型的训练和推理所需的资源,为用户在低资源环境中运行大参数模型提供了新的可能。

  • 经过 Int4 量化,AquilaChat2-34B 模型用7B量级模型相近的GPU资源消耗,提供了超越Llama2-70B模型的性能。

  • 利用 QLoRA 进行 AquilaChat2-34B 微调训练,实现“降显存、提速度”两手抓,甚至可以用单张消费级显卡上进行34B级别模型微调。

* 注:AquilaChat2模型的 int4 量化及QLoRA使用方式见文末“开发者指南”一节,两步操作、快速体验!

面对当前芯片短缺的问题,如何通过训练及推理优化技术来降低对高端GPU卡的依赖,已经成为大模型产业发展的关键课题。智源团队坚定地探索大模型与低资源推理和训练技术的高效结合,降低大模型的使用门槛,让更多企业和个人“用上”大模型、“用好”大模型,为大模型的产业落地提供有力支持。

此外,Aquila2-34B 系列模型已与较低配置的AI芯片进行适配,已成功在 24G 显存的国产芯片上进行推理,后续将积极推动模型与更多国产异构芯片的适配,期望广泛链接大模型产业生态创新力量,推动AI软硬件生态繁荣。

仅需7B模型的资源消耗

性能超过Llama2-70B

通过 Int4 量化技术的支持,AquilaChat2-34B 仅需接近7B级别模型的GPU资源消耗,就能提供了超过Llama2-70B模型的性能。

如下表所示,经过 Int4量化之后,AquilaChat2-7B、34B模型的显存占用大幅降低了58%、70%,而模型综合性能指标仅降低了1.1%和0.7%。在Int4(Quantization)量化后能还能保持如此高的性能,得益于Aquila2模型本身出色的性能和稳健性。

图片

Aquila2 系列模型量化方式已集成至 github/FlagAI-Open/Aquila2 项目

https://github.com/FlagAI-Open/Aquila2/blob/main/examples/predict_chat_quantize.py

 “降存提速”两手抓

不损失模型性能的高效微调

QLoRA技术将量化技术与LoRA微调技术相结合,首先将LLM进行4位量化,从而大幅减小了模型的内存占用,然后用Low Rank Adapters (LoRA)方法对量化后的LLM进行微调。LoRA使经过微调的模型能够保留大部分原始LLM的准确性,同时显著减小了模型的尺寸并提高了速度,实现了在基本不损失模型性能的情况下节省内存、提高训练速度的目的。

通过使用QLoRA技术,在34B模型上我们实现了超50倍显存降低(相对于全参数微调),同时实现了9倍的速度提升。

用户可以在消费级GPU(如单张不到3000元的2080Ti)上进行34B模型微调训练,进一步降低了个人和小团体研发AI模型的门槛。

图片

QLoRA显存占用训练速度与全参数对比(batch size都是1,34/7b 都是512长度,降低长度可以进一步降低显存占用和提升速度 )

QLoRA 方法已经集成至 Aquila2 开源仓库:

https://github.com/FlagAI-Open/Aquila2/blob/main/finetune/7B/finetune_qlora.sh

https://github.com/FlagAI-Open/Aquila2/blob/main/finetune/34B/finetune_qlora.sh

开发者指南

01 仅需2步即可对Aquila2 模型进行 Int4量化

操作步骤:

1) 安装下列第三方工具:FlagAI,Torch, Transformers

  1. pip install flagai
  2. pip install torch
  3. pip install transformers

2) 运行以下代码即可对原始模型进行量化推理:

  1. import torch
  2. from flagai.auto_model.auto_loader import AutoLoader
  3. from transformers import BitsAndBytesConfig
  4. model_name = 'AquilaChat2-34B'
  5. #model_name = 'AquilaChat2-7B'
  6. autoloader = AutoLoader("aquila2", model_name=model_name,
  7. quantization_config=BitsAndBytesConfig(
  8. load_in_4bit=True,
  9. bnb_4bit_use_double_quant=True,
  10. bnb_4bit_quant_type="nf4",
  11. bnb_4bit_compute_dtype=torch.bfloat16,
  12. ))
  13. model = autoloader.get_model()
  14. tokenizer = autoloader.get_tokenizer()
  15. test_data = [
  16. "北京的十大景点是什么?",
  17. "写一首中秋主题的五言绝句",
  18. "Write a tongue twister that's extremely difficult to pronounce.",
  19. ]
  20. for text in test_data:
  21. print(model.predict(text, tokenizer=tokenizer, model_name=model_name))

02 仅需2步即可使用 QLoRA 对 Aquila2 模型进行推理

操作步骤:

1) 安装FlagAI

pip install flagai

2) 准备好原始模型以及训练好的QLoRA模块路径,接着运行下列代码即可进行QLoRA推理:

  1. from flagai.auto_model.auto_loader import AutoLoader
  2. # 模型名称
  3. model_name = 'AquilaChat2-7B'
  4. # model_name = 'AquilaChat2-34B'
  5. # 需要额外提供Q-LoRA模块的地址
  6. autoloader = AutoLoader("aquila2", model_name=model_name,qlora_dir='./examples/checkpoints/qlora/aquila2chat-hf')
  7. model = autoloader.get_model()
  8. tokenizer = autoloader.get_tokenizer()
  9. # 对话测试样例
  10. test_data = [
  11. "北京的十大景点是什么?",
  12. "写一首中秋主题的五言绝句",
  13. ]
  14. for text in test_data:
  15. print(model.predict(text, tokenizer=tokenizer, model_name=model_name))

快速上手 Aquila2 系列模型

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/150305
推荐阅读
相关标签