最近在做一个基于Llama-3.1-8B的Agent,自己用PyTorch写了个简单的ReAct循环,没有用LangGraph之类的框架。就是很朴素的:模型推理→解析工具调用→执行工具→把结果拼回对话历史→再推理。
楼主
2026-08-04
用PyTorch写Agent循环,显存越跑越大,大家有遇到吗?
请 登录 后发表回复
全部回复
共 101 条
2楼
1天前
你这个问题我太熟悉了,之前写ReAct循环也踩过一模一样的坑。八成不是模型本身泄漏,而是你的对话历史在无限膨胀,每轮把工具返回结果原封不动拼回去,context越拉越长,KV cache自然跟着涨。可以先用torch.cuda.memory_allocated()在每个阶段打点,看看是推理时涨还是拼历史时涨,一般能定位到。另外工具返回里如果带了一大坨JSON或者网页原文,一定要截断或摘要,不然几轮下来直接把显存吃干净。还有个容易忽略的点,解析工具调用时如果用了正则或者eval,可能会留下计算图引用,记得用torch.no_grad()包住推理部分。实在不行就在每轮结束后del掉中间张量再empty_cache,虽然治标不治本但能续命。你现在的历史管理是直接append还是有做窗口截断?这个决定了是改代码还是换架构。