Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FAQ] How to use Aquila ? 如何通过 FlagAI 使用 Aquila 系列模型? #371

Open
siyu-hu opened this issue Jun 12, 2023 · 11 comments
Labels
documentation Improvements or additions to documentation FAQ Frequently Asked Questions question Further information is requested

Comments

@siyu-hu
Copy link
Contributor

siyu-hu commented Jun 12, 2023

Aquila2 7B、34B 仓库地址:https://github.com/FlagAI-Open/Aquila2

一、安装部署

Q: 模型权重会持续更新吗?

会的,请注意查看变更日志:中文 / English

变更日志中有新的 md5 信息,大家可以先删除原来目录下的 model_pytorch.bin,再下载新权重。权重与之前完全兼容,使用方式不变。

Q: 系列模型有什么区别?

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 效果会更好。

@siyu-hu siyu-hu added the question Further information is requested label Jun 12, 2023
@marscrazy marscrazy pinned this issue Jun 12, 2023
@marscrazy marscrazy added FAQ Frequently Asked Questions documentation Improvements or additions to documentation labels Jun 12, 2023
@candowu
Copy link

candowu commented Jun 13, 2023

按照步骤操作,运行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
是否可以在一个干净环境中验证一下所提供的步骤?

@weicheng59
Copy link

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的版本。

@xiehust
Copy link

xiehust commented Jun 13, 2023

支持torch的版本是?貌似用2.0会报错
image

@Louis-y-nlp
Copy link

您好,想问一下关于最后一个QA的问题。您提到“可以直接基于 AquilaChat 进行大量领域数据的预训练”,也就是说经过了回答-提问这种数据格式做sft微调的模型,还可以继续再做next token predict预训练吗?

@BAAI-OpenPlatform
Copy link
Collaborator

支持torch的版本是?貌似用2.0会报错 image

这个问题可以安装最新的flagai来解决(需要安装pull下来的代码),也可以把torch版本改到2.0以下

@BAAI-OpenPlatform
Copy link
Collaborator

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的版本。

谢谢您的反馈,我们把版本给改回来

@BAAI-OpenPlatform
Copy link
Collaborator

按照步骤操作,运行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版本来解决

@BAAI-OpenPlatform
Copy link
Collaborator

您好,想问一下关于最后一个QA的问题。您提到“可以直接基于 AquilaChat 进行大量领域数据的预训练”,也就是说经过了回答-提问这种数据格式做sft微调的模型,还可以继续再做next token predict预训练吗?

是可以这样的,不过我觉得最好直接基于Aquila基础模型继续预训练

@2016bits
Copy link

2016bits commented Jul 6, 2023

请问'aquilacode-7b-nv'的推理过程如何批量生成

@baikai
Copy link

baikai commented Oct 25, 2023

您好@BAAI-OpenPlatform,我有2个问题想请教:aquila-7b微调之后如何用微调后的模型(包括lora方式)如何在推理中使用,文档里介绍没有很详细,只是叙述了两种微调方式如何进行;而一个是aquila-chat的data下面的两个*.jsonl的区别是什么?我们在补充微调用的prompt时该参考哪个?

@631068264
Copy link

怎么使用流式返回 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'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation FAQ Frequently Asked Questions question Further information is requested
Projects
None yet
Development

No branches or pull requests

10 participants