[enhancement]: Need a download retry feature in Model Manager

在 InvokeAI 的 Model Manager 中下载大型模型(尤其来自 Hugging Face 的多文件模型)时,如果连接在传输中途被对端断开或挂起,下载会直接失败,重启后往往从 0% 重新开始,已下载的部分数据可能被丢弃。优先排查下载源连接稳定性和临时目录处理逻辑。

快速结论:在 InvokeAI 的 Model Manager 中下载大型模型(尤其来自 Hugging Face 的多文件模型)时,如果连接在传输中途被对端断开或挂起,下载会直接失败,重启后往往从 0% 重新开始,已下载的部分数据可能被丢弃。优先排查下载源连接稳定性和临时目录处理逻辑。

适用环境:Issue 中确认出现的场景为 InvokeAI(有用户报告在 Windows 上的 1.84 版本)、下载约 10.6GB 的 Wan-AI/Wan2.2-T2V-A14B-Diffusers(text_encoder + tokenizer,共 9 个文件)。Issue 未确认统一的 Python、CUDA、显卡或依赖版本,请以本机实际环境为准。

最快修复方案:暂无确认的一步修复方案。该 Issue 为 enhancement(功能请求),没有官方合并的修复。评论中提到有用户自行在本地修改了 DownloadQueueService._do_download 并验证有效,但属于本地补丁,非官方发布。

注意事项:本地修改源码后升级 InvokeAI 可能被覆盖;自行补丁未经项目维护者审核,风险自担。Issue 最终被关闭,且讨论出现偏离主题,不代表功能已被实现。

问题场景

用户在 InvokeAI 的 Model Manager 中下载大型模型(例如 Wan-AI/Wan2.2-T2V-A14B-Diffusers 这类多文件、约 10GB 级别的模型)时触发问题。表现为下载在 0% 到 100% 之间的任意位置失败或挂起,Model Manager 停在那里不再继续;重启 InvokeAI 后,之前已下载的部分数据会被丢弃,并出现清理 hanging folder、temp-data 之类的提示,导致每次都要从头重新下载。

报错原文

urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

此外 Issue 标题中的功能请求为:[enhancement]: Need a download retry feature in Model Manager

原因分析

根据评论中用户的排查,可能的原因有两个相对独立的问题:

  • 问题一:DownloadQueueService._do_download 中初始 HTTP 请求没有重试。流式传输循环在传输中途断线时会通过 Range 头重试,但最开始的 self._requests.get(...) 没有重试机制。Hugging Face 有时会在尚未交换任何字节前就断开首个连接,于是抛出上面的 RemoteDisconnected,任务立即失败且没有任何数据写入磁盘。
  • 问题二:中断后重新开始下载时,会创建带唯一名称的新临时文件夹,旧的临时文件夹残留在 models 目录中;已下载的部分文件无法被续传复用。

上述分析来自用户自行定位,是否与所有环境一致尚未由官方确认,可视为可能原因。

环境排查

  • 确认 InvokeAI 版本(Issue 中用户报告为 1.84)。
  • 确认操作系统(Issue 中确认出现于 Windows)。
  • 确认下载的模型名称与来源(Issue 中为 Wan-AI/Wan2.2-T2V-A14B-Diffusers,多文件约 10.6GB)。
  • 检查下载失败时控制台是否出现 urllib3.exceptions.ProtocolError 或 RemoteDisconnected。
  • 检查 models 目录下是否存在残留的临时下载文件夹(唯一名称的 temp 目录)。
  • 确认网络环境是否稳定、是否存在数据流量限制。

解决步骤

  1. 先确认是官方版本还是本地已打补丁版本:查看当前 InvokeAI 是否有针对初始请求重试的修改。
  2. 可优先尝试:参考评论中用户的本地补丁思路,为 DownloadQueueService._do_download 中最初的 HTTP 请求增加重试逻辑(对首个 GET 失败进行重试)。这是用户自行验证过的方向,但不是官方发布的修复。
  3. 可优先尝试:评估在下载中断后,让新会话能够复用已有的临时文件夹和部分文件,而不是每次生成新的唯一临时目录;对已存在但不可恢复的旧临时目录,提供清理机制避免残留。
  4. 如果没有条件修改源码,可临时改用其他方式获取模型文件(例如手动下载后放入模型目录),绕过 Model Manager 的下载流程,这也是 Issue 中提到的可稳定工作的替代方案。
  5. 下载过程中保持网络稳定,避免在下载大文件时中断电源或网络。

验证方法

在修改或调整后重新下载同一个大模型,观察:

  • 若在传输中途连接断开,下载是否能自动重试而不是立即失败。
  • 重新启动下载时,已下载的部分数据是否被复用,而不是从 0% 开始。
  • models 目录下是否不再残留无法清理的旧临时文件夹。

如果上述行为改善,说明问题得到缓解。由于该 Issue 没有官方合并修复,验证结果依赖于你采用的具体补丁或替代方案。

参考来源

invoke-ai/InvokeAI #8840

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 27308

发表回复

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