模型交付

Android 本地模型跨运行时版本迁移

把运行时升级当作需要针对确切制品和任务验证的兼容性变化,而不是根据版本号推断。

审核状态: 内容已校验;中文稿供用户审核 · 2026-10-04 · Fact IDs: COVE-MODEL-02, COVE-LIFECYCLE-01

直接回答

Android 本地推理运行时升级,应当视为兼容性变化,必须针对准确模型制品和用户任务验证。仅有一个依赖版本号,不能证明现有模型文件、分词器、编译缓存、对话状态或原生后端在新运行时下仍保持相同行为。Google 的 LiteRT-LM Kotlin 入门文档说明当前 Android/JVM API、初始化和显式资源关闭,是集成参考,并不是覆盖所有制品与运行时修订组合的兼容矩阵。基于这个边界,应用规划迁移时应记录旧/新运行时身份、模型修订与格式、Android 构建、ABI、后端请求、提示模板、解码配置及派生缓存版本。候选通过验证前,应保留原先可用的模型和运行时路径。如果运行时升级同时覆盖了唯一模型文件或编译缓存,失败后可能让本可恢复的升级变成整个功能不可用。更安全的发布计划是分开准备候选版本,验证制品身份、用新运行时打开、运行代表任务、检查输出属性、取消和第二次请求,全部通过后才切换活动指针。具体事务实现取决于应用架构和存储方式;除非所选 API 明确说明,否则不能宣称运行时会自动迁移模型。模型制品、分词器、提示模板、运行时、原生库和派生缓存都是独立输入。即使模型文件名未变,任意一项变化也可能要求使对应缓存失效。应把用户自己创建的对话历史与推理派生状态分开。如果对话在不同分词器或提示模板下恢复,要标记其来源并测试旧表示是否受支持;不能静默重写或删除用户记录。结构化输出应重新执行模式和安全样例。翻译功能应使用作者编写的双语样例和审核规则;几条流畅输出不能证明准确率。没有原始基准数据时,不得给升级贴上速度、内存、热、电池或设备支持数字。Cove 事实卡记录当前 Gemma E2B 的 SHA-256 字段为空,因此不能把该制品称为已验证哈希。迁移清单应区分已知文件身份与缺失摘要,跳过摘要校验时不能说完整性已确认。测试需覆盖依赖解析、APK 打包、引擎创建、旧制品打开、候选制品打开、输出验收、缓存失效、取消、崩溃/进程恢复和回滚。只要应用架构允许,就在候选通过前保留原运行时;如需额外磁盘空间,应说明影响,不可先删除旧副本。如果应用实际支持回滚,则覆盖升级与降级路径;否则明确写出不支持回滚,并提供修复或重新获取的流程。降级可能还需要恢复旧制品与旧缓存,并非只切回 Gradle 依赖。长期迁移任务只能持久化可重建状态,不能保存原生引擎句柄。界面要区分模型准备、制品校验与新运行时就绪。构建成功只能证明编译和打包;引擎初始化成功只能证明一个组合打开;代表任务通过也只证明受测制品、配置与样例。工程记录应包含模型来源与修订、实际字节长度、摘要配置状态、旧/新运行时依赖、应用构建与 ABI、迁移步骤、缓存策略、测试样例、失败和回滚结果。这样后续维护者才能判断真正的兼容结论,而不是相信版本标签。流程是:固定基线;盘点持久数据和派生状态;准备候选且不覆盖最后一个可用副本;按准确模型文件执行打开与任务验收;测试中断和回滚;最后发布范围有限的结果。本文是迁移方法,不证明 Cove 当前支持某一运行时升级或已公开模型迁移功能。

下一次 Android 发布前升级推理运行时依赖

团队更新本地推理库以满足构建要求。当前安装的模型文件与缓存会话来自旧运行时;团队尚未验证新运行时是否能打开相同文件或保留产品任务行为。

决策

保留可复现的旧运行时基线,使用准确模型和样例测试候选运行时,仅使明确需要失效的派生状态过期,并提供回滚或诚实的修复路径。

预期结果

审核者能指出哪一组运行时/制品/任务组合已通过,哪些迁移场景仍未知,而不会把 SDK 升级包装成兼容承诺。

需要收集的证据

只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:

  • 旧新运行时和模型制品身份
  • 持久数据与派生缓存清单
  • 加载、任务、取消及回滚结果

收到完整字节流还不够;最终落盘、完整性、运行时加载和恢复路径也必须验证。

实施流程

  1. 固定旧版基线组合. 记录应用提交与变体、解析后的运行时依赖、模型修订和格式、ABI、后端请求、提示模板、解码设置、缓存版本及固定用户任务样例。
  2. 盘点持久数据和派生状态. 分清模型文件、分词器、用户历史、提示/模式版本、临时下载、编译或运行时缓存及 UI 状态,并为每项标出所有者和安全删除规则。
  3. 非破坏性地准备候选版本. 新运行时与准确制品通过检查前,保留旧的可用文件和运行时路径。若空间不足以保留两份,说明限制并让用户明确选择恢复方式。
  4. 运行迁移验收样例. 检查引擎初始化、制品打开、代表性输出属性、模式与安全检查、取消、进程重建和第二次请求。保留每一项失败及其配置标签。
  5. 验证提交和回滚. 验收通过后再切换活动模型/运行时,随后测试中断、回滚或修复。按应用架构更新持久来源信息,并保持用户创建的记录不被静默改写。

让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。

验收标准

  • 每项结果都记录旧新运行时、制品、ABI、应用构建、后端请求和缓存身份。
  • 除非用户确认存储限制,否则候选制品通过打开与代表任务检查前保留旧可用副本。
  • 用户历史与派生缓存分开保存,且缓存失效规则有明确测试。
  • 发布结论仅适用于受测的运行时/制品/任务组合,不推导普遍兼容或性能结果。

决策对照表

维度选择或证据解读方式
只改依赖版本构建迁移仅证明编译和依赖解析,不能证明模型文件可以打开。
打开固定模型制品运行时冒烟测试证明一个运行时/制品组合能够初始化,不代表用户任务通过。
运行版本化任务样例迁移验收测试检查受限范围内的行为、输出规则、取消和恢复。
保留旧基线和回滚路径可恢复升级方案候选初始化或任务验收失败时仍保护可用路径。

需要避免的失败模式

  • 只因依赖更新就宣称模型兼容
  • 未经验证复用编译缓存
  • 候选版本失败前替换唯一可用模型

还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。

最小复现记录

层级记录内容
设备厂商、型号、芯片、内存档位、操作系统版本
软件应用版本和 Git 提交号
模型系列、变体、版本、格式、文件长度、摘要、量化方式
运行时名称、版本、请求后端及实际后端证据
工作负载样例版本、输入摘要、提示词摘要、输出策略
结果完成、失败、取消、回退及保护隐私的诊断信息

发布检查表

  • ☐ 主要搜索问题已回答,且没有未经支持的数字。
  • ☐ 所有模型文件和运行时版本均已固定。
  • ☐ 代表性任务和失败处理策略均有说明。
  • ☐ 生命周期、取消、清理和回退均已测试。
  • ☐ 用户内容与网络边界均有说明。
  • ☐ 结论只适用于被记录的配置。
  • ☐ 新增测试结果时链接到原始方法或证据。

来源与相关证据

中文部署与排错专题见。奇连 AI 端侧专题。

常见问题

LiteRT-LM 新版本会自动支持旧模型文件吗?

不能仅凭版本号推断。官方入门指南介绍 API 集成和生命周期,并未提供覆盖所有模型制品与运行时修订的完整兼容矩阵。

升级运行时后能继续复用编译缓存吗?

只有所选运行时有明确缓存兼容说明且准确版本组合通过测试时才可复用。否则应对派生状态做版本标记,并按规则重建或失效。

模型迁移时应重写用户对话吗?

应把用户历史与派生提示或缓存状态分开。如果新分词器或模板改变了回放行为,要保留来源并测试,而不是静默改写记录。

构建通过可以称为模型迁移成功吗?

不可以。构建只覆盖编译与打包;还应验证准确制品能打开、代表任务达到验收规则、取消有效并且回滚或修复路径清楚。