部署满血版DeepSeekR1遇到的上下文长度超限问题

下班刚到家,其他部门的同事发来信息求助,部署满血版DeepSeek遇到报错,疑似上下文不够,但是上下文已经给到了32768,怎么回事呢?

他们目前的使用场景是直接使用Open-WebUI网页对话。按理说OpenWebUI的默认上下文才区区2k,甚至短的离奇,怎么会超过呢?具体情况还需看看报错内容。

报错如下:
报错信息
机器配置

显卡H200 x8(每张141G显存)
内存1TB,
192核CPU x2

机器配置不低,应该是够用的。我之前只部署过int4的DeepSeek model,没有遇到这种问题。纯满血版目前手头没有显存支持,人又不在现场,我让他先发来部署命令瞅瞅吧。

他们的部署命令如下:

vllm serve /data4/deepseekR1 \
--block-size 32 \
--swap-space 24 \
--tensor-parallel-size 8 \
--max-model-len 32768 \
--max-num-batched-tokens 2048 \
--gpu-memory-utilization 0.92 \
--enforce-eager \
--enable-chunked-prefill \
--trust-remote-code

乍一看应该没问题,但是多出的几个参数配置看上去有点可疑,例如这个 --max-num-batched-tokens带的2048值。我一般部署model从来不配置这个参数。其他还有几个我用不到的参数在里面,我直接建议他把那几个参数砍掉试一下先。

我的建议命令如下:

vllm serve /data4/deepseekR1 \
--tensor-parallel-size 8 \
--max-model-len 32768 \
--gpu-memory-utilization 0.95 \
--enforce-eager \
--trust-remote-code  

等他们试验回复的时候,我又去vllm官方仓库瞅了一眼报错的scheduler.py的代码部分,代码报错的逻辑是这样的:

if num_prompt_tokens > min(
	self.scheduler_config.max_model_len,
	self.scheduler_config.max_num_batched_tokens):
	logger.warning(
		f"Input prompt ({num_prompt_tokens} tokens) is too long"
		" and exceeds limit of "
		f"{self.scheduler_config.max_model_len}")

也就是说它会取max_model_lenmax_num_batched_tokens中的最小值去判定prompt长度是否非法。显然启动参数给了--max-num-batched-tokens 2048会影响这里的判断。我又查了一下issue中有没有类似问题,还真发现一个issue,应该是一样的问题。我立马再发消息,建议他们如果不行的话加大max-num-batched-tokens参数再试试。

最后终于回复了,朋友表示按照以上方案同时加大了max_model_lenmax_num_batched_tokens修改启动参数后,目测是解决了问题。是否彻底解决还需要继续观察几天。

一切尽在掌握之中。夜色如水,继续陪娃读书。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigBookX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值