图片

日前,智源团队发布了中英双语基础模型 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

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))

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

操作步骤:

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))

快速上手 Aquila2 系列模型

👏🏻👏🏻👏🏻

悟道天鹰Aquila2-34B系列模型已开源并支持商用许可

欢迎社区开发者下载,并反馈使用体验!

使用方式一(推荐):通过 FlagAI 加载 Aquila2 系列模型

https://github.com/FlagAI-Open/Aquila2

使用方式二:通过 FlagOpen 模型仓库单独下载权重

https://model.baai.ac.cn/

使用方式三:通过 Hugging Face 加载 Aquila2 系列模型

https://huggingface.co/BAAI

   

图片

更大更强!有请智源 Uni3D 视觉大模型,从「最强2D」升维「最强3D」

最强开源中英双语大模型:悟道·天鹰340亿携全家桶登场

FlagEval 10月榜:新增Aquila2-34B、InternLM-20B、Qwen-14B等模型

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐