vllm部署视觉模型,显存不足报的错误

(EngineCore_DP0 pid=124290) Exception in thread Thread-1 (process_input_sockets):
(EngineCore_DP0 pid=124290) Traceback (most recent call last):
(EngineCore_DP0 pid=124290)   File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
(EngineCore_DP0 pid=124290)     self.run()
(EngineCore_DP0 pid=124290)   File "/usr/lib/python3.10/threading.py", line 953, in run
(EngineCore_DP0 pid=124290)     self._target(*self._args, **self._kwargs)
(EngineCore_DP0 pid=124290)   File "/opt/model/.qwen/lib/python3.10/site-packages/vllm/v1/engine/core.py", line 875, in process_input_sockets
(EngineCore_DP0 pid=124290)     request = self.preprocess_add_request(request)
(EngineCore_DP0 pid=124290)   File "/opt/model/.qwen/lib/python3.10/site-packages/vllm/v1/engine/core.py", line 438, in preprocess_add_request
(EngineCore_DP0 pid=124290)     self.mm_receiver_cache.get_and_update_features(
(EngineCore_DP0 pid=124290)   File "/opt/model/.qwen/lib/python3.10/site-packages/vllm/multimodal/cache.py", line 555, in get_and_update_features
(EngineCore_DP0 pid=124290)     feature.data = self.get_and_update_item(feature.data,
(EngineCore_DP0 pid=124290)   File "/opt/model/.qwen/lib/python3.10/site-packages/vllm/multimodal/cache.py", line 590, in get_and_update_item
(EngineCore_DP0 pid=124290)     assert mm_item is not None, f"Expected a cached item for {mm_hash=}"
(EngineCore_DP0 pid=124290) AssertionError: Expected a cached item for mm_hash='6b90c7bcd7106a42965b6138410f34cfe8abdb831d69a2f2cfa8a61a784cd4c1'

解决的思路

错误分析

错误类型AssertionError: Expected a cached item for mm_hash='...'

含义

  • vLLM 在处理带有图片/视频等多模态输入的请求时
  • 尝试从缓存中获取已预处理的特征(通过 hash 值查找)
  • 但缓存中没有对应的数据

可能原因

  1. 内存不足 - 缓存被 OOM Killer 清理或驱逐
  2. 多进程缓存不同步 - 分布式部署时缓存未共享
  3. 缓存过期/清空 - 缓存策略导致数据被删除
  4. 并发竞态条件 - 高并发时缓存写入和读取不同步
  5. 图片预处理失败 - 上游处理失败但未正确捕获
  6. 版本兼容性问题 - vLLM 版本与模型不兼容

排查步骤

1. 检查内存使用情况

# 查看系统内存
free -h
nvidia-smi  # GPU内存

# 查看进程内存
ps aux | grep vllm
top -p <pid>

2. 查看完整日志

# 查找相关错误
grep -i "error\|exception\|oom" <log_file>

# 查看是否有内存警告
dmesg | grep -i "out of memory"

3. 检查 vLLM 配置

# 检查启动参数中的缓存配置
--gpu-memory-utilization  # 默认0.9,可能太高
--max-num-seqs           # 并发请求数
--enable-chunked-prefill # 是否启用分块
--max-num-batched-tokens # 批处理token数

4. 查看模型和数据

# 检查输入是否包含图片
# 查看请求日志中的 multimodal 数据

解决方案

方案1:增加内存配置(推荐)

# 降低GPU内存使用率
--gpu-memory-utilization 0.8  # 从0.9降到0.8

# 减少并发数
--max-num-seqs 128  # 根据实际情况调整

# 启用CPU offload(如果支持)
--cpu-offload-gb 4

方案2:调整缓存策略

# 增加缓存大小(如果是配置问题)
export VLLM_CACHE_SIZE=10000

# 或在代码中设置
--multimodal-max-num-batched-tokens 8192

方案3:重启服务并监控

# 重启 vLLM 服务
pkill -9 -f vllm
# 重新启动,并添加详细日志
python -m vllm.entrypoints.openai.api_server \
    --model <model_path> \
    --gpu-memory-utilization 0.75 \
    --max-num-seqs 64 \
    --log-level debug

方案4:检查并发和重试逻辑

# 在客户端添加重试机制
import time
from tenacity import retry, stop_after_attempt, wait_exponential

@retry(
    stop=stop_after_attempt(3),
    wait=wait_exponential(multiplier=1, min=2, max=10)
)
def call_vllm_api(prompt, image):
    # 你的API调用
    pass

方案5:升级 vLLM 版本

# 检查当前版本
pip show vllm

# 升级到最新版本(可能已修复此bug)
pip install --upgrade vllm

# 或安装特定版本
pip install vllm==0.6.3

临时解决方案

如果需要快速恢复服务:

# 1. 重启 vLLM 进程
pkill -9 -f "vllm\|ray"

# 2. 清理共享内存
rm -rf /dev/shm/*
rm -rf /tmp/ray/*

# 3. 重新启动服务
# 使用更保守的配置

预防措施

# 在生产环境添加监控
1. 监控内存使用率 (RAM + GPU)
2. 监控缓存命中率
3. 设置告警阈值
4. 实现健康检查和自动重启

# 健康检查示例
def health_check():
    try:
        response = requests.post(
            "http://localhost:8000/v1/chat/completions",
            json={"model": "...", "messages": [...]},
            timeout=30
        )
        return response.status_code == 200
    except:
        return False

关键建议

  1. 优先检查内存 - 这是最常见的原因
  2. 降低并发 - 减少 --max-num-seqs 参数
  3. 添加重试逻辑 - 客户端实现自动重试
  4. 监控日志 - 持续观察是否还有其他错误
  5. 考虑升级 - 查看 vLLM GitHub issues 是否有相关修复
在“天池平台二手车交易价值评估竞赛”这一数据科学任务中,参与者需构建预测模型以估算二手车辆的市场成交价。此类赛事属于机器学习与数据分析领域的典型应用场景,旨在系统提升参赛者的特征构建、模型优化及结果验证能力。下文将分模块阐述关键技术要点: 1. 数据清洗与规整 原始数据集需经过系统处理,包括填补空缺数值、识别离群观测、剔除冗余字段,并将分类变量编码为模型可读的数值形式。此阶段质量直接影响后续建模效果。 2. 特征构建与筛选 需从原始字段中提炼有效预测因子,包括但不限于车辆制造厂商、出厂年份、行驶总里程、外观配色及动力系统配置。基于领域常识可衍生新特征,例如车龄换算、年均行驶强度指数等。 3. 数据分布探查 通过统计图表分析变量间关联规律,例如采用趋势线观察里程数与价格的相关性,使用分位数图示不同品牌的价格区间分布特征。 4. 算法模型选型 常用预测架构包括线性回归模型、树型决策结构、集成学习方法(如随机森林、XGBoost、LightGBM)、支持向量机及深度学习网络。需根据数据特性与计算资源进行综合选择。 5. 参数优化流程 采用K折交叉验证评估模型稳定性,配合网格搜索或随机搜索策略进行超参数调优,以最大化模型预测精度。 6. 集成策略应用 通过Bagging、Boosting或堆叠融合等技术整合多个基模型,通常能获得超越单一模型的表现。 7. 性能度量标准 预测任务常用评估指标包括均方误差、平均绝对误差、均方根误差及决定系数。不同业务场景需针对性选择评估体系。 8. 结果输出规范 最终预测结果需按赛事要求整理为特定结构的数据文件,通常包含样本标识符与对应价格预测值两列。 9. 时序特征处理 当数据包含交易时间维度时,需引入时间序列分析方法(如季节性分解、循环神经网络)捕捉市场波动规律。 10. 工程实践规范 采用Git进行版本追踪,通过模块化编程提升代码可维护性,建立标准化实验记录体系。 该竞赛全面覆盖数据预处理、特征工程、模型构建与验证等核心环节,同时强调工程化实施规范,既能强化技术理论认知,又可培养实际业务场景的问题解决能力。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MonkeyKing.sun

对你有帮助的话,可以打赏

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

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

打赏作者

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

抵扣说明:

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

余额充值