我发现关于如何在本地运行Qwen2-VL 72B模型作为OpenAI兼容的本地服务器的相关信息很少。我正在尝试找到最佳的方法来实现这一点,我认为这是可能的,但我希望社区能帮助我解决剩下的步骤。我有4块GPU(每块3090,24GB VRAM),所以我认为这对于4-bit量化来说应该是足够的,但实际让它在本地运行起来比预期的要困难一些。
首先,这是我的设置(最近的transformers版本有一个bug https://github.com/huggingface/transformers/issues/33401,所以安装特定版本是必要的):
git clone
cd vllm
python3 -m venv venv
./venv/bin/pip install -U flash-attn --no-build-isolation
./venv/bin/pip install -U git+https://github.com/huggingface/transformers@21fac7abba2a37fae86106f87fcf9974fd1e3830 git+https://github.com/huggingface/accelerate torch qwen-vl-utils
./venv/bin/pip install -r requirements-cuda.txt
./venv/bin/pip install -e .https://github.com/vllm-project/vllm.git
我认为这是正确的设置。然后我尝试运行模型:
./venv/bin/python -m vllm.entrypoints.openai.api_server \
--served-model-name Qwen2-VL-72B-Instruct-GPTQ-Int4 \
--model ./models/Qwen2-VL-72B-Instruct-GPTQ-Int4 \
--kv-cache-dtype fp8 \
--gpu-memory-utilization 0.98 \
--tensor-parallel-size 4
但这给了我一个错误:
(VllmWorkerProcess pid=3287065) ERROR 09-21 15:51:21 multiproc_worker_utils.py:233] Exception in worker VllmWorkerProcess while processing method load_model: The input size is not aligned with the quantized weight shape. This can be caused by too large tensor parallel size.
寻找解决方案时,我发现了一些可能有用的建议:https://github.com/vllm-project/vllm/issues/2699 - 有人声称他们能够运行:
qwen2-72b在使用gptq和并行性时也有同样的问题,但通过这种方法解决了问题:
group_size设置为64,使intermediate_size(29568=1283711)成为量化group_size * TP(tensor-parallel-size)的整数倍,但如果group_size设置为27*11=154,则不行。
将"GPTQ_MARLIN_MIN_THREAD_K = 128"在文件"python3.10/dist-packages/vllm/model_executor/layers/quantization/gptq_marlin.py"中改为64
但目前,我不太确定如何实现这个解决方案。首先,我没有python3.10/dist-packages/vllm/model_executor/layers/quantization/gptq_marlin.py
文件,并且在VLLM的整个源代码中我只找到了GPTQ_MARLIN_MIN_THREAD_K
在vllm/model_executor/layers/quantization/utils/marlin_utils.py
中;我的猜测是,编辑后我需要重新运行./venv/bin/pip install -e .
,所以我这样做了,但这还不足以解决问题。
建议的解决方案的第一步提到了一些关于group_size的内容(我的理解是需要将group_size设置为64),但我并不完全确定我需要运行哪些具体的命令,也许需要创建一个新的量化,如果我理解正确的话。我计划在有更多时间时进一步实验,但我认为分享我目前找到的关于运行Qwen2 VL 72B的信息仍然可能有用,以防其他人也在寻找解决方案。
也许,已经有人成功地在他们的系统上设置了Qwen2-VL 72B,他们可以分享一下他们是如何做到的?
讨论总结
本次讨论主要集中在如何在本地运行 Qwen2-VL 72B 模型,特别是将其作为 OpenAI 兼容的本地服务器。讨论中涉及了多个技术问题,包括量化、并行计算、多 GPU 支持等。社区成员分享了他们在尝试运行该模型时遇到的问题和解决方案,如安装特定版本的 transformers 库、处理量化和并行计算中的错误,以及使用不同的后端(如 vLLM 和 openedai-vision)进行尝试。此外,讨论中还提到了一些相关的 GitHub 问题和解决方案,以及对多模态支持和开源开发者支持的期望。
主要观点
👍 量化和并行计算是关键
- 支持理由:通过量化和并行计算可以优化模型性能,使其在本地运行更加高效。
- 反对声音:量化和并行计算过程中可能会遇到各种技术问题,如内存不足、计算错误等。
🔥 多 GPU 支持是成功运行的关键
- 正方观点:多 GPU 支持可以显著提高模型运行的效率和稳定性。
- 反方观点:多 GPU 设置复杂,容易出现配置错误和兼容性问题。
💡 使用特定版本的 transformers 库
- 解释:当前版本的 transformers 库存在 bug,安装特定版本是必要的。
👀 vLLM 和 openedai-vision 后端的尝试
- 解释:不同的后端可能会带来不同的错误和限制,需要逐一尝试和解决。
🚀 Docker 容器解决方案
- 解释:通过 Docker 容器可以简化模型的运行和配置,解决之前遇到的技术问题。
金句与有趣评论
“😂 I’m quantizing it rn and gonna try it in oobaboogas textgen with tensor parallelism and exllamav2 quants…I’ll know in a few hours if the math version works 🤷♂️”
- 亮点:幽默地表达了尝试新方法的期待和不确定性。
“🤔 The vision part is the kicker though. I don’t know how to get that working.”
- 亮点:指出了视觉模型部分的难点,引发了更多关于多模态支持的讨论。
“👀 I wonder why the Q-cache PR isn’t merged yet. Other than open source devs not getting enough support and recognition.”
- 亮点:提出了对开源开发者支持不足的担忧,引发了关于开源社区支持的讨论。
情感分析
讨论的总体情感倾向较为积极,社区成员在面对技术挑战时表现出合作和分享的精神。主要分歧点在于不同后端和配置方案的选择,以及对开源开发者支持的期望。可能的原因包括技术复杂性和开源社区的资源限制。
趋势与预测
- 新兴话题:多模态支持和开源开发者支持可能会成为后续讨论的热点。
- 潜在影响:成功运行 Qwen2-VL 72B 模型将为本地部署大型语言模型提供宝贵的经验和参考,推动相关技术的发展和应用。
详细内容:
引言
在 Reddit 上,一篇题为“How to run Qwen2-VL 72B locally”的帖子引起了广泛关注。该帖子主要探讨了如何在本地运行 Qwen2-VL 72B 模型作为 OpenAI 兼容的本地服务器,目前获得了众多的浏览量、点赞和大量的评论。帖子主人表示虽然自己努力尝试,但在实际操作中遇到了不少困难,希望能从社区获得帮助。
讨论焦点与观点分析
有人正在对模型进行量化并准备尝试,也有人指出视觉部分是难点所在,可能需要跳过某些视觉层才能运行。还有人提到 ExllamaV2 在处理多模态方面仍在进展中,目前还不存在 Qwen2-VL 72B 的相关量化。
有用户成功在 Mac 上运行了 qwen2-vl-7b ,但关于是否使用了原生 transformers 存在疑问。有人认为可能是 PyTorch 或 vLLM 版本过旧,也有人表示通过特定步骤在 4 个 GPU 上使用 openedai-vision 后端运行成功。
还有用户提供了一些相关的链接,如https://github.com/matatonic/openedai-vision ,并分享了自己在运行过程中遇到的错误以及解决办法,比如通过在 docker 容器中运行成功解决了问题。
总的来说,大家对于如何在本地成功运行 Qwen2-VL 72B 模型展开了热烈的讨论,提出了各种可能的解决方案和遇到的问题,但目前仍未达成一致的最佳方法。
感谢您的耐心阅读!来选个表情,或者留个评论吧!