赞
踩
日前,智源团队发布了中英双语基础模型 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软硬件生态繁荣。
通过 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
操作步骤:
1) 安装下列第三方工具:FlagAI,Torch, Transformers
- pip install flagai
- pip install torch
- pip install transformers
2) 运行以下代码即可对原始模型进行量化推理:
- import torch
- from flagai.auto_model.auto_loader import AutoLoader
- from transformers import BitsAndBytesConfig
-
- model_name = 'AquilaChat2-34B'
- #model_name = 'AquilaChat2-7B'
-
- autoloader = AutoLoader("aquila2", model_name=model_name,
- quantization_config=BitsAndBytesConfig(
- load_in_4bit=True,
- bnb_4bit_use_double_quant=True,
- bnb_4bit_quant_type="nf4",
- bnb_4bit_compute_dtype=torch.bfloat16,
- ))
-
- model = autoloader.get_model()
- tokenizer = autoloader.get_tokenizer()
-
- test_data = [
- "北京的十大景点是什么?",
- "写一首中秋主题的五言绝句",
- "Write a tongue twister that's extremely difficult to pronounce.",
- ]
-
- for text in test_data:
- print(model.predict(text, tokenizer=tokenizer, model_name=model_name))
操作步骤:
1) 安装FlagAI
pip install flagai
2) 准备好原始模型以及训练好的QLoRA模块路径,接着运行下列代码即可进行QLoRA推理:
- from flagai.auto_model.auto_loader import AutoLoader
-
- # 模型名称
- model_name = 'AquilaChat2-7B'
- # model_name = 'AquilaChat2-34B'
-
- # 需要额外提供Q-LoRA模块的地址
- autoloader = AutoLoader("aquila2", model_name=model_name,qlora_dir='./examples/checkpoints/qlora/aquila2chat-hf')
-
- model = autoloader.get_model()
- tokenizer = autoloader.get_tokenizer()
-
- # 对话测试样例
- test_data = [
- "北京的十大景点是什么?",
- "写一首中秋主题的五言绝句",
- ]
-
- for text in test_data:
- print(model.predict(text, tokenizer=tokenizer, model_name=model_name))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。