FlagAI
FlagAI copied to clipboard
[FAQ] How to use Aquila ? 如何通过 FlagAI 使用 Aquila 系列模型?
Aquila2 7B、34B 仓库地址:https://github.com/FlagAI-Open/Aquila2
一、安装部署
Q: 模型权重会持续更新吗?
变更日志中有新的 md5 信息,大家可以先删除原来目录下的 model_pytorch.bin,再下载新权重。权重与之前完全兼容,使用方式不变。
Q: 系列模型有什么区别?
- Aquila-7B、33B 是经过预训练的 base model,使用参考 这里 ./examples/Aquila
- AquilaChat-7B 是在 Aquila-7B 基础上进行 SFT 得到的对话模型,使用参考 这里 ./examples/Aquila/Aquila-chat
- AquilaCode-7B 是在 Aquila-7B 基础上进行 SFT 的“文本-代码”生成模型,使用参考 这里 ./examples/Aquila/Aquila-code
Q:如何下载 Aquila 权重?
Step1: 安装 FlagAI
pip install -U flagai
Step2: 本地下载运行 Aquila
运行 generate.py
📌大家也可以通过 FlagOpen 模型仓库 或者 huggingface.co/BAAI 下载权重。
Q:Aquila-7B 推理需要什么硬件资源?
最低硬件需求:运行Aquila-7B 系列需要内存 30G, 显存 18G,生成最大长度 2048 tokens。
使用 BMinf 低资源推理时,你不需要拥有高性能的显卡(小于12G)即可运行程序,生成最大长度 2048 tokens。但请注意需要先安装 bminf pip install bminf
Q:FlagAI 支持多种大模型训练框架(DeepSpeed BMtrain等) 有训练框架的版本要求吗?
[Option] BMTrain >= 0.2.2 DeepSpeed >= 0.7.7 FlashAttention >=1.0.2
Q: 怎么体验 AquilaChat-7B ?
请注意修改 model_name = 'aquilachat-7b'
prompt 的格式也需要用到 SFT 的固定格式
具体参考 ./Aquila-chat 目录下的样例
Q:AquilaChat 支持多轮对话吗?
支持,可以参考多轮对话示例: https://github.com/FlagAI-Open/FlagAI/blob/master/examples/Aquila/Aquila-chat/generate_chat.py#L51
Q:AquilaChat 生成为什么有很多 [UNK] 字符?
该问题在 FlagAI 1.7.2 中修复。建议升级版本。
二、未来计划
Q:Aquila 模型有后续迭代计划吗?
我们会持续调整训练数据、优化训练方法、提升模型性能,并持续开源更好的版本。请关注官方渠道更新,包括 FlagAI 仓库,FlagAI 知乎账号、FlagAI 官方技术交流群、智源研究院微信公众号、智源社区微信公众号。
Q:Aquila 有官方的评测结果吗?
评测结果见 FlagEval 官网:https://flageval.baai.ac.cn/
Q: Aquila 的训练数据会开源吗?
预训练数据和SFT数据暂时不会开源,但数据分布情况会在 官方技术报告 中分享。
Q:官方有体验 AquilaChat 网址 / WebUI 吗?
有。注册并登录 FlagOpen 官网,选择“能力服务-对话模型-能力试用”,填写申请表单。我们会按顺序优先通过真实姓名、公司或学校邮箱的申请。
三、其他问题
Q:悟道 · 天鹰Aquila系列模型是否可商用?
完全可以商用。源代码遵从 Apache 2.0 协议。模型权重遵从《智源Aquila系列模型许可协议》,许可及许可限制请点击查看。
Q:如果我想使用AquilaChat在自己的大量的领域数据上(10GB)做预训练, 然后在自己的小规模带标注的领域数据集(约200M)上再做微调,并且想保持Aquila基础的聊天能力(与我自己的领域数据无关的基础聊天能力和Aquila-Chat基本相当),我应该怎么做?
最好的方式是直接基于Aquila基础模型继续预训练。不过你也可以尝试直接基于 AquilaChat 进行大量领域数据的预训练,也可以提升模型在特定领域的能力。需要注意预训练完之后的 SFT 数据的多样性(这里指的是 task的类型需要足够多),比如去网上搜集其他通用的开源的 SFT 数据集,例如 COIG 和 OIG 等,混合着你需要的200M小数据集,一起做 SFT 效果会更好。
按照步骤操作,运行generate.py报错: ModuleNotFoundError: No module named 'bminf'
删除 generate.py 中的 import bminf 行,继续报错: ModuleNotFoundError: No module named 'torch._six'
运行generate_code.py报错 ModuleNotFoundError: No module named 'torch._six'
pytorch-lightning 1.6.5 pypi_0 pypi torch 2.0.1 pypi_0 pypi torchmetrics 0.11.4 pypi_0 pypi torchvision 0.15.2 pypi_0 pypi 是否可以在一个干净环境中验证一下所提供的步骤?
running install /home/asus/.local/lib/python3.10/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. warnings.warn( /home/asus/.local/lib/python3.10/site-packages/setuptools/command/easy_install.py:144: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools. warnings.warn( Traceback (most recent call last): File "/home/asus/llm/BMTrain/setup.py", line 74, in
setup( File "/home/asus/.local/lib/python3.10/site-packages/setuptools/init.py", line 87, in setup return distutils.core.setup(**attrs) File "/home/asus/.local/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/home/asus/.local/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/home/asus/.local/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/home/asus/.local/lib/python3.10/site-packages/setuptools/dist.py", line 1208, in run_command super().run_command(command) File "/home/asus/.local/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/home/asus/.local/lib/python3.10/site-packages/setuptools/command/install.py", line 74, in run self.do_egg_install() File "/home/asus/.local/lib/python3.10/site-packages/setuptools/command/install.py", line 117, in do_egg_install cmd.ensure_finalized() # finalize before bdist_egg munges install cmd File "/home/asus/.local/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 111, in ensure_finalized self.finalize_options() File "/home/asus/.local/lib/python3.10/site-packages/setuptools/command/easy_install.py", line 311, in finalize_options self.local_index = Environment(self.shadow_path + sys.path) File "/home/asus/.local/lib/python3.10/site-packages/pkg_resources/init.py", line 1044, in init self.scan(search_path) File "/home/asus/.local/lib/python3.10/site-packages/pkg_resources/init.py", line 1077, in scan self.add(dist) File "/home/asus/.local/lib/python3.10/site-packages/pkg_resources/init.py", line 1096, in add dists.sort(key=operator.attrgetter('hashcmp'), reverse=True) File "/home/asus/.local/lib/python3.10/site-packages/pkg_resources/init.py", line 2631, in hashcmp self.parsed_version, File "/home/asus/.local/lib/python3.10/site-packages/pkg_resources/init.py", line 2678, in parsed_version self._parsed_version = parse_version(self.version) File "/home/asus/.local/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/version.py", line 266, in init raise InvalidVersion(f"Invalid version: '{version}'") pkg_resources.extern.packaging.version.InvalidVersion: Invalid version: '1.1build1'
尝试安装 BMTrain 做预训练,但是发现flagai 需要的setuptools版本要大于 66.0.0 但是根据https://github.com/pypa/setuptools/issues/3772#issuecomment-1384342813 BMTrain 不支持 66.0.0的版本。
支持torch的版本是?貌似用2.0会报错
您好,想问一下关于最后一个QA的问题。您提到“可以直接基于 AquilaChat 进行大量领域数据的预训练”,也就是说经过了回答-提问这种数据格式做sft微调的模型,还可以继续再做next token predict预训练吗?
支持torch的版本是?貌似用2.0会报错
这个问题可以安装最新的flagai来解决(需要安装pull下来的代码),也可以把torch版本改到2.0以下
running install /home/asus/.local/lib/python3.10/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. warnings.warn( /home/asus/.local/lib/python3.10/site-packages/setuptools/command/easy_install.py:144: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools. warnings.warn( Traceback (most recent call last): File "/home/asus/llm/BMTrain/setup.py", line 74, in setup( File "/home/asus/.local/lib/python3.10/site-packages/setuptools/init.py", line 87, in setup return distutils.core.setup(**attrs) File "/home/asus/.local/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/home/asus/.local/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/home/asus/.local/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/home/asus/.local/lib/python3.10/site-packages/setuptools/dist.py", line 1208, in run_command super().run_command(command) File "/home/asus/.local/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/home/asus/.local/lib/python3.10/site-packages/setuptools/command/install.py", line 74, in run self.do_egg_install() File "/home/asus/.local/lib/python3.10/site-packages/setuptools/command/install.py", line 117, in do_egg_install cmd.ensure_finalized() # finalize before bdist_egg munges install cmd File "/home/asus/.local/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 111, in ensure_finalized self.finalize_options() File "/home/asus/.local/lib/python3.10/site-packages/setuptools/command/easy_install.py", line 311, in finalize_options self.local_index = Environment(self.shadow_path + sys.path) File "/home/asus/.local/lib/python3.10/site-packages/pkg_resources/init.py", line 1044, in init self.scan(search_path) File "/home/asus/.local/lib/python3.10/site-packages/pkg_resources/init.py", line 1077, in scan self.add(dist) File "/home/asus/.local/lib/python3.10/site-packages/pkg_resources/init.py", line 1096, in add dists.sort(key=operator.attrgetter('hashcmp'), reverse=True) File "/home/asus/.local/lib/python3.10/site-packages/pkg_resources/init.py", line 2631, in hashcmp self.parsed_version, File "/home/asus/.local/lib/python3.10/site-packages/pkg_resources/init.py", line 2678, in parsed_version self._parsed_version = parse_version(self.version) File "/home/asus/.local/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/version.py", line 266, in init raise InvalidVersion(f"Invalid version: '{version}'") pkg_resources.extern.packaging.version.InvalidVersion: Invalid version: '1.1build1'
尝试安装 BMTrain 做预训练,但是发现flagai 需要的setuptools版本要大于 66.0.0 但是根据https://github.com/pypa/setuptools/issues/3772#issuecomment-1384342813 BMTrain 不支持 66.0.0的版本。
谢谢您的反馈,我们把版本给改回来
按照步骤操作,运行generate.py报错: ModuleNotFoundError: No module named 'bminf'
删除 generate.py 中的 import bminf 行,继续报错: ModuleNotFoundError: No module named 'torch._six'
运行generate_code.py报错 ModuleNotFoundError: No module named 'torch._six'
pytorch-lightning 1.6.5 pypi_0 pypi torch 2.0.1 pypi_0 pypi torchmetrics 0.11.4 pypi_0 pypi torchvision 0.15.2 pypi_0 pypi 是否可以在一个干净环境中验证一下所提供的步骤?
可以安装最新的flagai仓库,也可以稍等一下我们发个1.7.2版本来解决
您好,想问一下关于最后一个QA的问题。您提到“可以直接基于 AquilaChat 进行大量领域数据的预训练”,也就是说经过了回答-提问这种数据格式做sft微调的模型,还可以继续再做next token predict预训练吗?
是可以这样的,不过我觉得最好直接基于Aquila基础模型继续预训练
请问'aquilacode-7b-nv'的推理过程如何批量生成
您好@BAAI-OpenPlatform,我有2个问题想请教:aquila-7b微调之后如何用微调后的模型(包括lora方式)如何在推理中使用,文档里介绍没有很详细,只是叙述了两种微调方式如何进行;而一个是aquila-chat的data下面的两个*.jsonl的区别是什么?我们在补充微调用的prompt时该参考哪个?
怎么使用流式返回 AquilaChat2-34B-16K
Traceback (most recent call last):
File "/data/home/yaokj5/dl/apps/intell-chat-backend/routers/chat.py", line 185, in predict
for new_response, _ in APP.get_model(model_id).stream_chat(query, history, logger=APP.logger, **kwargs):
File "/data/home/yaokj5/dl/apps/intell-chat-backend/models/baai.py", line 64, in stream_chat
for r in response:
File "/data/home/yaokj5/dl/apps/intell-chat-backend/models/baai.py", line 225, in aquila_generate_by_ids_stream
logits = self.model.forward(tokens[:, prev_pos:cur_pos], prev_pos)["logits"]
File "/home/yaokj5/anaconda3/envs/intell/lib/python3.10/site-packages/accelerate/hooks.py", line 164, in new_forward
output = module._old_forward(*args, **kwargs)
File "/home/yaokj5/.cache/huggingface/modules/transformers_modules/AquilaChat2-34B-16K/modeling_aquila.py", line 823, in forward
outputs = self.model(
File "/home/yaokj5/anaconda3/envs/intell/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "/home/yaokj5/.cache/huggingface/modules/transformers_modules/AquilaChat2-34B-16K/modeling_aquila.py", line 671, in forward
attention_mask = self._prepare_decoder_attention_mask(
File "/home/yaokj5/.cache/huggingface/modules/transformers_modules/AquilaChat2-34B-16K/modeling_aquila.py", line 608, in _prepare_decoder_attention_mask
expanded_attn_mask = _expand_mask(attention_mask, inputs_embeds.dtype, tgt_len=input_shape[-1]).to(
File "/home/yaokj5/.cache/huggingface/modules/transformers_modules/AquilaChat2-34B-16K/modeling_aquila.py", line 64, in _expand_mask
bsz, src_len = mask.size()
AttributeError: 'int' object has no attribute 'size'