问题描述
当使用vLLM库在2个节点上启动16个进程(ranks)的模型时,启动挂起并且无法完成。然而,使用8个进程在2个节点上启动正常。这个问题影响了在多节点集群上运行需要16个或更多进程高效运行的大型模型的能力。
重现步骤:
- 8个进程(成功):
在具有8个GPU的两个AWS g5.12xlarge机器上的Ray集群中,确认集群状态:
ubuntu@ubuntu:~ $ ray status
======== Autoscaler status: 2024-05-31 21:18:32.605238 ========
Node status
---------------------------------------------------------------
Active:
1 node_1a93b656e273149f144a0ef03fad7c56dfdb0eb2005b289eee44914e
1 node_bdda5bb6d33b5b29813769d6c4238d0e764aa1851f620abb31d4d3e0
Pending:
(no pending nodes)
Recent failures:
(no failures)
Resources
---------------------------------------------------------------
Usage:
0.0/96.0 CPU
0.0/8.0 GPU
0B/235.77GiB memory
0B/105.04GiB object_store_memory
Demands:
(no resource demands)
使用8个进程启动模型运行:
python -m vllm.entrypoints.openai.api_server \
--enforce-eager \
--tensor-parallel-size 8 \
--swap-space 16 \
--gpu-memory-utilization=0.9 \
--model meta-llama/Meta-Llama-3-70B \
--disable-custom-all-reduce \
--disable-log-requests
- 16个进程(挂起):
在具有16个GPU的两个AWS g5.48xlarge机器上的Ray集群中,确认集群状态:
ubuntu@ubuntu:~ $ ray status
======== Autoscaler status: 2024-05-31 20:52:39.099177 ========
Node status
---------------------------------------------------------------
Active:
1 node_5bd8b16e07dc169bc0f7dcc901f47246c4f78a58775ff48675f298db
1 node_023579a04c1324bb4e2cdb146f8be2a530b9e7b0d449f57d3e2e63bd
Pending:
(no pending nodes)
Recent failures:
(no failures)
Resources
---------------------------------------------------------------
Usage:
0.0/384.0 CPU
0.0/16.0 GPU
0B/1.00TiB memory
0B/372.53GiB object_store_memory
Demands:
(no resource demands)
使用16个进程启动模型运行:
python -m vllm.entrypoints.openai.api_server \
--enforce-eager \
--tensor-parallel-size 16 \
--swap-space 16 \
--gpu-memory-utilization=0.9 \
--model meta-llama/Meta-Llama-3-70B \
--disable-custom-all-reduce \
--disable-log-requests
预期行为:模型应该在指定的16个等级上成功启动并加载。
影响:这个bug阻止了在多节点集群上启动和运行需要大量等级的大型模型。
2条答案
按热度按时间iqxoj9l91#
请设置环境变量
export VLLM_LOGGING_LEVEL=DEBUG
,以便开启更多日志记录,帮助调试潜在问题。如果您遇到崩溃或挂起,使用
export VLLM_TRACE_FUNCTION=1
运行vllm会有所帮助。vllm中的所有函数调用都将被记录。检查这些日志文件,并告诉哪个函数崩溃或挂起。来自问题模板。
6ljaweal2#
我尝试了上述建议,但似乎这个调用会导致挂起:
在注解掉这一行后,还有更多的挂起: