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

如何避免 VLM OOM的问题? #2887

Open
chenzhengda opened this issue Dec 12, 2024 · 9 comments
Open

如何避免 VLM OOM的问题? #2887

chenzhengda opened this issue Dec 12, 2024 · 9 comments
Assignees

Comments

@chenzhengda
Copy link

在使用lmdeploy 推理 VLM (比如Qwen2VL)的时候经常会遇到OOM问题,主要是因为图片数量和分辨率导致的,有什么办法可以避免这个问题?

@lvhan028
Copy link
Collaborator

@grimoire,这种情况在 PR #2810 有所缓解么?

@irexyc
Copy link
Collaborator

irexyc commented Dec 13, 2024

https://github.com/InternLM/lmdeploy/blob/main/docs/zh_cn/multi_modal/qwen2_vl.md 这里面有写如何控制图片分辨率。

另外 Qwen2VL 这个模型之前我跑的时候发现,pytorch backend运行时 LLM部分 显存增长会比较多。

@chenzhengda
Copy link
Author

https://github.com/InternLM/lmdeploy/blob/main/docs/zh_cn/multi_modal/qwen2_vl.md 这里面有写如何控制图片分辨率。

另外 Qwen2VL 这个模型之前我跑的时候发现,pytorch backend运行时 LLM部分 显存增长会比较多。

想请教一下除了手动控制分辨率还有其他办法解决这个问题吗?因为很难保证用户的行为并且一旦OOM很可能导致服务崩溃

@irexyc
Copy link
Collaborator

irexyc commented Dec 13, 2024

@chenzhengda

vision 部分控制了分辨率,还有哪些用户行为呢?

@chenzhengda
Copy link
Author

@chenzhengda

vision 部分控制了分辨率,还有哪些用户行为呢?

比如用户一次性传了很多张图,或者同时有多租户的并行请求(我不是很确定在lmdeploy中不同请求做vision encoder是不是并行的,有没有可能导致OOM)

@irexyc
Copy link
Collaborator

irexyc commented Dec 13, 2024

有个参数能控制同时处理的图片数量 https://github.com/InternLM/lmdeploy/blob/main/lmdeploy/messages.py#L378

默认的话就是一张图一张图的进行处理的,控制了分辨率,就控制vision部分的显存。

LLM 部分你设置下session_len,然后用最大的session_len 和 batch 提前跑跑看吧,这个模型我之前看运行时显存增长比刚加载完变化挺大的。

@chenzhengda
Copy link
Author

有个参数能控制同时处理的图片数量 https://github.com/InternLM/lmdeploy/blob/main/lmdeploy/messages.py#L378

默认的话就是一张图一张图的进行处理的,控制了分辨率,就控制vision部分的显存。

LLM 部分你设置下session_len,然后用最大的session_len 和 batch 提前跑跑看吧,这个模型我之前看运行时显存增长比刚加载完变化挺大的。

感谢🙏

@vladrad
Copy link

vladrad commented Dec 13, 2024

Hello! I believe I have the same issue as well. I get an OOM on my 4090 RTX after 1-3 requests.

I tried:
-Set different quants 0,4, 8 and they all OOM for me.
-I tried to set different context sizes
-I tried Turbomind vs PyTorch.

Is it reasonable for me to assume that a 4090 should be ok with running one image at a time with this command without OOM given my images are 1000x1000:

docker run --runtime nvidia --gpus 0     -v ~/.cache/huggingface:/root/.cache/huggingface     --env "HUGGING_FACE_HUB_TOKEN="     -p 23333:23333 --ipc=host openmmlab/lmdeploy:latest     lmdeploy serve api_server openbmb/MiniCPM-V-2_6 --model-name MiniCPM-V-2_6-Vison

@chenzhengda
Copy link
Author

@irexyc 发现另外一个问题,好像目前vision encoder部分没有默认使用flash-attn,因此推理需要的显存会比较大,您能帮忙确认一下吗?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants