部署工程化版本管理、热更新与异常处理模型能跑起来只是第一步生产环境稳定运行才是难点。版本管理、热更新、异常处理、监控告警、日志排查……这些工程化的东西决定了产品能不能长期稳定运行。这篇讲边缘AI部署的工程化实践。大家好我是黒漂技术佬。做 demo 和做产品是两回事。demo 能跑就行产品要 7×24 小时稳定运行出了问题能快速定位、快速回滚、远程升级。售货柜是投放出去的设备不可能天天有人去现场维护。远程升级、异常自恢复、监控告警这些都是必须的。这篇讲边缘AI部署的工程化实践都是实际踩坑踩出来的经验。一、模型版本管理为什么需要版本管理模型要迭代新模型上线前要测试新模型有问题要能快速回滚不同批次的设备可能跑不同版本出问题要知道当时跑的是哪个版本版本号规范建议语义化版本主版本.次版本.修订号v1.2.3 │ │ └─ 小优化、数据更新 │ └──── 新增功能、精度提升 └────── 架构变更、不兼容升级每次发布都有明确的版本号变更记录写清楚。模型文件命名yolov8n_goods_v1.2.3_20260702.rknn │ │ │ └─ 构建日期 │ │ └─────────── 版本号 │ └───────────────── 模型用途 └──────────────────────── 基础模型一眼就能看出是什么模型、哪个版本、什么时候出的。版本元数据每个模型带一个配置文件记录详细信息{model_name:goods_detection,version:1.2.3,build_date:2026-07-02,base_model:yolov8n,input_size:[640,640],quant_type:INT8,classes:56,mAP:0.962,dataset_version:v2.1,changelog:[新增 5 种商品类别,优化反光场景检测精度,校准集更新量化精度提升]}出问题的时候看一眼配置就知道这个模型的基本信息。模型仓库所有历史版本模型统一存档不要丢每个版本的模型文件对应的配置文件训练日志、测试报告对应版本的数据集快照回滚、对比、排查问题都需要。二、模型热更新设备投出去了要升级模型总不能派人去现场插 U 盘吧远程热更新是必须的。更新流程云端发布新版本 → 设备检测到更新 → 下载新模型 → 校验 → 切换加载 → 生效关键要点1. 原子切换不能加载到一半崩了模型就废了。做法新模型下载到临时文件校验通过MD5、版本号原子替换rename操作系统保证原子性推理服务重新加载2. 版本校验下载完校验完整性和正确性MD5/SHA 校验防止下载损坏版本号检查防止降级或错版本模型格式校验确保能正常加载3. 自动回滚新模型加载失败、或者运行一段时间异常率太高自动切回旧版本。加载新模型 → 成功 → 运行 → 监控异常率 → 异常高 → 自动回滚 → 失败 → 直接回滚4. 灰度发布不要所有设备一起更先更一小部分先更 5% 设备观察 24 小时没问题再更 20%再没问题全量推送新模型有问题也只影响一小部分设备。增量更新模型文件几 MB 到几十 MB全量下载费流量。可以做差分更新只下载和旧版本的差异部分本地合成新模型嵌入式设备流量贵的场景值得做。三、异常处理体系生产环境一定会出问题关键是出了问题能不能自己恢复、会不会影响全局。分级异常处理级别 1瞬时错误自动重试网络抖动一帧推理超时临时资源不足处理自动重试记个 warn 日志不用告警。级别 2单路异常单路重启某一路摄像头断流某一路推理连续失败单路内存异常处理那一路自动重启不影响其他路。记 error 日志。级别 3全局异常服务重启NPU 挂了内存泄漏严重核心模块崩溃处理整个推理服务重启看门狗拉起。告警通知。级别 4系统级异常设备重启系统级错误驱动崩溃硬件异常处理设备重启。严重告警。常见异常与应对异常原因处理RTSP 断流网络波动、摄像头重启自动重连3秒重试推理超时NPU 调度异常跳过这帧下一帧继续模型加载失败文件损坏、版本不对回滚到上一个版本内存持续增长内存泄漏监控阈值达到就重启服务NPU 异常驱动问题、硬件故障复位 NPU不行就重启帧率持续过低算力不够、资源竞争自动降帧率、降分辨率四、监控与告警看不见的系统最可怕。一定要有监控。需要监控的指标性能指标推理延迟平均、P95、最大帧率fps预处理/后处理耗时NPU 利用率CPU 使用率内存占用业务指标每秒检测目标数各类别检测数量置信度分布异常检测结果数量健康指标服务运行时长重启次数各摄像头连接状态模型版本号告警规则推理延迟 P95 阈值 → 告警帧率持续低于阈值 5 分钟 → 告警内存占用 80% → 告警摄像头断流超过 1 分钟 → 告警服务重启 → 告警异常检测率突增 → 告警日志规范日志分级DEBUG调试信息默认关闭INFO正常运行信息WARN异常但自动恢复了ERROR出错了需要关注FATAL严重错误服务挂了关键日志点服务启动/停止模型加载/切换摄像头连接/断开推理异常自动重连/重启日志带上下文[2026-07-02 14:30:21] [ERROR] [cam01] 推理超时耗时 150ms跳过该帧带上时间、级别、模块 ID排查问题的时候一目了然。五、配置管理不同设备可能配置不一样不能硬编码。配置文件# 摄像头配置cameras:-id:cam01rtsp_url:rtsp://admin:xxx192.168.1.10/stream1resolution:1920x1080fps:25roi:[560,200,800,600]# 检测区域# 模型配置model:path:models/yolov8n_goods_v1.2.3.rknnconf_threshold:0.3iou_threshold:0.45input_size:640# 推理配置inference:npu_core:autotarget_fps:20skip_frame:false# 日志配置log:level:INFOfile:logs/inference.logmax_size:100MB配置热加载改配置不用重启服务发个信号 reload 一下阈值调整ROI 区域修改帧率调整这些运行时改的参数支持热加载方便现场调试。六、启动脚本与守护进程程序崩了要能自动拉起来。systemd 守护Linux 上用 systemd 管理服务[Unit] DescriptionAI Inference Service Afternetwork.target [Service] Typesimple ExecStart/opt/ai_service/bin/inference_server WorkingDirectory/opt/ai_service Restartalways RestartSec3 Useraiuser [Install] WantedBymulti-user.target崩溃了 3 秒后自动重启。看门狗更底层的硬件看门狗程序彻底挂了系统都能复位。RK3588 有硬件看门狗应用层定时喂狗程序卡死不喂狗了系统自动重启。启动自检服务启动时做一遍自检模型能不能加载摄像头能不能连上NPU 能不能正常推理内存够不够自检失败直接报错退出让守护进程重启不要带病运行。七、资源管理内存控制预分配内存池上限可控定期检查内存占用超过阈值主动释放缓存、重启服务RK3588 内存和系统共享推理占太多会影响其他服务。CPU 亲和性前面讲过推理线程绑大核IO 线程绑小核避免互相抢资源。优先级设置关键推理线程优先级高一点保证实时性。// 设置线程优先级structsched_paramparam;param.sched_priority50;pthread_setschedparam(pthread_self(),SCHED_FIFO,param);温度与功耗温度过高自动降频、降帧率电池供电设备可以切换省电模式防止过热死机八、灰度与 A/B 测试新模型上线怎么确认效果真的好灰度发布选一小部分设备跑新版本跑一段时间几天到一周对比新旧版本的业务指标新版本确实好再全量A/B 测试同一台设备上两个模型并行跑或者分时跑对比结果精度差异速度差异误检漏检差异确保新版本确实更好再全量推。回滚预案每次发布前都要想好出问题怎么回滚回滚到哪个版本回滚多久生效别等出了问题才手忙脚乱找旧版本。九、实际案例售货柜的工程化方案服务架构AI 推理服务systemd 守护 ├── 模型管理器版本管理、热加载 ├── 多路推理流水线 ├── 配置管理器热加载 ├── 监控指标采集 ├── 日志模块 └── 异常自恢复升级流程云端发布新模型灰度 5% 设备设备后台下载校验 MD5凌晨低峰期自动切换运行 24 小时对比业务指标没问题逐步扩大范围有问题自动回滚异常处理摄像头断流自动重连3 秒一次连不上 5 分钟后告警推理连续失败 10 次重启推理模块内存超过 70%触发告警超过 85% 自动重启服务服务崩溃systemd 自动拉起连续崩 3 次告警监控设备状态在线上报云端帧率、延迟、内存、温度实时监控异常自动告警到运维群日志可以远程拉取排查十、常见坑坑 1更新到一半断电模型文件损坏模型废了服务起不来。解决下载到临时文件校验通过再原子替换保留上一个版本损坏了自动回滚。坑 2内存泄漏跑几天就崩C 代码写不好容易泄漏跑几天内存满了。解决内存池、定期检查、阈值告警、实在不行定时重启。坑 3日志打满磁盘DEBUG 日志忘关了几天打满磁盘。解决日志轮转、大小限制、分级输出。坑 4新版本兼容问题新模型改了输出格式老版本推理代码解析出错。解决版本号校验、向前兼容、格式变更走大版本号。坑 5异常自恢复变成无限重启有问题就重启越重启越频繁陷入循环。解决加退避策略重启间隔越来越长、连续失败 N 次就告警停止。十一、本篇小结模型版本管理语义化版本、元数据齐全、历史存档热更新原子切换、校验、自动回滚、灰度发布异常分级处理瞬时重试、单路重启、服务重启、设备重启监控告警性能指标 业务指标 健康指标配置管理配置文件 热加载不要硬编码守护进程systemd 看门狗崩溃自动拉起资源管理内存控制、CPU 绑核、温度功耗灰度发布小范围验证没问题再全量有问题可回滚下一篇是本系列最后一篇售货柜实战——端到端优化落地全记录把整个系列的知识串起来。我是黒漂技术佬。