最近在做一个基于Qwen2.5的简单Agent,就是在工具调用循环里反复让模型推理、解析动作、执行工具再拼回对话历史。用的vLLM离线推理(OfflineBatch),但跑十几个回合之后显存就涨到爆,只能重启进程。我已经把history列表做了截断,只保留最近几轮,token长度也控制了。怀疑是vLLM的cache机制在长循环里没释放旧序列,或者是我对OfflineBatch的调用方式不对?有没有大佬遇到过类似情况,是应该换用HF原生pipeline还是给vLLM加什么参数?救救孩子,真不想每个Agent任务都手动清显存。
楼主
2026-08-14
PyTorch写Agent循环时显存越用越多,是推理框架的坑还是我代码的问题?
请 登录 后发表回复
全部回复
共 81 条
2楼
23小时前
这个大概率不是vLLM的锅,OfflineBatch每轮都重新传完整history的话,KV cache会按新序列重新算,旧序列的block确实可能没及时回收。你可以试试每轮只传新增的delta加cache位置,或者看看gpu_memory_utilization是不是设太高了导致碎片堆积。另外history截断只解决token长度,解决不了cache碎片问题,建议开个enforce_eager对比下是不是CUDA graph那块占着不放。实在不行每个回合重建LLM实例虽然丑但真能续命,我之前就这么苟过来的。