QwenLM / Qwen2.5

Qwen2.5 is the large language model series developed by Qwen team, Alibaba Cloud.
8.21k stars 501 forks source link

[昇腾910B+AscendvLLM] 为什么Qwen2-7B-Instruct推理时总是在最前面加上一个链接 #852

Closed zhufeizzz closed 3 weeks ago

zhufeizzz commented 1 month ago

如图这样,微调前后推理都会加上这个链接。基于昇腾910B+AscendvLLM部署的 image

jklj077 commented 1 month ago

I don't really know and I also cannot reproduce with vllm on NVIDIA cards.

huyz-git commented 1 month ago

你是在用 fp16 跑推理么? Qwen2-7B-Instruct 这个模型在 910B 设备上,用 fp16 推理会溢出,导致 prefill 过后所有的 logits 全部为 nan,于是第一个 token 采样就永远是 0 号 token(即感叹号)。 解决方式是改用 bf16。 我印象中 AscendvLLM 的 FX 后端是支持 bf16 的。 如果你的 AscendvLLM 用的是 MindIE 后端,那么由于 MindIE 目前还不能支持 Qwen 系列模型的 bf16 推理,所以暂时无解,你可以设个 INF_NAN_MODE_ENABLE=0 让 MindIE 将溢出值截断而不是变 nan,这样它首 token 不会永远是 0 号,但是会导致推理质量变得不稳定。

zhufeizzz commented 1 month ago

你是在用 fp16 跑推理么?

是的,用的MindIE模式+fp16,我试下你的方案

DoiiarX commented 1 month ago

你是在用 fp16 跑推理么? qwen2-7B-instruct 这个模型在 910B 设备上,用 fp16 推理会溢出,导致 prefill 过后所有的 logits 全部为 nan,于是第一个 token 采样就永远是 0 号 token(即感叹号)。 解决方式是改用 bf16。 我印象中 AscendvLLM 的 FX 后端是支持 bf16 的。 如果你的 AscendvLLM 用的是 MindIE 后端,那么由于 MindIE 目前还不能支持 Qwen 系列模型的 bf16 推理,所以暂时无解,你可以设个 让 MindIE 将溢出值截断而不是变 nan,这样它首 token 不会永远是 0 号,但是会导致推理质量变得不稳定。INF_NAN_MODE_ENABLE=0

还能有这种bug?哈人。

huyz-git commented 1 month ago

你是在用 fp16 跑推理么? qwen2-7B-instruct 这个模型在 910B 设备上,用 fp16 推理会溢出,导致 prefill 过后所有的 logits 全部为 nan,于是第一个 token 采样就永远是 0 号 token(即感叹号)。 解决方式是改用 bf16。 我印象中 AscendvLLM 的 FX 后端是支持 bf16 的。 如果你的 AscendvLLM 用的是 MindIE 后端,那么由于 MindIE 目前还不能支持 Qwen 系列模型的 bf16 推理,所以暂时无解,你可以设个 让 MindIE 将溢出值截断而不是变 nan,这样它首 token 不会永远是 0 号,但是会导致推理质量变得不稳定。INF_NAN_MODE_ENABLE=0

还能有这种bug?哈人。

这也不能叫 bug 吧。 毕竟模型本来是 bf16 的,而 bf16 比 fp16 有更多的指数位,所以 bf16 正常推理的模型拿 fp16 去跑,确实是有可能会溢出的。

huyz-git commented 1 month ago

你是在用 fp16 跑推理么?

是的,用的MindIE模式+fp16,我试下你的方案

MindIE 我近期发现了一个能强行让它跑 BF16 的方法: 找到 atb-models/atb_llm/models/qwen2/flash_causal_qwen2.py 这个文件,然后:

这样改完之后,它用 BF16 能跑 32K 长序列不报错,并且我测的一些评测集也和 A100 基本一致。 但由于 MindIE 的模型组件是闭源的,因此我也没法判断这样改会不会有什么别的副作用。

zhufeizzz commented 3 weeks ago

问题已解决,换成AscendOPP-DEFAULT推理后端+BF16就可以了。MindIE不支持BF16推理

wcollin commented 3 days ago

问题已解决,换成AscendOPP-DEFAULT推理后端+BF16就可以了。MindIE不支持BF16推理 具体是怎么解决的能分享下吗?碰到同样的问题

zhufeizzz commented 2 days ago

问题已解决,换成AscendOPP-DEFAULT推理后端+BF16就可以了。MindIE不支持BF16推理 具体是怎么解决的能分享下吗?碰到同样的问题

就是推理模式设置为Default,然后才能用BF16 export INFER_MODE=DEFAULT export USE_MASKFREE_ATTN=1 export MASKFREE_ATTN_THRESHOLD=16384