问题出现得很突然,日志倒是留得挺全。用 24G 卡加载 Qwen2.5-32B-Instruct,服务启动即退出,日志原文 The model's max seq len (32768) is larger than max_model_len (4096),命令里只加了 --gpu-memory-utilization 0.9。

刚开始盯着「按 32768 预留 KV cache 在 24G 上放不下」,折腾了半个多小时,排掉了。

真正麻烦的地方在于,几个原因的现象几乎一样。模型配置里的位置编码长度没有被沿用。另一种情况是启动参数里显式写了 4096。

少数情况下是tokenizer 配置里的最大长度被覆盖。

上来先看模型配置里的真实上限

python -c "import json;print(json.load(open('config.json'))['max_position_embeddings'])"

显式指定序列长度并限制显存比例

python -m vllm.entrypoints.openai.api_server --model Qwen/Qwen2.5-32B-Instruct --max-model-len 8192 --gpu-memory-utilization 0.9

从启动日志里读 KV cache 块数再回调节

python -m vllm.entrypoints.openai.api_server --model Qwen/Qwen2.5-32B-Instruct --max-model-len 8192 --enforce-eager 2>&1 | Select-String 'KV cache'

压测长请求确认不 OOM

python bench.py --max-tokens 8000 --n 4

报错是间歇性的,我蹲守了半小时才抓到一次完整现场。

怎么算真的好了,看的是同一批现象。服务正常起来,日志里 KV cache 仍有剩余,8000 token 的请求能完整返回。

容易忽略的是,序列上限不是越大越好,设得比显存能撑的更大只会在启动时失败,按 KV cache 行反推最稳。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189