直接回答
LiteRT-LM 模型包检查应验证其结构化内容,而不是只看文件名是否以 litertlm 扩展名结尾。官方项目提供描述元数据和区段类型的头部模式,也提供用于构建、检查和解包模型包的工具。应针对本次候选使用的确切格式版本查阅这些资料。检查必需区段是否存在、偏移和引用是否自洽、元数据是否描述预期模型、分词器资源是否属于同一修订、外部权重是否齐全并有身份记录。最后再通过目标 Kotlin 运行时加载,并运行代表任务。包解析、运行时加载与任务验收是三道独立门禁。 不要从一个示例臆造永久通用的包校验器,也不能假设模式永不变化。记录用于检查候选的 LiteRT-LM 仓库提交或正式工具版本;如工具能暴露模式版本,也一并保存。较新 builder 可能生成可选或已弃用区段,旧运行时可能不支持它们。模型包可能引用分词器元数据或外部权重,因此只复制一个文件即使扩展名正确,也可能构成交付不完整。把 GGUF 或 TFLite 文件改名不会让它变成 LiteRT-LM 格式。 项目 LiteRT-LM 事实卡说明该框架使用自己的包与 API,而不是 GGUF。其他模型事实还指出当前 Cove 摘要缺失或占位。这些事实划定了准确边界:格式身份要根据实际包结构和工具/运行时修订判断,而非文件名;摘要缺失就必须披露。没有针对准确制品、运行时、设备和任务的记录时,不能说某个包支持特定手机。builder 文档和包模式是主要实现参考,但它们没有验证任何人制作的所有模型文件。 应制作可审计的检查回执。记录收到的包名、字节长度、可信来源修订、builder 命令及选项、检查工具版本、区段清单、元数据结果、分词器身份、外部资产及警告。不能记录用户提示词或凭据。若格式工具能解析文件,保留该结果,但不要泛化成模型已能加载。如果初始化失败,记录阶段和精确运行时构建;不要把错误叫做常见故障,也不要给出未验证修复。如果包能加载但任务验收失败,候选仍应保持未激活。 用受控的负面夹具测试:扩展名错误、头部截断、必需区段缺失、区段偏移重叠或越界、分词器不匹配、外部权重缺失、另一修订的元数据、不支持的区段类型,以及结构有效却任务不合格的包。尽可能确保解析器先拒绝错误结构,避免将畸形文件交给原生运行时。干净测试还应关闭引擎并允许后续候选重新加载。包验证是资产生命周期的一部分,不是一次性文件名检查。 发布清单应把包身份关联到来源与 builder、许可、目标运行时、应用版本、必需伴随资源和验收套件。有效包本身不能证明许可、公开可下载、设备支持、推理速度或输出质量;这些审核要分开进行。若包检查工具升级,用固定版本对语料重跑,并比较回执,而不是用新解析器默默重释旧结果。 ### 操作步骤 1. 确定确切候选字节、源修订、打包工具提交/版本和预期格式;原始输入保持不变以便计算摘要和审计。 2. 用固定版本的 LiteRT-LM builder/peek 检查工具检查区段清单、元数据、分词器关联、外部权重、偏移和警告。 3. 将所需字段与候选发布清单对照。身份缺失、混用修订或运行时不支持的组件在初始化前拒绝。 4. 使用目标 Kotlin 运行时加载同一个文件,分别记录包解析、引擎初始化和固定任务结果。 5. 运行畸形包夹具及关闭/重新加载测试,保留来源、包、运行时和验收记录供更新回滚使用。 ### 验收标准 - 记录包身份及检查工具/模式修订,不把扩展名当作格式证明。 - 元数据、分词器、外部权重、区段边界和来源修订一致,否则明确拒绝。 - 分别保存解析器接受、Kotlin 运行时加载和任务验收证据。 - 畸形候选不能替换活动制品,检查结果不推出无依据设备或产品主张。 ### 对照 | 检查 | 能证明什么 | 不能证明什么 | |---|---|---| | 文件扩展名 | 命名约定 | 包格式、区段完整或兼容性 | | 官方包结构检查 | 在固定工具/模式下结构符合预期 | 运行时执行或任务质量 | | Kotlin 运行时与任务夹具 | 候选能加载并通过已测属性 | 未测设备支持或普遍性能 | ### 常见问题 **.litertlm 扩展名能证明文件有效吗?**不能。扩展名可以任意改写。要用官方工具检查实际区段及元数据,再用目标运行时加载确切文件。 **用文本编辑器能检查模型包吗?**不能。包可能包含结构化二进制区段和外部引用。应使用对应模式版本的官方 builder 或检查工具,并保存报告。 **包解析器接受后,推理就一定能工作吗?**不能。解析、运行时初始化、算子执行和任务验收是不同阶段;每阶段都应绑定确切运行时并单独记录。 **包模式可以证明支持某个手机型号吗?**不能。设备支持需要确切包、运行时、设备和任务的证据。文件格式模式或桌面解析结果不构成 Android 兼容声明。
扩展名正确,但伴随分词器来源不确定
开发者收到一个 LiteRT-LM 扩展名文件,以及从另一次导出复制来的分词器目录。团队必须先确认区段与伴随资产属于同一源修订,才将包交给原生引擎。
决策
用固定官方工具检查包,比较每个伴随身份,然后只对一致候选运行时加载和任务测试。
预期结果
分词器混用或包缺失会在激活前被拒绝;有效包则继续经过独立运行时与任务验收。
需要收集的证据
只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:
- 包结构检查工具和版本
- 分词器、元数据及外部权重身份
- 目标 Kotlin 运行时与任务结果
只有记录了模型身份、构建配置、实际后端、任务样例和失败情况,运行时比较才可复核。
实施流程
- 固定确切字节和工具版本. 保持收到的候选不变,记录来源修订、包长度、builder/检查工具版本,以及可获得的模式版本;不能由扩展名判断格式。
- 检查包区段与元数据. 使用官方 LiteRT-LM 工具枚举区段、模型元数据、分词器引用、偏移、外部权重和警告,并将检查回执绑定候选身份。
- 核对伴随资产. 确认分词器、模型配置、外部权重和源修订属于同一发布。即使单个文件各自可解析,也要拒绝混合导出。
- 通过目标 Kotlin 运行时加载. 在受控环境下分别记录解析、引擎初始化和固定无敏感任务。保存准确运行时修订及最先失败阶段。
- 测试拒绝和释放路径. 覆盖头部截断、区段缺失、偏移错误、分词器错误和权重缺失。有效运行后关闭资源,再确认可检查或加载另一候选。
让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。
验收标准
- 固定检查工具确认包结构;不能只凭文件扩展名接收。
- 分词器、元数据、外部权重和源修订属于同一确切候选。
- 结构检查、Kotlin 运行时加载和代表任务结果分别记录。
- 畸形候选被拒绝,不替换活动制品也不产生无依据主张。
决策对照表
| 维度 | 选择或证据 | 解读方式 |
|---|---|---|
| 文件扩展名 | 命名提示 | 不能证明包字节或必需区段存在。 |
| 固定官方检查工具 | 结构验证 | 确认指定模式/工具下的结构,不等于运行成功。 |
| 目标运行时测试 | 执行验证 | 只覆盖精确测试的包、运行时和任务。 |
需要避免的失败模式
- 只凭 .litertlm 扩展名判断格式
- 混用不同导出的分词器或外部权重
- 把解析成功当作设备兼容证明
还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。
最小复现记录
| 层级 | 记录内容 |
|---|---|
| 设备 | 厂商、型号、芯片、内存档位、操作系统版本 |
| 软件 | 应用版本和 Git 提交号 |
| 模型 | 系列、变体、版本、格式、文件长度、摘要、量化方式 |
| 运行时 | 名称、版本、请求后端及实际后端证据 |
| 工作负载 | 样例版本、输入摘要、提示词摘要、输出策略 |
| 结果 | 完成、失败、取消、回退及保护隐私的诊断信息 |
发布检查表
- ☐ 主要搜索问题已回答,且没有未经支持的数字。
- ☐ 所有模型文件和运行时版本均已固定。
- ☐ 代表性任务和失败处理策略均有说明。
- ☐ 生命周期、取消、清理和回退均已测试。
- ☐ 用户内容与网络边界均有说明。
- ☐ 结论只适用于被记录的配置。
- ☐ 新增测试结果时链接到原始方法或证据。
来源与相关证据
中文部署与排错专题见。奇连 AI 端侧专题。
常见问题
.litertlm 扩展名能证明模型包有效吗?
不能。任何文件都可以改名。使用官方工具检查真实包区段和元数据,再让目标运行时加载该候选,并核对伴随资源身份及来源修订。
文本编辑器能验证 LiteRT-LM 文件吗?
不能。包可能有结构化二进制区段及外部引用。使用固定版本的官方 builder 或 peek 工具并保留检查结果、警告、工具版本、候选身份及包修订。
解析器接受就代表推理可用吗?
不代表。包结构检查、引擎初始化、算子执行和任务验收是不同边界,要绑定准确运行时并逐项记录,同时保存最先失败阶段。
包模式能证明手机兼容吗?
不能。设备支持需要精确制品、运行时、设备和任务的证据。模式文件或桌面解析不能证明具体 Android 手机可用,也不能外推同系列机型。