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

[BUG] RuntimeError: probability tensor contains either inf, nan or element < 0 #848

Closed
2 tasks done
JingyiChang opened this issue Dec 22, 2023 · 66 comments
Closed
2 tasks done
Labels
help wanted Open for contributions from the community

Comments

@JingyiChang
Copy link

是否已有关于该错误的issue或讨论? | Is there an existing issue / discussion for this?

  • 我已经搜索过已有的issues和讨论 | I have searched the existing issues / discussions

该问题是否在FAQ中有解答? | Is there an existing answer for this in FAQ?

  • 我已经搜索过FAQ | I have searched FAQ

当前行为 | Current Behavior

执行web_demo.py,本地加载模型,问答框界面是:回复内容是多种语言随机组合,生成部分无语义、无逻辑文字后,报该错误。
1.部署Qwen_1.8B-Chat 也遇到该问题,参考其他issue,设置device_map="cuda:0",该问题消失。
2.部署Qwen72B,再次遇到该问题,参考其他相关issue修改do_sample,topk,temperature均未解决。
后台显卡占用:
-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.116.04 Driver Version: 525.116.04 CUDA Version: 12.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |

| 0 NVIDIA RTX A6000 Off | 00000000:01:00.0 Off | Off |
| 30% 39C P2 93W / 300W | 27262MiB / 49140MiB | 99% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 NVIDIA RTX A6000 Off | 00000000:23:00.0 Off | Off |
| 30% 38C P2 76W / 300W | 29882MiB / 49140MiB | 3% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 2 NVIDIA RTX A6000 Off | 00000000:81:00.0 Off | Off |
| 30% 38C P2 70W / 300W | 29882MiB / 49140MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 3 NVIDIA RTX A6000 Off | 00000000:C1:00.0 Off | Off |
| 30% 39C P2 80W / 300W | 29882MiB / 49140MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 4 NVIDIA RTX A6000 Off | 00000000:E1:00.0 Off | Off |
| 30% 37C P2 76W / 300W | 28926MiB / 49140MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
结合1.8B部署考虑是不是transformer架构模型并行,但单卡推理引发的问题?尝试使用vllm框架,设置tensor_parallel_size=4,后台:
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.146.02 Driver Version: 535.146.02 CUDA Version: 12.2 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA RTX A6000 Off | 00000000:01:00.0 Off | Off |
| 30% 46C P2 99W / 300W | 1060MiB / 49140MiB | 100% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
| 1 NVIDIA RTX A6000 Off | 00000000:23:00.0 Off | Off |
| 30% 47C P2 99W / 300W | 1068MiB / 49140MiB | 100% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
| 2 NVIDIA RTX A6000 Off | 00000000:81:00.0 Off | Off |
| 30% 46C P2 91W / 300W | 1068MiB / 49140MiB | 100% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
| 3 NVIDIA RTX A6000 Off | 00000000:C1:00.0 Off | Off |
| 30% 50C P2 104W / 300W | 1028MiB / 49140MiB | 100% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
| 4 NVIDIA RTX A6000 Off | 00000000:E1:00.0 Off | Off |
| 30% 27C P8 7W / 300W | 3MiB / 49140MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
显存占用太少了,这是模型没完全加载?等待很久后报错:

The actor died unexpectedly before finishing this task. class_name: RayWorkerVllm actor_id: xxx pid: xxx namespace: xxx ip: xxxxx The actor is dead because its worker process has died. Worker exit type: SYSTEM_ERROR Worker exit detail: Worker unexpectedly exits with a connection error code 2. End of file. There are some potential root causes**. (1) The process is killed by SIGKILL by OOM killer due to high memory usage. (2) ray stop --force is called. (3) The worker is crashed unexpectedly due to SIGSEGV or other unexpected errors.**

  File "/data/xxxx/code/Qwen/Qwen-main/vLLM_infer.py", line 3, in <module>    qwen72b = LLM("/data/xxxx/code/Qwen/Qwen-72B-Chat/", tensor_parallel_size=4, trust_remote_code=True, gpu_memory_utilization=0.99) ray.exceptions.RayActorError: The actor died unexpectedly before finishing this task. class_name: RayWorkerVllm actor_id: xxxx pid: xxx namespace: xxxx ip: xxxxx The actor is dead because its worker process has died. Worker exit type: SYSTEM_ERROR Worker exit detail: Worker unexpectedly exits with a connection error code 2. End of file. There are some potential root causes. (1) The process is killed by SIGKILL by OOM killer due to high memory usage. (2) ray stop --force is called. (3) The worker is crashed unexpectedly due to SIGSEGV or other unexpected errors.


RuntimeError: probability tensor contains either inf, nan or element < 0 traceback详情:
The model is automatically converting to bf16 for faster inference. If you want to disable the automatic precision, please manually add bf16/fp16/fp32=True to "AutoModelForCausalLM.from_pretrained".
Loading checkpoint shards: 100%|████████████████████████████████████████████████████████████████████████████████████████| 82/82 [00:26<00:00,  3.08it/s]
Running on local URL:  http://127.0.0.1:8000
To create a public link, set `share=True` in `launch()`.
User: 你好
Traceback (most recent call last):
  File "/home/user/.conda/envs/Qwen_vllm/lib/python3.10/site-packages/gradio/queueing.py", line 407, in call_prediction
    output = await route_utils.call_process_api(
  File "/home/user/.conda/envs/Qwen_vllm/lib/python3.10/site-packages/gradio/route_utils.py", line 226, in call_process_api
    output = await app.get_blocks().process_api(
  File "/home/user/.conda/envs/Qwen_vllm/lib/python3.10/site-packages/gradio/blocks.py", line 1550, in process_api
    result = await self.call_function(
  File "/home/user/.conda/envs/Qwen_vllm/lib/python3.10/site-packages/gradio/blocks.py", line 1199, in call_function
    prediction = await utils.async_iteration(iterator)
  File "/home/user/.conda/envs/Qwen_vllm/lib/python3.10/site-packages/gradio/utils.py", line 519, in async_iteration
    return await iterator.__anext__()
  File "/home/user/.conda/envs/Qwen_vllm/lib/python3.10/site-packages/gradio/utils.py", line 512, in __anext__
    return await anyio.to_thread.run_sync(
  File "/home/user/.conda/envs/Qwen_vllm/lib/python3.10/site-packages/anyio/to_thread.py", line 33, in run_sync
    return await get_asynclib().run_sync_in_worker_thread(
  File "/home/user/.conda/envs/Qwen_vllm/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 877, in run_sync_in_worker_thread
    return await future
  File "/home/user/.conda/envs/Qwen_vllm/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 807, in run
    result = context.run(func, *args)
  File "/home/user/.conda/envs/Qwen_vllm/lib/python3.10/site-packages/gradio/utils.py", line 495, in run_sync_iterator_async
    return next(iterator)
  File "/home/user/.conda/envs/Qwen_vllm/lib/python3.10/site-packages/gradio/utils.py", line 649, in gen_wrapper
    yield from f(*args, **kwargs)
  File "/data/changjingyi/code/Qwen/Qwen-main/web_demo.py", line 125, in predict
    for response in model.chat_stream(tokenizer, _query, history=_task_history, generation_config=config):
  File "/home/user/.cache/huggingface/modules/transformers_modules/Qwen-72B-Chat/modeling_qwen.py", line 1214, in stream_generator
    for token in self.generate_stream(
  File "/home/user/.conda/envs/Qwen_vllm/lib/python3.10/site-packages/torch/utils/_contextlib.py", line 56, in generator_context
    response = gen.send(request)
  File "/home/user/.conda/envs/Qwen_vllm/lib/python3.10/site-packages/transformers_stream_generator/main.py", line 969, in sample_stream
    next_tokens = torch.multinomial(probs, num_samples=1).squeeze(1)
RuntimeError: probability tensor contains either `inf`, `nan` or element < 0

期望行为 | Expected Behavior

能够正常运行Qwen-72B-Chat

复现方法 | Steps To Reproduce

除了generation_config修改,其他代码未动,执行web_demo.py,设置本地加载模型。(模型是hugging face下载的)flash_attn=false.
generation_config:

{
  "chat_format": "chatml",
  "eos_token_id": 151643,
  "pad_token_id": 151643,
  "max_window_size": 6144,
  "max_new_tokens": 512,
  "do_sample": true,
  "repetition_penalty": 1.1,
  "top_p":1,
  "top_k":0,
  "transformers_version": "4.36.2"
}

运行环境 | Environment

- OS:Ubuntu 20.04
- Python:3.10.13
- Transformers:4.36.2
- PyTorch:cu12.1+torch2.1.2
- CUDA (`python -c 'import torch; print(torch.version.cuda)'`):12.1

其他包版本:
accelerate                    0.25.0
gradio                        3.50.2
gradio_client                 0.6.1
Jinja2                        3.1.2
tokenizers                    0.15.0
torch                         2.1.2+cu121
torchaudio                    2.1.2+cu121
torchvision                   0.16.2+cu121
transformers                  4.36.2
transformers-stream-generator 0.0.4
vllm                          0.2.6
xformers                      0.0.23.post1

备注 | Anything else?

No response

@matianlongg
Copy link

同样 ,我也有这问题。

@jklj077
Copy link
Contributor

jklj077 commented Dec 22, 2023

torch 2.1.2+cu121

没装flash-attn的话,会走torch的SDPA,好像torch 2.1.2的这个操作有BUG,试试降级到比如2.1.1?

@jklj077
Copy link
Contributor

jklj077 commented Dec 22, 2023

@mtl940610 环境啥样的?

@JingyiChang
Copy link
Author

JingyiChang commented Dec 22, 2023

torch 2.1.2+cu121

没装flash-attn的话,会走torch的SDPA,好像torch 2.1.2的这个操作有BUG,试试降级到比如2.1.1?

之前是cu11.8版本+2.1.1torch+flash-attn,不管开不开flashattn都有这个问题。之后部署vllm时,xformer安装后,版本冲突,一直无法正常调用,所以现在升级到了12.1,torch2.1.2。
我可以再试试看降torch版本2.1.1,如果有flash_attn 还需要降级吗?

@matianlongg
Copy link

@mtl940610 环境啥样的?

  • OS:Ubuntu 20.04
  • Python:3.10.13
  • Transformers:4.32.0
  • PyTorch:cu12.2+torch2.1.1
    显卡是A6000 装了flash-attn也不行,多卡跑14b和72b都不行 cuda:0单卡可以跑14b

@matianlongg
Copy link

@mtl940610 环境啥样的?

同样的环境 4090 没有问题,我把conda 复制到了A6000的机器 就会有这个问题

@jklj077
Copy link
Contributor

jklj077 commented Dec 22, 2023

我可以再试试看降torch版本2.1.1,如果有flash_attn 还需要降级吗?

按理说不用了,不是这里的问题。

同样的环境4090没有问题,我把conda 复制到了A6000的机器 就会有这个问题

感谢信息!这个很有用,我们检查下。

@jklj077
Copy link
Contributor

jklj077 commented Dec 22, 2023

两位环境跟我们测试过的主要差异点就是卡型A6000,且是多卡下异常,单卡下正常。我们找了个类似的机器试了下,emm... 还是没复现出来 😢

主要配置

  • GPU: 8xA10 24GB or 5xA10 24GB (我们没有A6000的机器,A10跟A6000芯片都是GA102,Compute Capability都是sm86,基本是同款卡了)
  • nvidia-driver: 525.105.17
  • cuda-toolkit: 12-1
  • pytorch: 2.1.1+cu121
  • transformers: 4.36.2
  • accelerate: 0.25.0
  • flash-attn: N/A
  • Model: Qwen-14B-Chat最新版
显存占用

8卡:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.105.17   Driver Version: 525.105.17   CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA A10          On   | 00000000:69:00.0 Off |                    0 |
|  0%   46C    P0    59W / 150W |   3838MiB / 23028MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  NVIDIA A10          On   | 00000000:6A:00.0 Off |                    0 |
|  0%   46C    P0    60W / 150W |   4846MiB / 23028MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   2  NVIDIA A10          On   | 00000000:71:00.0 Off |                    0 |
|  0%   46C    P0    60W / 150W |   4846MiB / 23028MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   3  NVIDIA A10          On   | 00000000:72:00.0 Off |                    0 |
|  0%   45C    P0    59W / 150W |   4846MiB / 23028MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   4  NVIDIA A10          On   | 00000000:E9:00.0 Off |                    0 |
|  0%   45C    P0    57W / 150W |   4846MiB / 23028MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   5  NVIDIA A10          On   | 00000000:EA:00.0 Off |                    0 |
|  0%   45C    P0    59W / 150W |   4846MiB / 23028MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   6  NVIDIA A10          On   | 00000000:F0:00.0 Off |                    0 |
|  0%   44C    P0    58W / 150W |   4846MiB / 23028MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   7  NVIDIA A10          On   | 00000000:F1:00.0 Off |                    0 |
|  0%   46C    P0    61W / 150W |   4566MiB / 23028MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

5卡:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.105.17   Driver Version: 525.105.17   CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA A10          On   | 00000000:69:00.0 Off |                    0 |
|  0%   41C    P0    58W / 150W |   5670MiB / 23028MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  NVIDIA A10          On   | 00000000:6A:00.0 Off |                    0 |
|  0%   42C    P0    59W / 150W |   7152MiB / 23028MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   2  NVIDIA A10          On   | 00000000:71:00.0 Off |                    0 |
|  0%   41C    P0    58W / 150W |   7152MiB / 23028MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   3  NVIDIA A10          On   | 00000000:72:00.0 Off |                    0 |
|  0%   41C    P0    65W / 150W |   7152MiB / 23028MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   4  NVIDIA A10          On   | 00000000:E9:00.0 Off |                    0 |
|  0%   41C    P0    59W / 150W |   5624MiB / 23028MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   5  NVIDIA A10          On   | 00000000:EA:00.0 Off |                    0 |
|  0%   35C    P8    16W / 150W |      0MiB / 23028MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   6  NVIDIA A10          On   | 00000000:F0:00.0 Off |                    0 |
|  0%   34C    P8    15W / 150W |      0MiB / 23028MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   7  NVIDIA A10          On   | 00000000:F1:00.0 Off |                    0 |
|  0%   35C    P8    16W / 150W |      0MiB / 23028MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
测试样例结果
In [1]: from transformers import AutoModelForCausalLM, AutoTokenizer

In [2]: tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen-14B-Chat", trust_remote_code=True)

In [3]: model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen-14B-Chat", device_map="auto", trust_remote_code=True).eval()
Warning: please make sure that you are using the latest codes and checkpoints, especially if you used Qwen-7B before 09.25.2023.请使用最新模型和代码尤其如果你在9月25日前已经开始使用Qwen-7B千万注意不要使用错误代码和模型The model is automatically converting to bf16 for faster inference. If you want to disable the automatic precision, please manually add bf16/fp16/fp32=True to "AutoModelForCausalLM.from_pretrained".
Try importing flash-attention for faster inference...
Warning: import flash_attn rotary fail, please install FlashAttention rotary to get higher efficiency https://github.com/Dao-AILab/flash-attention/tree/main/csrc/rotary
Warning: import flash_attn rms_norm fail, please install FlashAttention layer_norm to get higher efficiency https://github.com/Dao-AILab/flash-attention/tree/main/csrc/layer_norm
Warning: import flash_attn fail, please install FlashAttention to get higher efficiency https://github.com/Dao-AILab/flash-attention
Loading checkpoint shards: 100%|████████████████████████████████████████████████████████████████████████████████████████████| 15/15 [00:05<00:00,  2.58it/s]

In [4]: response, history = model.chat(tokenizer, "你好", history=None)

In [5]: response
Out[5]: '你好!有什么我能帮助你的吗?'

In [6]: response, history = model.chat(tokenizer, "给我讲一个年轻人奋斗创业最终取得成功的故事。", history=history)

In [7]: print(response)
当然可以故事的主角是一个名叫张强的年轻人他有一个梦想那就是创办自己的公司在大学毕业后他决定投身于他的梦想中开始了艰苦的创业之路他开始做市场调查写商业计划书并尝试找寻投资者然而在最初的几年里他遇到了很多困难和挫折有时候他会感到无助和绝望但他从未放弃经过几年的努力他的公司在市场上逐渐崭露头角得到了越来越多的关注和认可他在行业内赢得了口碑公司的规模也不断扩大终于有一天他的努力得到了回报一家大型投资机构决定向他的公司投资并且支持他实现更大的目标张强的成功并非偶然而是他对梦想的坚持和不屈不挠的努力所换来的他的故事告诉我们只要有梦想不怕困难坚持不懈地去追求就一定能够实现自己的目标In [8]: response, history = model.chat(tokenizer, "给这个故事起一个标题", history=history)

In [9]: print(response)
《青年创业者从零到一的奋斗之旅
web_demo样例结果

image

conda export环境
name: cu121
channels:
  - pytorch
  - nvidia
  - defaults
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - abseil-cpp=20211102.0=hd4dd3e8_0
  - arrow-cpp=11.0.0=h374c478_2
  - asttokens=2.0.5=pyhd3eb1b0_0
  - aws-c-common=0.6.8=h5eee18b_1
  - aws-c-event-stream=0.1.6=h6a678d5_6
  - aws-checksums=0.1.11=h5eee18b_2
  - aws-sdk-cpp=1.8.185=h721c034_1
  - backcall=0.2.0=pyhd3eb1b0_0
  - blas=1.0=mkl
  - boost-cpp=1.82.0=hdb19cb5_2
  - bottleneck=1.3.5=py311hbed6279_0
  - brotli-python=1.0.9=py311h6a678d5_7
  - bzip2=1.0.8=h7b6447c_0
  - c-ares=1.19.1=h5eee18b_0
  - ca-certificates=2023.12.12=h06a4308_0
  - certifi=2023.11.17=py311h06a4308_0
  - cffi=1.16.0=py311h5eee18b_0
  - charset-normalizer=2.0.4=pyhd3eb1b0_0
  - cryptography=41.0.7=py311hdda0065_0
  - cuda-cudart=12.1.105=0
  - cuda-cupti=12.1.105=0
  - cuda-libraries=12.1.0=0
  - cuda-nvrtc=12.1.105=0
  - cuda-nvtx=12.1.105=0
  - cuda-opencl=12.3.101=0
  - cuda-runtime=12.1.0=0
  - decorator=5.1.1=pyhd3eb1b0_0
  - executing=0.8.3=pyhd3eb1b0_0
  - ffmpeg=4.3=hf484d3e_0
  - filelock=3.13.1=py311h06a4308_0
  - freetype=2.12.1=h4a9f257_0
  - gflags=2.2.2=he6710b0_0
  - giflib=5.2.1=h5eee18b_3
  - glog=0.5.0=h2531618_0
  - gmp=6.2.1=h295c915_3
  - gmpy2=2.1.2=py311hc9b5ff0_0
  - gnutls=3.6.15=he1e5248_0
  - grpc-cpp=1.48.2=he1ff14a_1
  - icu=73.1=h6a678d5_0
  - idna=3.4=py311h06a4308_0
  - intel-openmp=2023.1.0=hdb19cb5_46306
  - ipython=8.15.0=py311h06a4308_0
  - jedi=0.18.1=py311h06a4308_1
  - jinja2=3.1.2=py311h06a4308_0
  - jpeg=9e=h5eee18b_1
  - krb5=1.20.1=h143b758_1
  - lame=3.100=h7b6447c_0
  - lcms2=2.12=h3be6417_0
  - ld_impl_linux-64=2.38=h1181459_1
  - lerc=3.0=h295c915_0
  - libboost=1.82.0=h109eef0_2
  - libbrotlicommon=1.0.9=h5eee18b_7
  - libbrotlidec=1.0.9=h5eee18b_7
  - libbrotlienc=1.0.9=h5eee18b_7
  - libcublas=12.1.0.26=0
  - libcufft=11.0.2.4=0
  - libcufile=1.8.1.2=0
  - libcurand=10.3.4.101=0
  - libcurl=8.4.0=h251f7ec_1
  - libcusolver=11.4.4.55=0
  - libcusparse=12.0.2.55=0
  - libdeflate=1.17=h5eee18b_1
  - libedit=3.1.20230828=h5eee18b_0
  - libev=4.33=h7f8727e_1
  - libevent=2.1.12=hdbd6064_1
  - libffi=3.4.4=h6a678d5_0
  - libgcc-ng=11.2.0=h1234567_1
  - libgfortran-ng=11.2.0=h00389a5_1
  - libgfortran5=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libiconv=1.16=h7f8727e_2
  - libidn2=2.3.4=h5eee18b_0
  - libjpeg-turbo=2.0.0=h9bf148f_0
  - libnghttp2=1.57.0=h2d74bed_0
  - libnpp=12.0.2.50=0
  - libnvjitlink=12.1.105=0
  - libnvjpeg=12.1.1.14=0
  - libpng=1.6.39=h5eee18b_0
  - libprotobuf=3.20.3=he621ea3_0
  - libssh2=1.10.0=hdbd6064_2
  - libstdcxx-ng=11.2.0=h1234567_1
  - libtasn1=4.19.0=h5eee18b_0
  - libthrift=0.15.0=h1795dd8_2
  - libtiff=4.5.1=h6a678d5_0
  - libunistring=0.9.10=h27cfd23_0
  - libuuid=1.41.5=h5eee18b_0
  - libwebp=1.3.2=h11a3e52_0
  - libwebp-base=1.3.2=h5eee18b_0
  - llvm-openmp=14.0.6=h9e868ea_0
  - lz4-c=1.9.4=h6a678d5_0
  - markupsafe=2.1.1=py311h5eee18b_0
  - matplotlib-inline=0.1.6=py311h06a4308_0
  - mkl=2023.1.0=h213fc3f_46344
  - mkl-service=2.4.0=py311h5eee18b_1
  - mkl_fft=1.3.8=py311h5eee18b_0
  - mkl_random=1.2.4=py311hdb19cb5_0
  - mpc=1.1.0=h10f8cd9_1
  - mpfr=4.0.2=hb69a4c5_1
  - mpi=1.0=mpich
  - mpi4py=3.1.4=py311hfc96bbd_0
  - mpich=3.3.2=external_0
  - mpmath=1.3.0=py311h06a4308_0
  - ncurses=6.4=h6a678d5_0
  - nettle=3.7.3=hbbd107a_1
  - networkx=3.1=py311h06a4308_0
  - numexpr=2.8.7=py311h65dcdc2_0
  - numpy=1.26.2=py311h08b1b3b_0
  - numpy-base=1.26.2=py311hf175353_0
  - openh264=2.1.1=h4ff587b_0
  - openjpeg=2.4.0=h3ad879b_0
  - openssl=3.0.12=h7f8727e_0
  - orc=1.7.4=hb3bc3d3_1
  - pandas=2.1.4=py311ha02d727_0
  - parso=0.8.3=pyhd3eb1b0_0
  - pexpect=4.8.0=pyhd3eb1b0_3
  - pickleshare=0.7.5=pyhd3eb1b0_1003
  - pillow=10.0.1=py311ha6cbd5a_0
  - pip=23.3.1=py311h06a4308_0
  - prompt-toolkit=3.0.36=py311h06a4308_0
  - ptyprocess=0.7.0=pyhd3eb1b0_2
  - pure_eval=0.2.2=pyhd3eb1b0_0
  - pyarrow=11.0.0=py311hd8e8d9b_1
  - pycparser=2.21=pyhd3eb1b0_0
  - pygments=2.15.1=py311h06a4308_1
  - pyopenssl=23.2.0=py311h06a4308_0
  - pysocks=1.7.1=py311h06a4308_0
  - python=3.11.5=h955ad1f_0
  - python-dateutil=2.8.2=pyhd3eb1b0_0
  - python-tzdata=2023.3=pyhd3eb1b0_0
  - pytorch=2.1.1=py3.11_cuda12.1_cudnn8.9.2_0
  - pytorch-cuda=12.1=ha16c6d3_5
  - pytorch-mutex=1.0=cuda
  - pytz=2023.3.post1=py311h06a4308_0
  - pyyaml=6.0.1=py311h5eee18b_0
  - re2=2022.04.01=h295c915_0
  - readline=8.2=h5eee18b_0
  - requests=2.31.0=py311h06a4308_0
  - scipy=1.11.4=py311h08b1b3b_0
  - setuptools=68.2.2=py311h06a4308_0
  - six=1.16.0=pyhd3eb1b0_1
  - snappy=1.1.10=h6a678d5_1
  - sqlite=3.41.2=h5eee18b_0
  - stack_data=0.2.0=pyhd3eb1b0_0
  - sympy=1.12=py311h06a4308_0
  - tbb=2021.8.0=hdb19cb5_0
  - tk=8.6.12=h1ccaba5_0
  - torchaudio=2.1.1=py311_cu121
  - torchtriton=2.1.0=py311
  - torchvision=0.16.1=py311_cu121
  - traitlets=5.7.1=py311h06a4308_0
  - tzdata=2023c=h04d1e81_0
  - urllib3=1.26.18=py311h06a4308_0
  - utf8proc=2.6.1=h27cfd23_0
  - wcwidth=0.2.5=pyhd3eb1b0_0
  - wheel=0.41.2=py311h06a4308_0
  - xz=5.4.5=h5eee18b_0
  - yaml=0.2.5=h7b6447c_0
  - zlib=1.2.13=h5eee18b_0
  - zstd=1.5.5=hc292b87_0
  - pip:
      - accelerate==0.25.0
      - aiofiles==23.2.1
      - altair==5.2.0
      - annotated-types==0.6.0
      - anyio==3.7.1
      - attrs==23.1.0
      - click==8.1.7
      - contourpy==1.2.0
      - cycler==0.12.1
      - einops==0.7.0
      - fastapi==0.105.0
      - ffmpy==0.3.1
      - fonttools==4.47.0
      - fsspec==2023.12.2
      - gradio==3.41.2
      - gradio-client==0.5.0
      - h11==0.14.0
      - httpcore==1.0.2
      - httpx==0.26.0
      - huggingface-hub==0.20.1
      - importlib-resources==6.1.1
      - jsonschema==4.20.0
      - jsonschema-specifications==2023.11.2
      - kiwisolver==1.4.5
      - latex2mathml==3.77.0
      - markdown==3.5.1
      - matplotlib==3.8.2
      - mdtex2html==1.2.0
      - orjson==3.9.10
      - packaging==23.2
      - psutil==5.9.7
      - pydantic==2.5.2
      - pydantic-core==2.14.5
      - pydub==0.25.1
      - pyparsing==3.1.1
      - python-multipart==0.0.6
      - referencing==0.32.0
      - regex==2023.10.3
      - rpds-py==0.15.2
      - safetensors==0.4.1
      - semantic-version==2.10.0
      - sniffio==1.3.0
      - starlette==0.27.0
      - tiktoken==0.5.2
      - tokenizers==0.15.0
      - toolz==0.12.0
      - tqdm==4.66.1
      - transformers==4.36.2
      - transformers-stream-generator==0.0.4
      - typing-extensions==4.9.0
      - uvicorn==0.25.0
      - websockets==11.0.3
prefix: /root/miniconda3/envs/cu121

@jklj077
Copy link
Contributor

jklj077 commented Dec 22, 2023

有没有容易复现的样例供我们参考下

@JingyiChang
Copy link
Author

JingyiChang commented Dec 22, 2023

有没有容易复现的样例供我们参考下
奇怪的是同样的环境,1.8B单卡推理没问题,只要涉及到多卡,就会这样。。😓🤯

name: Qwen_vllm
dependencies:
  - _libgcc_mutex=0.1=conda_forge
  - _openmp_mutex=4.5=2_gnu
  - bzip2=1.0.8=hd590300_5
  - ca-certificates=2023.11.17=hbcca054_0
  - ld_impl_linux-64=2.40=h41732ed_0
  - libffi=3.4.2=h7f98852_5
  - libgcc-ng=13.2.0=h807b86a_3
  - libgomp=13.2.0=h807b86a_3
  - libnsl=2.0.1=hd590300_0
  - libsqlite=3.44.2=h2797004_0
  - libuuid=2.38.1=h0b41bf4_0
  - libzlib=1.2.13=hd590300_5
  - ncurses=6.4=h59595ed_2
  - openssl=3.2.0=hd590300_1
  - pip=23.3.2=pyhd8ed1ab_0
  - python=3.10.13=hd12c33a_0_cpython
  - readline=8.2=h8228510_1
  - setuptools=68.2.2=pyhd8ed1ab_0
  - tk=8.6.13=noxft_h4845f30_101
  - xz=5.2.6=h166bdaf_0
  - pip:
    - accelerate==0.25.0
    - aiofiles==23.2.1
    - aiohttp==3.9.1
    - aioprometheus==23.3.0
    - aiosignal==1.3.1
    - altair==5.2.0
    - anyio==3.7.1
    - async-timeout==4.0.3
    - attrs==23.1.0
    - auto-gptq==0.6.0
    - certifi==2023.11.17
    - charset-normalizer==3.3.2
    - click==8.1.7
    - coloredlogs==15.0.1
    - contourpy==1.2.0
    - cycler==0.12.1
    - datasets==2.15.0
    - dill==0.3.7
    - dropout-layer-norm==0.1
    - einops==0.7.0
    - exceptiongroup==1.2.0
    - fastapi==0.105.0
    - ffmpy==0.3.1
    - filelock==3.13.1
    - flash-attn==2.3.6
    - fonttools==4.47.0
    - frozenlist==1.4.1
    - fschat==0.2.34
    - fsspec==2023.10.0
    - gekko==1.0.6
    - gradio==3.50.2
    - gradio-client==0.6.1
    - h11==0.14.0
    - httpcore==1.0.2
    - httptools==0.6.1
    - httpx==0.26.0
    - huggingface-hub==0.20.1
    - humanfriendly==10.0
    - idna==3.6
    - importlib-resources==6.1.1
    - jinja2==3.1.2
    - jsonschema==4.20.0
    - jsonschema-specifications==2023.11.2
    - kiwisolver==1.4.5
    - latex2mathml==3.77.0
    - markdown==3.5.1
    - markdown-it-py==3.0.0
    - markdown2==2.4.12
    - markupsafe==2.1.3
    - matplotlib==3.8.2
    - mdtex2html==1.2.0
    - mdurl==0.1.2
    - mpmath==1.3.0
    - msgpack==1.0.7
    - multidict==6.0.4
    - multiprocess==0.70.15
    - networkx==3.2.1
    - nh3==0.2.15
    - ninja==1.11.1.1
    - numpy==1.26.2
    - optimum==1.16.1
    - orjson==3.9.10
    - packaging==23.2
    - pandas==2.1.4
    - peft==0.7.1
    - pillow==10.1.0
    - prompt-toolkit==3.0.43
    - protobuf==4.25.1
    - psutil==5.9.7
    - pyarrow==14.0.2
    - pyarrow-hotfix==0.6
    - pydantic==1.10.13
    - pydub==0.25.1
    - pygments==2.17.2
    - pyparsing==3.1.1
    - python-dateutil==2.8.2
    - python-dotenv==1.0.0
    - python-multipart==0.0.6
    - pytz==2023.3.post1
    - pyyaml==6.0.1
    - quantile-python==1.1
    - ray==2.9.0
    - referencing==0.32.0
    - regex==2023.10.3
    - requests==2.31.0
    - rich==13.7.0
    - rotary-emb==0.1
    - rouge==1.0.1
    - rpds-py==0.15.2
    - safetensors==0.4.1
    - scipy==1.11.4
    - semantic-version==2.10.0
    - sentencepiece==0.1.99
    - shortuuid==1.0.11
    - six==1.16.0
    - sniffio==1.3.0
    - starlette==0.27.0
    - svgwrite==1.4.3
    - sympy==1.12
    - tiktoken==0.5.2
    - tokenizers==0.15.0
    - toolz==0.12.0
    - torch==2.1.2+cu121
    - torchaudio==2.1.2+cu121
    - torchvision==0.16.2+cu121
    - tqdm==4.66.1
    - transformers==4.36.2
    - transformers-stream-generator==0.0.4
    - triton==2.1.0
    - typing-extensions==4.9.0
    - tzdata==2023.3
    - urllib3==2.1.0
    - uvicorn==0.24.0.post1
    - uvloop==0.19.0
    - vllm==0.2.6
    - watchfiles==0.21.0
    - wavedrom==2.0.3.post3
    - wcwidth==0.2.12
    - websockets==11.0.3
    - wheel==0.41.3
    - xformers==0.0.23.post1
    - xxhash==3.4.1
    - yarl==1.9.4
prefix: /home/user/.conda/envs/Qwen_vllm

@glmapper
Copy link

有没有容易复现的样例供我们参考下
奇怪的是同样的环境,1.8B单卡推理没问题,只要涉及到多卡,就会这样。。😓🤯

name: Qwen_vllm
dependencies:
  - _libgcc_mutex=0.1=conda_forge
  - _openmp_mutex=4.5=2_gnu
  - bzip2=1.0.8=hd590300_5
  - ca-certificates=2023.11.17=hbcca054_0
  - ld_impl_linux-64=2.40=h41732ed_0
  - libffi=3.4.2=h7f98852_5
  - libgcc-ng=13.2.0=h807b86a_3
  - libgomp=13.2.0=h807b86a_3
  - libnsl=2.0.1=hd590300_0
  - libsqlite=3.44.2=h2797004_0
  - libuuid=2.38.1=h0b41bf4_0
  - libzlib=1.2.13=hd590300_5
  - ncurses=6.4=h59595ed_2
  - openssl=3.2.0=hd590300_1
  - pip=23.3.2=pyhd8ed1ab_0
  - python=3.10.13=hd12c33a_0_cpython
  - readline=8.2=h8228510_1
  - setuptools=68.2.2=pyhd8ed1ab_0
  - tk=8.6.13=noxft_h4845f30_101
  - xz=5.2.6=h166bdaf_0
  - pip:
    - accelerate==0.25.0
    - aiofiles==23.2.1
    - aiohttp==3.9.1
    - aioprometheus==23.3.0
    - aiosignal==1.3.1
    - altair==5.2.0
    - anyio==3.7.1
    - async-timeout==4.0.3
    - attrs==23.1.0
    - auto-gptq==0.6.0
    - certifi==2023.11.17
    - charset-normalizer==3.3.2
    - click==8.1.7
    - coloredlogs==15.0.1
    - contourpy==1.2.0
    - cycler==0.12.1
    - datasets==2.15.0
    - dill==0.3.7
    - dropout-layer-norm==0.1
    - einops==0.7.0
    - exceptiongroup==1.2.0
    - fastapi==0.105.0
    - ffmpy==0.3.1
    - filelock==3.13.1
    - flash-attn==2.3.6
    - fonttools==4.47.0
    - frozenlist==1.4.1
    - fschat==0.2.34
    - fsspec==2023.10.0
    - gekko==1.0.6
    - gradio==3.50.2
    - gradio-client==0.6.1
    - h11==0.14.0
    - httpcore==1.0.2
    - httptools==0.6.1
    - httpx==0.26.0
    - huggingface-hub==0.20.1
    - humanfriendly==10.0
    - idna==3.6
    - importlib-resources==6.1.1
    - jinja2==3.1.2
    - jsonschema==4.20.0
    - jsonschema-specifications==2023.11.2
    - kiwisolver==1.4.5
    - latex2mathml==3.77.0
    - markdown==3.5.1
    - markdown-it-py==3.0.0
    - markdown2==2.4.12
    - markupsafe==2.1.3
    - matplotlib==3.8.2
    - mdtex2html==1.2.0
    - mdurl==0.1.2
    - mpmath==1.3.0
    - msgpack==1.0.7
    - multidict==6.0.4
    - multiprocess==0.70.15
    - networkx==3.2.1
    - nh3==0.2.15
    - ninja==1.11.1.1
    - numpy==1.26.2
    - optimum==1.16.1
    - orjson==3.9.10
    - packaging==23.2
    - pandas==2.1.4
    - peft==0.7.1
    - pillow==10.1.0
    - prompt-toolkit==3.0.43
    - protobuf==4.25.1
    - psutil==5.9.7
    - pyarrow==14.0.2
    - pyarrow-hotfix==0.6
    - pydantic==1.10.13
    - pydub==0.25.1
    - pygments==2.17.2
    - pyparsing==3.1.1
    - python-dateutil==2.8.2
    - python-dotenv==1.0.0
    - python-multipart==0.0.6
    - pytz==2023.3.post1
    - pyyaml==6.0.1
    - quantile-python==1.1
    - ray==2.9.0
    - referencing==0.32.0
    - regex==2023.10.3
    - requests==2.31.0
    - rich==13.7.0
    - rotary-emb==0.1
    - rouge==1.0.1
    - rpds-py==0.15.2
    - safetensors==0.4.1
    - scipy==1.11.4
    - semantic-version==2.10.0
    - sentencepiece==0.1.99
    - shortuuid==1.0.11
    - six==1.16.0
    - sniffio==1.3.0
    - starlette==0.27.0
    - svgwrite==1.4.3
    - sympy==1.12
    - tiktoken==0.5.2
    - tokenizers==0.15.0
    - toolz==0.12.0
    - torch==2.1.2+cu121
    - torchaudio==2.1.2+cu121
    - torchvision==0.16.2+cu121
    - tqdm==4.66.1
    - transformers==4.36.2
    - transformers-stream-generator==0.0.4
    - triton==2.1.0
    - typing-extensions==4.9.0
    - tzdata==2023.3
    - urllib3==2.1.0
    - uvicorn==0.24.0.post1
    - uvloop==0.19.0
    - vllm==0.2.6
    - watchfiles==0.21.0
    - wavedrom==2.0.3.post3
    - wcwidth==0.2.12
    - websockets==11.0.3
    - wheel==0.41.3
    - xformers==0.0.23.post1
    - xxhash==3.4.1
    - yarl==1.9.4
prefix: /home/user/.conda/envs/Qwen_vllm

是否可以发起个远程协助,请 @jklj077 在我们 5 张 A6000 的机器上看看情况,前面提到通过 A10 没有复现,而我们目前应该算是有稳定的复现场景

@jklj077
Copy link
Contributor

jklj077 commented Dec 25, 2023

这个环境我重建总报错,有不在官方源中的软件包,也有些依赖不满足;删掉后能重建成功,但就不是提供的环境了。

排除软件环境问题还有一个办法,如果有docker的话,可以pull一下我们提供的docker镜像看看多卡是否还能复现。

@lpy86786
Copy link

有没有容易复现的样例供我们参考下

我也遇到了同样的报错问题。
使用Qwen-7B-Chat-Int4时,自动分配到单卡上了所以正常运行
使用Qwen-7B-Chat或Qwen-14B-Chat-Int4,自动分配到多卡上,输入hello返回乱码,返回几个乱码之后就报这个错了

OS: Windows 10.0.19045.2006
CPU: 2x Xeon E5-2696v3
GPU: 4x NVIDIA Tesla P40 24GB
GPU驱动版本:537.13

我把整个运行环境打了个包,希望能对复现问题有帮助:
链接:https://pan.baidu.com/s/15bkCYFkXqEOoATQ8-FprcQ?pwd=qenv
提取码:qenv
使用:在QwenEnv下新建一个QwenModel文件夹,然后放入Qwen-7B-Chat-Int4等模型文件夹
构建的时候使用了单独下载的:
torch-2.1.2+cu121-cp311-cp311-win_amd64.whl
torchvision-0.16.2+cu121-cp311-cp311-win_amd64.whl
torchaudio-2.1.2+cu121-cp311-cp311-win_amd64.whl

@JingyiChang
Copy link
Author

JingyiChang commented Dec 26, 2023

这个环境我重建总报错,有不在官方源中的软件包,也有些依赖不满足;删掉后能重建成功,但就不是提供的环境了。

排除软件环境问题还有一个办法,如果有docker的话,可以pull一下我们提供的docker镜像看看多卡是否还能复现。

目前测下来的情况应该和环境没关系。Qwen1.8B、Qwen72B int4单卡都可以正常推,多卡(device_map="auto")就会出现这个问题。重新搭环境部署baichuan2-13B,也出现了这种情况(单卡正常推,多卡tensor异常)。debug出现的问题与baichuan-inc/Baichuan2#291 比较相似,应该是forward,output生成中的某一步有问题,不知道是和卡(A6000)有关,还是其他情况。有哪些函数/方法/config和多卡推理相关吗?模型是正常均匀加载的,推理报错,具体的问题还在继续排查。

@JingyiChang
Copy link
Author

JingyiChang commented Dec 26, 2023

这个环境我重建总报错,有不在官方源中的软件包,也有些依赖不满足;删掉后能重建成功,但就不是提供的环境了。
排除软件环境问题还有一个办法,如果有docker的话,可以pull一下我们提供的docker镜像看看多卡是否还能复现。

目前测下来的情况应该和环境没关系。Qwen1.8B、Qwen72B int4单卡都可以正常推,多卡(device_map="auto")就会出现这个问题。重新搭环境部署baichuan2-13B,也出现了这种情况(单卡正常推,多卡tensor异常)。debug出现的问题与baichuan-inc/Baichuan2#291 比较相似,应该是forward,output生成中的某一步有问题,不知道是和卡(A6000)有关,还是其他情况。有哪些函数/方法/config和多卡推理相关吗?模型是正常均匀加载的,推理报错,具体的问题还在继续排查。

测试代码:

from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation import GenerationConfig
model_path="./Qwen/Qwen-72B-Chat"
tokenizer = AutoTokenizer.from_pretrained(model_path,  trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map="auto", trust_remote_code=True).eval()
response, history = model.chat(tokenizer, "你好", history=None)
print(response)

问题:
modeling_qwen.py ->chat()->self.generate() ->return super().generate()==>QWenModel(QWenPreTrainedModel)]==>forward()
初始hidden_states:

tensor([[[-0.0004, -0.0003, -0.0002,  ...,  0.0002,  0.0004,  0.0004],
         [-0.0010, -0.0278,  0.0059,  ...,  0.0016, -0.0034,  0.0131],
         [-0.0016, -0.0095,  0.0010,  ...,  0.0085, -0.0015,  0.0036],
         ...,
         [-0.0004, -0.0003, -0.0002,  ...,  0.0002,  0.0004,  0.0004],
         [-0.0049, -0.0034, -0.0034,  ..., -0.0040,  0.0121,  0.0070],
         [-0.0016, -0.0095,  0.0010,  ...,  0.0085, -0.0015,  0.0036]]],
       device='cuda:0', dtype=torch.bfloat16)
       
# torch.Size([1, 20, 8192])

经过所有block后()
for i, (block, layer_past) in enumerate(zip(self.h, past_key_values)):

hidden_states值变得很奇怪,并换了机器:

tensor([[[ 15.3750, -18.8750,  41.7500,  ...,  35.5000,  47.5000,  22.1250],
         [ 15.3750, -18.8750,  41.7500,  ...,  35.5000,  47.5000,  22.1250],
         [ 15.3750, -18.8750,  41.7500,  ...,  35.5000,  47.5000,  22.1250],
         ...,
         [ 15.3750, -18.8750,  41.7500,  ...,  35.5000,  47.5000,  22.1250],
         [ 15.3750, -18.8750,  41.7500,  ...,  35.5000,  47.5000,  22.1250],
         [ 15.3750, -18.8750,  41.7500,  ...,  35.5000,  47.5000,  22.1250]]],
       device='cuda:4', dtype=torch.bfloat16)

经过多次forward ,generate循环,变成空 :

tensor([[[0., 0., 0.,  ..., 0., 0., 0.]]], device='cuda:4',
       dtype=torch.bfloat16)

Qwen-72B-Chat:
输入“你好”:
关闭flat_attn,设置fp32=true,返回的是中文“内调和的助手,去需要来三个一个小时到发现”,然后报OOM;
关闭flat_attn,设置bf16=true,返回各种语言组合“ (cdמשקל🕣_DOUBLE Sync使我-General العسكرية”,报RuntimeError: probability tensor contains either inf, nan or element < 0

@jklj077
Copy link
Contributor

jklj077 commented Dec 28, 2023

  1. 建议使用我们提供的Docker Image或按照提供的conda环境配置,以彻底排除软件环境的配置问题。
  2. 如果处在不稳定的网络环境下,建议从ModelScope下载模型文件,以排除文件损坏的可能。
  3. 如果问题仍能复现(特别是您使用非Qwen模型也有该问题),硬件或硬件配置问题不能排除,建议寻求相关运维的支持。

@chopin1998
Copy link

chopin1998 commented Jan 3, 2024

  1. 建议使用我们提供的Docker Image或按照提供的conda环境配置,以彻底排除软件环境的配置问题。
  2. 如果处在不稳定的网络环境下,建议从ModelScope下载模型文件,以排除文件损坏的可能。
  3. 如果问题仍能复现(特别是您使用非Qwen模型也有该问题),硬件或硬件配置问题不能排除,建议寻求相关运维的支持。

您好, 我这边一样的问题, 四卡3090,

环境的话 用native和 你们的docker都试过,

单卡推理没有问题, 多卡就会报错, 模型可以加载到指定的卡上去, 但是chat 就不行
有没有办法解决?

@lpy86786
Copy link

lpy86786 commented Jan 3, 2024

有没有容易复现的样例供我们参考下

我也遇到了同样的报错问题。 使用Qwen-7B-Chat-Int4时,自动分配到单卡上了所以正常运行 使用Qwen-7B-Chat或Qwen-14B-Chat-Int4,自动分配到多卡上,输入hello返回乱码,返回几个乱码之后就报这个错了

OS: Windows 10.0.19045.2006 CPU: 2x Xeon E5-2696v3 GPU: 4x NVIDIA Tesla P40 24GB GPU驱动版本:537.13

我把整个运行环境打了个包,希望能对复现问题有帮助: 链接:https://pan.baidu.com/s/15bkCYFkXqEOoATQ8-FprcQ?pwd=qenv 提取码:qenv 使用:在QwenEnv下新建一个QwenModel文件夹,然后放入Qwen-7B-Chat-Int4等模型文件夹 构建的时候使用了单独下载的: torch-2.1.2+cu121-cp311-cp311-win_amd64.whl torchvision-0.16.2+cu121-cp311-cp311-win_amd64.whl torchaudio-2.1.2+cu121-cp311-cp311-win_amd64.whl

尝试禁用部分计算卡:

  1. 在Windows任务管理器里禁用4块P40(24GB)中的任意两块卡之后,Qwen-7B-Chat、Qwen-14B-Chat-Int4由输出乱码变为正常运行(device_map="auto")。只禁用1块卡会报相同的错误。使用Qwen-7B-Chat时,第一块卡占用14GB,第二块卡占用17GB显存
  2. 如果不禁用,仅在命令行里改环境变量 set CUDA_VISIBLE_DEVICES=0,1 ,观察到只有两块卡的显存上升,但仍旧输出乱码并报错
  3. Qwen-72B-Chat-Int4由于两块卡显存不够,出现CUDA out of memory。观察到第一块卡仅加载到16GB就停止了,导致第二张卡爆显存。有没有更好的解决方法?

@xfcoms
Copy link

xfcoms commented Jan 4, 2024

同样问题,自己服务器运行72B,用6张v100S报和楼主一样的错误,乱码报错;相同的软件环境用单张4090+大内存,chat一句话成功了。魔塔还是huggingface的都下载试过了,而且文件做了校验是对的,都是一样的问题,是不是对老显卡的多卡支持有问题? 现在我又在6*v100s试过了千问14B,device_map=cuda:0 可以正常运行,设置为auto就会复现错误。

@jklj077
Copy link
Contributor

jklj077 commented Jan 4, 2024

@lpy86786 感谢提供信息!可以看下禁用卡前后nvidia-smi topo -m的结果吗。

@jklj077
Copy link
Contributor

jklj077 commented Jan 4, 2024

@chopin1998 您用提供的docker image也会有问题的话,个人感觉硬件配置问题的可能性更大。但我们的环境都复现不出来这个问题,我们也没什么解决办法。

@jklj077
Copy link
Contributor

jklj077 commented Jan 4, 2024

@xfcoms 感觉基本排除软件环境的问题了。因为相对新的显卡(A6000)也有报这个问题,似乎跟显卡新旧关系有限。

@jklj077
Copy link
Contributor

jklj077 commented Jan 4, 2024

各位的显卡之间有SLI之类的连接吗

@xfcoms
Copy link

xfcoms commented Jan 4, 2024

SLI

没有哈,直接插的超微服务器

@lpy86786
Copy link

lpy86786 commented Jan 4, 2024

各位的显卡之间有SLI之类的连接吗

没有。用的组装机

@jklj077 jklj077 added the help wanted Open for contributions from the community label Jan 4, 2024
@lpy86786
Copy link

lpy86786 commented Jan 4, 2024

@lpy86786 感谢提供信息!可以看下禁用卡前后nvidia-smi topo -m的结果吗。

用cmd执行此命令报错 ERROR: Option -m is missing its value.
卸载后重装cuda12.2.2及安装包中自带的驱动,仍然报错。尝试运行通义千问,老问题也没解决
未禁用前执行nvidia-smi
Snipaste_2024-01-04_16-58-10
禁用后两块卡之后执行nvidia-smi
Snipaste_2024-01-04_17-03-03
nvidia-smi topo -m执行报错可能是什么原因?网上翻了一圈都没找到。有没有可能是它导致的问题?
还需要运行什么别的测试吗?
另外,我觉得如果能通过手工给出均匀分配的device_map,在两块卡上就能跑起来了,不至于在使用auto或者balanced的时候只在第一张卡上填16G然后让第二张卡爆显存。我没能研究明白。。。有大神能提供一下吗?

@jklj077
Copy link
Contributor

jklj077 commented Jan 5, 2024

@lpy86786 @xfcoms

感觉这个问题跟模型是不是Qwen已经无关了(baichuan、chatglm都有此问题),似乎是某种环境配置下多卡推理的普遍问题。

由于llama.cpp多卡是正常的、NVIDIA_P2P_DISABLE无效,那问题可能是pytorch/pytorch_cuda、accelerate跟硬件的耦合触发的。

@lpy86786
Copy link

lpy86786 commented Jan 5, 2024

@jklj077

我已经在自己机器上解决了此问题。
注意到报此类错误的多数是没有显示输出的计算卡,而4090没有问题,因此怀疑是机器没有显示输出导致的。
参考Tesla计算卡改核显输出的教程,将其修改为以下的解决过程。有些步骤可能是多余的,我只是描述我的操作过程,而且这是Windows下的解决过程,供各位参考,linux下的方法我目前还不清楚。

  1. 机器配置为双路E5-3696v3,4块Tesla P40,操作系统为Windows10,通过Windows自带的远程桌面在局域网内进行控制。安装cuda11.7安装包的Runtime、Development与包中自带的驱动,发现不显示NVIDIA控制面板,于是去NVIDIA官网上下载驱动版本为537.70的Tesla P40的驱动(选Win10),覆盖安装。重启,此时显示NVIDIA控制面板。打开NVIDIA控制面板,启用ECC。
  2. 打开注册表,找到
    计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class{4d36e968-e325-11ce-bfc1-08002be10318}
    环境一般都有多个卡,0000开始就是这些显卡的下标,Tesla具体是哪个卡,看右侧“DriverDesc”字段确定。
    对于每张Tesla卡,改下面两个键:
    "AdapterType",dword值,改为1。
    "FeatureScore",dword值,从十六进制的cf改为十六进制的d1;
    新建一个键:"GridLicensedFeatures",dword值,改为7。(这一步是通过注册表强制打开Grid驱动支持)
    此时Tesla显卡已经自动变成WDDM模式。
  3. 注册表再次导航到:
    计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class{4d36e968-e325-11ce-bfc1-08002be10318}
    找到各张计算卡,删除AdapterType
    添加一个DWORD32位值,命名为EnableMsHybrid,值修改为1
    找到剩下的所有的Microsoft Remote Display Adapter(这是因为我的机器上既没有带显示输出的独显又没有核显),添加一个DWORD32位值,命名为EnableMsHybrid,值修改为2。
    按F5刷新注册表。重启。之后打开任务管理器,发现出现了4块P40计算卡。
  4. 此时能够在4卡上正常运行Qwen-7B-Chat或Qwen-72B-Chat-Int4(通义千问是用官方提供的方法搭建的)。不仅如此,使用transformer运行lmsys_vicuna-33b-v1.3也正常了。

如果从缺少显示输出的角度出发来考虑:对于仅有计算卡的机器,如果接个亮机卡到机器上,再配一个显示器或者显卡欺骗器能否解决问题?如果有3090,接个显示器或者显卡欺骗器有没有可能解决?如果不接,仅靠修改计算卡的模式为WDDM能否解决?Linux下与Windows下的WDDM模式有何区别?

@jklj077
Copy link
Contributor

jklj077 commented Jan 5, 2024

如果Windows下的WDDM可以、TCC不可以,怀疑是NVIDIA Driver有BUG.

@chopin1998
Copy link

@jklj077

我已经在自己机器上解决了此问题。 注意到报此类错误的多数是没有显示输出的计算卡,而4090没有问题,因此怀疑是机器没有显示输出导致的。 参考Tesla计算卡改核显输出的教程,将其修改为以下的解决过程。有些步骤可能是多余的,我只是描述我的操作过程,而且这是Windows下的解决过程,供各位参考,linux下的方法我目前还不清楚。

  1. 机器配置为双路E5-3696v3,4块Tesla P40,操作系统为Windows10,通过Windows自带的远程桌面在局域网内进行控制。安装cuda11.7安装包的Runtime、Development与包中自带的驱动,发现不显示NVIDIA控制面板,于是去NVIDIA官网上下载驱动版本为537.70的Tesla P40的驱动(选Win10),覆盖安装。重启,此时显示NVIDIA控制面板。打开NVIDIA控制面板,启用ECC。
  2. 打开注册表,找到
    计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class{4d36e968-e325-11ce-bfc1-08002be10318}
    环境一般都有多个卡,0000开始就是这些显卡的下标,Tesla具体是哪个卡,看右侧“DriverDesc”字段确定。
    对于每张Tesla卡,改下面两个键:
    "AdapterType",dword值,改为1。
    "FeatureScore",dword值,从十六进制的cf改为十六进制的d1;
    新建一个键:"GridLicensedFeatures",dword值,改为7。(这一步是通过注册表强制打开Grid驱动支持)
    此时Tesla显卡已经自动变成WDDM模式。
  3. 注册表再次导航到:
    计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class{4d36e968-e325-11ce-bfc1-08002be10318}
    找到各张计算卡,删除AdapterType
    添加一个DWORD32位值,命名为EnableMsHybrid,值修改为1
    找到剩下的所有的Microsoft Remote Display Adapter(这是因为我的机器上既没有带显示输出的独显又没有核显),添加一个DWORD32位值,命名为EnableMsHybrid,值修改为2。
    按F5刷新注册表。重启。之后打开任务管理器,发现出现了4块P40计算卡。
  4. 此时能够在4卡上正常运行Qwen-7B-Chat或Qwen-72B-Chat-Int4(通义千问是用官方提供的方法搭建的)。不仅如此,使用transformer运行lmsys_vicuna-33b-v1.3也正常了。

如果从缺少显示输出的角度出发来考虑:对于仅有计算卡的机器,如果接个亮机卡到机器上,再配一个显示器或者显卡欺骗器能否解决问题?如果有3090,接个显示器或者显卡欺骗器有没有可能解决?如果不接,仅靠修改计算卡的模式为WDDM能否解决?Linux下与Windows下的WDDM模式有何区别?

但是我就是在linux下用的呀。。也是这个问题。。。

@chopin1998
Copy link

@jklj077 @lpy86786

我解决问题了!! 我的显卡驱动是 nvidia 官方cuda源里的, 当前好像默认是 545系列(完了里面还会有好几个nv_queue内核进程)

然后今天我把驱动降到 535系列(535.129.03), 然后一切顺利, 搞死

@matianlongg
Copy link

重装了系统,win11,问题解决了 :)

@jklj077
Copy link
Contributor

jklj077 commented Jan 15, 2024

@matianlongg ubuntu转windows了嘛,也是个办法 😂 。

如果是专业卡的话,NVIDIA有data center系列的driver,见https://docs.nvidia.com/datacenter/tesla/index.html

@matianlongg
Copy link

@matianlongg ubuntu转windows了嘛,也是个办法 😂 。

如果是专业卡的话,NVIDIA有data center系列的driver,见https://docs.nvidia.com/datacenter/tesla/index.html

好的 😂 我试试

@JingyiChang
Copy link
Author

换A40之后,一切正常。。

@306404391
Copy link

@lpy86786 我按照您的方式操作了一番,我也是P40*4,我发现正常模型可以,但是INT4、INT8都不行,还是会出现之前那个错误,这个您有试过吗?

@lpy86786
Copy link

@lpy86786 我按照您的方式操作了一番,我也是P40*4,我发现正常模型可以,但是INT4、INT8都不行,还是会出现之前那个错误,这个您有试过吗?

@306404391 在我的机器上能够正常使用官方案例运行未量化模型、int4与int8,都没问题的。
后来我也试了使用LMStudio运行Qwen-7B、Qwen-72B的量化模型,也能正常运行。LMStudio使用的是llama.cpp进行推理,也发布了Windows上的安装程序,部署起来比较方便,也许您可以试试看是否会发生类似的问题?

@306404391
Copy link

@lpy86786 我按照您的方式操作了一番,我也是P40*4,我发现正常模型可以,但是INT4、INT8都不行,还是会出现之前那个错误,这个您有试过吗?

@306404391 在我的机器上能够正常使用官方案例运行未量化模型、int4与int8,都没问题的。 后来我也试了使用LMStudio运行Qwen-7B、Qwen-72B的量化模型,也能正常运行。LMStudio使用的是llama.cpp进行推理,也发布了Windows上的安装程序,部署起来比较方便,也许您可以试试看是否会发生类似的问题?

谢谢哈,我再试试

@wufxgtihub123
Copy link

@jklj077 @lpy86786

我解决问题了!! 我的显卡驱动是 nvidia 官方cuda源里的, 当前好像默认是 545系列(完了里面还会有好几个nv_queue内核进程)

然后今天我把驱动降到 535系列(535.129.03), 然后一切顺利, 搞死

我在Linux环境下的驱动版本是:535.54.03 也是报这个,尝试上面的方法也解决不了,真的是头大,加载14b模型就还好,一旦加载量化版本的模型就报这个错误了

@chopin1998
Copy link

@jklj077 @lpy86786
我解决问题了!! 我的显卡驱动是 nvidia 官方cuda源里的, 当前好像默认是 545系列(完了里面还会有好几个nv_queue内核进程)
然后今天我把驱动降到 535系列(535.129.03), 然后一切顺利, 搞死

我在Linux环境下的驱动版本是:535.54.03 也是报这个,尝试上面的方法也解决不了,真的是头大,加载14b模型就还好,一旦加载量化版本的模型就报这个错误了

建议你更换驱动后, 所有的环境都重新安装一次, 包括cuda和各种python包, 因为有些是依赖驱动和cuda版本编译的。 完了之后就一切顺利。

@wufxgtihub123
Copy link

@jklj077 @lpy86786
我解决问题了!! 我的显卡驱动是 nvidia 官方cuda源里的, 当前好像默认是 545系列(完了里面还会有好几个nv_queue内核进程)
然后今天我把驱动降到 535系列(535.129.03), 然后一切顺利, 搞死

我在Linux环境下的驱动版本是:535.54.03 也是报这个,尝试上面的方法也解决不了,真的是头大,加载14b模型就还好,一旦加载量化版本的模型就报这个错误了

建议你更换驱动后, 所有的环境都重新安装一次, 包括cuda和各种python包, 因为有些是依赖驱动和cuda版本编译的。 完了之后就一切顺利。

我没有更新驱动,但是我部署chatglm2-6b-int4是没有问题的,但是我部署qwen系列的量化模型无论单卡还是多卡都是报相同的错误,我还用了qwen的docker镜像试过了,一样的问题 @jklj077 可以帮忙看看吗?

@jklj077
Copy link
Contributor

jklj077 commented Feb 23, 2024

RuntimeError: probability tensor contains either `inf`, `nan` or element < 0 can stem from a variety of issues. In the context of this issue where this error surfaces specifically in multi-GPU setups while single GPU runs successfully, it is likely attributed to driver compatibility.

However, for quantized models, this error could arise due to changes in hyper-parameters in generation like temperature. These adjustments might introduce instability in the model's output probabilities. If your scenario matches this description, encountering such an error is expected, and you should delve into previous issues related to these settings for troubleshooting guidance.

It's worth noting that Qwen(1.0) models and associated codes are no longer under active development or receiving feature updates. The project has evolved into Qwen1.5, which offers better integration with the transformers ecosystem. For the latest information, improvements, and resources, please refer to the official GitHub repository at https://github.com/QwenLM/Qwen1.5.

@yuhp-zts
Copy link

yuhp-zts commented Mar 4, 2024

有没有容易复现的样例供我们参考下

我也遇到了同样的报错问题。 使用Qwen-7B-Chat-Int4时,自动分配到单卡上了所以正常运行 使用Qwen-7B-Chat或Qwen-14B-Chat-Int4,自动分配到多卡上,输入hello返回乱码,返回几个乱码之后就报这个错了

OS: Windows 10.0.19045.2006 CPU: 2x Xeon E5-2696v3 GPU: 4x NVIDIA Tesla P40 24GB GPU驱动版本:537.13

我把整个运行环境打了个包,希望能对复现问题有帮助: 链接:https://pan.baidu.com/s/15bkCYFkXqEOoATQ8-FprcQ?pwd=qenv 提取码:qenv 使用:在QwenEnv下新建一个QwenModel文件夹,然后放入Qwen-7B-Chat-Int4等模型文件夹 构建的时候使用了单独下载的: torch-2.1.2+cu121-cp311-cp311-win_amd64.whl torchvision-0.16.2+cu121-cp311-cp311-win_amd64.whl torchaudio-2.1.2+cu121-cp311-cp311-win_amd64.whl

请问您那边的P40可以使用VLLM吗?我这边也是P40的机器安装VLLM后加载模型就会报错了,不知道什么原因,用的是qwen72-gptq版本的

@lpy86786
Copy link

lpy86786 commented Mar 4, 2024

@yuhp-zts
我之前看过nvidia官方手册,P40不支持bf16,fp16。
我之前试过部署vllm,没有成功。
在我的P40机器上用过的推理引擎中,llama.cpp是最快的,用的是gguf格式。
基于该引擎,比较简单的部署方式包括lmstudio, ollama等

@0000sir
Copy link

0000sir commented Mar 23, 2024

4090用官方docker镜像,跑Qwen1.5-14B-Chat-GPTQ-Int8单卡正常,双卡就报这个错误。

Driver Version: 530.30.02 CUDA Version: 12.1

@mid2doubao
Copy link

设置do_sample=False可以解决

@fhnuist
Copy link

fhnuist commented Apr 28, 2024

目前排查结果,4张显卡,单卡运行14B模型都没问题,双卡运行72B-int8-Chat时,双卡之间通信协议如果是PXB,就会乱回,双卡通信协议为SYS就可以正常使用

@gsnable
Copy link

gsnable commented Jun 3, 2024

目前排查结果,4张显卡,单卡运行14B模型都没问题,双卡运行72B-int8-Chat时,双卡之间通信协议如果是PXB,就会乱回,双卡通信协议为SYS就可以正常使用

确实是这样,我的输出如下,通过测试也确认0,2 0,3 1,2 1,3这种SYS的可以,PXB则不行。
GPU0 GPU1 GPU2 GPU3 NIC0 NIC1 CPU Affinity NUMA Affinity GPU NUMA ID
GPU0 X PXB SYS SYS PXB SYS 0-31,64-95 0 N/A
GPU1 PXB X SYS SYS PXB SYS 0-31,64-95 0 N/A
GPU2 SYS SYS X PXB SYS NODE 32-63,96-127 1 N/A
GPU3 SYS SYS PXB X SYS NODE 32-63,96-127 1 N/A
NIC0 PXB PXB SYS SYS X SYS
NIC1 SYS SYS NODE NODE SYS X

jklj077 给出的可用环境中GPU之间没有PXB。 #848 (comment)
GPU0 GPU1 GPU2 GPU3 GPU4 GPU5 GPU6 GPU7 CPU Affinity NUMA Affinity
GPU0 X PIX NODE NODE SYS SYS SYS SYS 0-31,64-95 0
GPU1 PIX X NODE NODE SYS SYS SYS SYS 0-31,64-95 0
GPU2 NODE NODE X PIX SYS SYS SYS SYS 0-31,64-95 0
GPU3 NODE NODE PIX X SYS SYS SYS SYS 0-31,64-95 0
GPU4 SYS SYS SYS SYS X PIX NODE NODE 32-63,96-127 1
GPU5 SYS SYS SYS SYS PIX X NODE NODE 32-63,96-127 1
GPU6 SYS SYS SYS SYS NODE NODE X PIX 32-63,96-127 1
GPU7 SYS SYS SYS SYS NODE NODE PIX X 32-63,96-127 1

matianlonggchopin1998通过重装系统和修改注册表解决问题,是否说明可以通过驱动解决这个问题。

@gsnable
Copy link

gsnable commented Jun 3, 2024

/cc @JingyiChang @chopin1998
方便发个nvidia-smi和nvcc -V结果吗?

@chopin1998
Copy link

/cc @JingyiChang @chopin1998 方便发个nvidia-smi和nvcc -V结果吗?

这个问题可以结束了。 qwen已经停止, 转向qwen 1.5

@gsnable
Copy link

gsnable commented Jun 3, 2024

/cc @JingyiChang @chopin1998 方便发个nvidia-smi和nvcc -V结果吗?

这个问题可以结束了。 qwen已经停止, 转向qwen 1.5

是的,我就是在跑qwen1.5出现这个问题的。

@qinhuangdaoStation
Copy link

我这边解决的方式是:(我用的是qwen2-7b-instruct
适配cuda11020的版本,重新安装了torch=2.1.2。
其他都没有变化

安装方式参考的官网建议方式:https://pytorch.org/get-started/locally/

@flashlau
Copy link

我用的是glm,报这个错看到是在transformers库里的utils.py中,所以以为是库版本的问题,或者glm代码的问题,尝试了很久很久依然没有解决。。。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Open for contributions from the community
Projects
None yet
Development

No branches or pull requests

17 participants