Qwen-7B-main / FAQ_zh.md
znskiss's picture
Upload folder using huggingface_hub
ade0520

A newer version of the Gradio SDK is available: 5.0.2

Upgrade

FAQ

安装&环境

flash attention 安装失败

flash attention是一个用于加速模型训练推理的可选项,且仅适用于Turing、Ampere、Ada、Hopper架构的Nvidia GPU显卡(如H100、A100、RTX 3090、T4、RTX 2080),您可以在不安装flash attention的情况下正常使用模型进行推理。

我应该用哪个transformers版本?

建议使用4.31.0。

我把模型和代码下到本地,按照教程无法使用,该怎么办?

答:别着急,先检查你的代码是不是更新到最新版本,然后确认你是否完整地将模型checkpoint下到本地。

qwen.tiktoken这个文件找不到,怎么办?

这个是我们的tokenizer的merge文件,你必须下载它才能使用我们的tokenizer。注意,如果你使用git clone却没有使用git-lfs,这个文件不会被下载。如果你不了解git-lfs,可点击官网了解。

transformers_stream_generator/tiktoken/accelerate,这几个库提示找不到,怎么办?

运行如下命令:pip install -r requirements.txt。相关依赖库在https://github.com/QwenLM/Qwen-7B/blob/main/requirements.txt 可以找到。

Demo & 推理

是否提供Demo?CLI Demo及Web UI Demo?

web_demo.pycli_demo.py分别提供了Web UI以及CLI的Demo。请查看README相关内容了解更多。

我没有GPU,只用CPU运行CLI demo可以吗?

可以的,运行python cli_demo.py --cpu_only命令即可将模型读取到CPU并使用CPU进行推理。

Qwen支持流式推理吗?

Qwen当前支持流式推理。见位于modeling_qwen.pychat_stream函数。

使用chat_stream()生成混乱的内容及乱码,为什么?

这是由于模型生成过程中输出的部分token需要与后续token一起解码才能输出正常文本,单个token解码结果是无意义字符串,我们已经更新了tokenizer解码时的默认设置,避免这些字符串在生成结果中出现,如果仍有类似问题请更新模型至最新版本。

模型的输出看起来与输入无关/没有遵循指令/看起来呆呆的

请检查是否加载的是Qwen-7B-Chat模型进行推理,Qwen-7B模型是未经align的预训练基模型,不期望具备响应用户指令的能力。我们在模型最新版本已经对chatchat_stream接口内进行了检查,避免您误将预训练模型作为SFT/Chat模型使用。

是否有量化版本模型

目前Qwen支持基于bitsandbytes的8-bit和4-bit的量化推理。后续我们将进一步更新提供更加高效的量化推理实现,并提供对应的量化模型。

运行量化推理报错:importlib.metadata.PackageNotFoundError: No package metadata was found for bitsandbytes

对于linux 用户,直接pip install bitsandbytes即可。对于windows用户,可以 运行python -m pip install bitsandbytes --prefer-binary --extra-index-url=https://jllllll.github.io/bitsandbytes-windows-webui

生成序列较长后速度显著变慢

这一问题已经在最新版本中修复。请更新到最新代码。

处理长序列时效果有问题

请确认是否开启ntk。若要启用这些技巧,请将config.json里的use_dynamc_ntkuse_logn_attn设置为true。最新代码默认为true

微调

当前是否支持SFT和RLHF?

我们目前未提供SFT和RLHF代码。当前有多个外部项目已实现支持,如FastChatFireflyLLaMA Efficient Tuning等。我们会尽快更新这部分代码和说明。

Tokenizer

bos_id/eos_id/pad_id,这些token id不存在,为什么?

在训练过程中,我们仅使用<|endoftext|>这一token作为sample/document之间的分隔符及padding位置占位符,你可以将bos_id, eos_id, pad_id均指向tokenizer.eod_id。请阅读我们关于tokenizer的文档,了解如何设置这些id。