Ollama Generate node turns red when using (keep_context) and switching between models in current session

该问题通常出现在 ComfyUI 中通过 Ollama Generate 节点、在开启 keep_context 的同一会话内切换不同模型时,节点变红并返回 500 错误。优先排查会话上下文(KV Cache)与模型切换之间的状态一致性,而不是显存容量本身。

快速结论:该问题通常出现在 ComfyUI 中通过 Ollama Generate 节点、在开启 keep_context 的同一会话内切换不同模型时,节点变红并返回 500 错误。优先排查会话上下文(KV Cache)与模型切换之间的状态一致性,而不是显存容量本身。

适用环境:Issue 中已确认的环境为 Windows 下的 ComfyUI Easy Install 整合包、comfyui-ollama 自定义节点(OllamaGenerateV2)、RTX 3060 Ti 8GB 显存、32GB DDR3 内存;Ollama 服务端与 Python 客户端 ollama 库。其他版本信息 Issue 未明确给出。

最快修复方案:暂无确认的一步修复方案。Issue 中讨论的修复方向是在服务端检测到模型或上下文设置变化时显式清理 KV Cache,但这是评论者提出的修复思路,并非已验证发布的一步操作。

注意事项:用户自行观察到的“重启服务端或刷新浏览器并保持同一模型”只是临时规避手段,不是根因修复。评论中给出的 Go 代码补丁与单元测试属于推测性修复方案,未在 Issue 中确认已合并或验证有效;修改服务端代码前请先备份并在测试环境确认。

问题场景

用户在 ComfyUI 工作流中使用 Ollama 相关节点:Ollama Options → Ollama Connectivity → Ollama Generate 节点,再依次连接 Show text Pixaroma、TTS Text Suite 节点和 PlaySoundKJ 的 ComfyUI kjnodes 节点。当开启 keep_context,并在当前会话中从一个模型切换到另一个模型时,Ollama Generate 节点变红报错;切换的模型类型和引擎不影响复现。只要不切换模型,keep_context 在 true/false 之间切换不出问题。

报错原文

ollama._types.ResponseError: detokenize error: {"error":{"code":500,"message":"vector","type":"server_error"}} (status code: 500)

Node Type: OllamaGenerateV2
Exception Type: ollama._types.ResponseError

原因分析

可能原因是在 keep_context 开启时,Ollama 服务端会保留上一轮推理的上下文(KV Cache)。当同一会话内切换模型或改动上下文相关设置时,旧的缓存状态没有与新模型对齐,服务端在 detokenize 阶段读取了不一致的向量状态,于是返回 500 与 message: “vector”。评论者将其诊断为会话历史/缓存管理问题,而非显存或物理内存不足;由于该判断来自讨论摘要,尚未由 Issue 中的正式修复确认,因此按“可能原因”对待。

环境排查

  • 确认 Ollama 服务端版本,以及 comfyui-ollama 节点版本。
  • 确认 ComfyUI 是 Easy Install 整合包还是独立环境,Python 解释器路径是否与节点依赖一致。
  • 确认使用的模型列表与 keep_context 设置,记录触发切换前后的模型名称。
  • 确认 RTX 3060 Ti 8GB 显存下是否会同时驻留新旧模型;Issue 未给出显存占用数据。
  • 按 Ollama 官方排障文档开启服务端日志,便于定位 detokenize 失败的具体请求。

解决步骤

  1. 先复现并记录:开启 keep_context,第一次用模型 A 生成,再在同一会话切换到模型 B 生成,记录 Ollama Generate 节点报错和对应服务端日志。
  2. 按 Ollama 官方排障文档(docs.ollama.com/troubleshooting)获取服务端日志,确认 500 请求发生在模型切换后的第一次生成。
  3. 临时规避:需要跨模型工作时,重启 Ollama 服务端或刷新浏览器,并让当前会话只使用同一个模型;或在该工作流中关闭 keep_context。此方法由 Issue 作者实测有效,但只是绕过问题。
  4. 可优先尝试的根因修复方向:在 Ollama 服务端生成处理逻辑中,检测同一会话的模型或 keep_context 设置是否发生变化,如有变化则先清理该会话的 KV Cache,再发起新的生成请求。
  5. 若自行修改服务端代码,按评论建议增加针对“切换模型后清理缓存”的单元测试,验证切换后不再残留旧会话的 KV 状态。
  6. 修改后重新跑步骤 1 的复现流程,并对比服务端日志中是否仍有 detokenize/vector 错误。

验证方法

在同一 ComfyUI 会话内开启 keep_context,先用模型 A 完成一次生成,再切换到模型 B 生成。若 Ollama Generate 节点不再变红、服务端日志中没有 detokenize error 与 message: “vector”,并且切回模型 A 仍可正常生成,则可认为问题已解决或已规避。仅靠“重启后不切换模型”能正常,不算验证修复。

参考来源

ollama/ollama #19137

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 29595

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注