离线日志分类器能在设备上跑起来,离交付还差几件事:升级后输出变了,谁发现?模型进程卡住,业务是否继续?日志有没有被调试程序传到外网?只回答“权重在本地”,这些问题都没有解决。
我做技术方案评审时更愿意把“掌控”拆成可核对的对象。2026年10月8日,Google在Gemini at Work公告里同时谈到Agent身份、沙箱、审计和支出上限。它是厂商对自己产品的说明,不能证明本地方案天然具备同样能力;但它提醒我们,交付的是一条受管理的工作链,不是一个模型文件。官方公告
下面假设要在一台Linux网关上把错误日志分成“连接失败、存储异常、未知”三类。模型只生成候选标签,固定规则检查后交给运维人员;它没有删除日志和修改网络配置的权限。这个场景是设计样例,没有对应客户或上线成绩。
版本:文件一样,不代表整条推理链一样
| 要固定什么 | 应留下什么 | 不能据此保证什么 |
|---|---|---|
| 权重与分词器 | 文件哈希、来源、许可证 | 模型输出始终正确 |
| 模板与运行时 | 模板版本、代码commit、构建选项 | 升级后输出完全相同 |
| 后端与配置 | CPU/GPU后端、量化和采样参数 | 跨设备逐字一致 |
文件校验值得做,但范围要说准。把下面代码保存成manifest.py,它只校验一个构建产物的字节身份。读者可以直接复制运行,不依赖额外项目。
import hashlib from pathlib import Path def digest(path): h = hashlib.sha256() with Path(path).open("rb") as f: for block in iter(lambda: f.read(1024 * 1024), b""): h.update(block) return h.hexdigest() def verify(path, expected): if len(expected) != 64: raise ValueError("expected must be a SHA256 hex digest") actual = digest(path) if actual != expected.lower(): raise ValueError("artifact mismatch") return actual if __name__ == "__main__": import sys print(verify(sys.argv[1], sys.argv[2]))命令为python3 manifest.py artifact.bin 预先记录的SHA256。摘要应来自可信构建记录,不能在验收时从待验文件现算一份、再拿它和自己比较。哈希还需要与启动清单关联:磁盘上校验通过的版本,不一定就是当前常驻进程实际加载的版本。
示例在macOS arm64、Python 3.9.6上用教学文件验证了“正确摘要通过、错误摘要失败”。这不是模型加载实验,也没有验证供应链签名或运行中进程身份。
数据:把外传出口逐个画出来
| 数据经过哪里 | 要检查的边界 |
|---|---|
| 原始日志到预处理 | 是否包含令牌、个人信息;谁能读取 |
| 预处理到模型 | 是否通过本地socket;是否意外调用远端API |
| 模型到报告 | 输出能否带回原始敏感片段 |
| 调试与监控 | 遥测、崩溃转储和日志上传是否另有出口 |
“设备端运行”只说明推理的位置。它没有替你检查上传代理、目录权限、调试插件和报告接收者。若需求是禁出网,应由系统网络策略限制,并在目标环境核查实际连接;不能只看模型应用的一个离线开关。
资源:映射、驻留与后端复制是三件事
mmap建立虚拟地址映射。文件页什么时候进入内存、是否仍被回收、后端是否另建张量缓冲区,不能从一次映射成功推出来。mmap手册
| 观察对象 | 可记录的证据 |
|---|---|
| 模型文件 | 大小、格式、哈希 |
| 进程内存 | PSS、匿名区、文件映射及峰值 |
| 运行时 | KV缓存、工作区、后端复制 |
| 整机余量 | 系统可用内存、其他业务、压力与温度 |
同样,mlock成功意味着相应页保持驻留,代价是占用可回收余地,还受权限和RLIMIT_MEMLOCK等条件约束。它既不是所有设备的必选项,也不是所有设备都该禁止的选项。mlock手册
图中四行是不同验收对象,不是已经打通的生产链。对这个分类需求,我会先设固定输入上限、并发上限和超时;模型超时后保留原始事件并输出“未分类”,不让主业务等待无限推理。
回滚:旧文件还在,只完成了一半
| 失败情形 | 预定行为 | 恢复时还需确认 |
|---|---|---|
| 新权重无法加载 | 新实例不接流量 | 旧实例是否仍可服务 |
| 新标签大量变成未知 | 暂停扩大发布 | 输入变化还是模型退化 |
| 推理后端异常 | 超时并保留事件 | 队列是否重复处理 |
| 回退到旧版本 | 记录任务与版本 | 旧配置是否兼容新记录 |
本地方案、云端API和混合方案都能做可靠交付,只是责任的位置不同。将上游依赖搬到设备上以后,版本维护、漏洞修复、资源不足和恢复流程也转到了团队手里。先把这四张表写完整,再决定部署在哪里。
10月24日为文章排期。本文没有描述24日的新发布,也没有给出设备吞吐、稳定运行时间或实机容量结论。配图均为概念示意。