国产开源大模型再添重要玩家:BAAI发布开源可商用大模型Aquila

标签:#Aquila##国产大模型##大模型# 时间:2023/06/13 08:25:14 作者:小木

BAAI全称北京智源人工智能研究院(Beijing Academy of Artificial Intelligence),是国内非常重要的一个人工智能研究机构。此前发布了悟道系列数据集和大模型。这两天,他们开源了一个全新的国产开源大语言模型Aquila系列模型。该模型基于大量的中英文数据集训练,是一个完全开源可商用国产大语言模型。


这可能是目前第三个可以免费商用的国产大模型(前段时间清华大学NLP小组发布的CPM-Bee以及复旦大学的MOSS也是免费商用的模型)。Aquila中文名天鹰,其主要特点如下:

  • 完全开源,免费商用授权
  • 从0开始训练的全新的大模型
  • 基于Pile、RedPajama、悟道等中英文数据集训练
  • 中文支持良好

Aquila简介

目前,国产开源大语言模型包括如下几个:

模型名称 模型简介 商用授权 介绍博客
ChatGLM系列 智谱AI发布的最著名国产大模型,6B版本开源 收费商用 https://www.datalearner.com/blog/1051684420094069
MOSS系列 复旦大学邱锡鹏教授开源的一个大语言模型 免费商用授权 https://www.datalearner.com/ai-models/pretrained-models/MOSS
CPM-Bee 清华大学NLP小组开源大模型 免费商用授权 https://www.datalearner.com/blog/1051685537043575
Aquila BAAI开源大模型 免费商用授权 https://www.datalearner.com/blog/1051686615733942

此次发布的Aquila系列模型包括三种类型,基础大模型、chat微调系列和编程微调系列,后2类分别针对指令和编程优化,目前计划包含2个参数规模,7B和33B:

模型/Model 状态/State 能否商用/Commercial use? 预训练下载链接
Aquila-7B 已发布 https://model.baai.ac.cn/model-detail/100098
AquilaChat-7B 已发布 https://model.baai.ac.cn/model-detail/100101
AquilaCode-7B-NV 已发布 https://model.baai.ac.cn/model-detail/100102
AquilaCode-7B-TS 已发布 https://model.baai.ac.cn/model-detail/100099
Aquila-33B 6月底 6月底
AquilaChat-33B 6月底 6月底

上述模型系列中,AquilaCode-7B-TS是基于Tianshu-BI-V100训练的,其它模型均基于NVIDIA A100显卡训练。

Aquila系列模型是BAAI自己从0开始训练的大模型。是一种与LLaMA、GPT-3相似架构的生成式模型。底层的算子进行了重新设计,并基于中英文数据集训练。其中中文和英文采用不同的tokenizer。按照官方的说法,Aquila本身基于BMTrain并行训练,比Magtron+DeepSeed zero-2快8倍。Aquila与其他模型对比如下:

模型/Model 词表大小/Vocab size 说明/Note 英文平均tokens量/Avg tokens(English) 中文平均tokens量/Avg tokens(Chinesse) 代码平均tokens量/Avg tokens(code)
GPT2 50527 bpe 1717 1764 2323
LlaMA 32000 sp(bpe) 1805 1257 1970
Aquila 100000 bpe 1575 477 1679

Aquila训练数据集来源非常多样,包括Pile、RedPajama-Data-1T、Wikipedia、C4、悟道中文数据集、电子书、专利、百科、论坛、 github数据等。其训练数据不开源,未来将会公布数据集分布情况。

Aquila模型的使用

Aquila模型集成在FlagAI框架中,FlagAI全称Fast LArge-scale General AI models,也是一个大模型训练和推理的工具,由BAAI开源。官方宣称,该框架可以实现高效的训练与推理,包含丰富的工具包。本次发布的Aquila也是无缝集成在该框架中。

Aquila模型开源,支持使用FlagAI对Aquila进行训练、微调和推理。使用方法如下:

1、下载按照FlagAI工具

这步骤很简单,pip install flagai即可。注意,FlagAI底层需要PyTorch和transformer。同时也支持GPU的训练与推理,这意味着想用GPU的话需要安装CUDA以及支持CUDA的PyTorch。上述方法安装FlagAI之后就可以下载使用Aquila模型了。

2、Aquila模型权重下载

目前官方已经公开了7B系列4个模型的预训练权重文件,下载链接如下:

模型/Model 预训练下载链接
Aquila-7B https://model.baai.ac.cn/model-detail/100098
AquilaChat-7B https://model.baai.ac.cn/model-detail/100101
AquilaCode-7B-NV https://model.baai.ac.cn/model-detail/100102
AquilaCode-7B-TS https://model.baai.ac.cn/model-detail/100099

虽然,官方宣称支持直接在FlagAI中自动下载模型权重,但是建议大家从上述地址用其他工具下载,稳定性和速度可能会更好!

3、Aquila模型使用

需要注意的是,Aquila模型支持微调和推理。微调一般是基于基础模型进行有监督微调(Supversied Fine-tuning,SFT)。正常情况下chat类型的模型已经针对对话做过微调,而基础模型则更适合进一步微调。从官方的描述看,官方提供了微调脚本,这是基于bmtrain开发的。使用bash dist_trigger_docker.sh hostfile Aquila-chat.yaml aquila-7b [实验名 experiment name]即可。

而对于大多数用户来说,可能更多地是做推理,其代码如下:

  1. import os
  2. import torch
  3. from flagai.auto_model.auto_loader import AutoLoader
  4. from flagai.model.predictor.predictor import Predictor
  5. from flagai.data.tokenizer import Tokenizer
  6. import bminf
  7. state_dict = "./checkpoints_in/"
  8. model_name = 'aquila-7b' # 'aquila-33b'
  9. loader = AutoLoader(
  10. "lm",
  11. model_dir=state_dict,
  12. model_name=model_name,
  13. use_cache=True)
  14. model = loader.get_model()
  15. tokenizer = loader.get_tokenizer()
  16. model.eval()
  17. model.half()
  18. model.cuda()
  19. predictor = Predictor(model, tokenizer)
  20. text = "北京在哪儿?"
  21. text = f'{text}'
  22. print(f"text is {text}")
  23. with torch.no_grad():
  24. out = predictor.predict_generate_randomsample(text, out_max_length=200, temperature=0)
  25. print(f"pred is {out}")

Aquila模型其它注意事项和总结

从目前公布的信息看,Aquila是一个非常有潜力的模型,其训练数据超过LLaMA等。Aquila模型代码开源协议是Apache Licence 2.0,完全可商用,模型预训练结果开源协议是BAAI自己的协议(智源Aquila系列模型许可协议:https://github.com/FlagAI-Open/FlagAI/blob/master/BAAI_Aquila_Model_License.pdf )。但是,从协议内容看,这也是一个免费商用的开源协议。

Aquila已经开源了4个7B规模的模型,33B规模的模型官方宣称在6月底将会开源。

尽管Aquila有良好的开源协议和大量数据的训练,但是Aquila似乎也有一点小的“问题”,一个是当前开源的7B模型的推理目前没有看到量化模型版本的支持,需要30G的内存,18G的显存才能进行推理,要求比较高。其次,它支持的tokens数也不是很长。7B版本最大长度200个tokens。从前面的训练描述中也能看到,英文平均tokens长度1575,中文平均tokens长度477,代码平均tokens长度1679,比GPT-2和LLaMA都要小。是否会影响模型性能目前不确定。

但是,Aquila模型背后的机构和人员实力很强大,相信该模型继续发展迭代后,在未来也将会是一个非常重要的选择。

Aquila模型信息卡地址:https://www.datalearner.com/ai/pretrained-models/Aquila-7B

欢迎大家关注DataLearner官方微信,接受最新的AI技术推送
相关博客
Back to Top