1. 从“云端往返”到“就近处理”:边缘计算到底在解决什么麻烦
很多人第一次听到“边缘计算”这四个字,脑子里浮现的可能是“在路由器上跑个程序”或者“把服务器搬到工厂车间”。这个理解不算错,但太窄了。边缘计算真正要解决的,是一个被云计算惯坏了的思维惯性——我们总以为所有数据都应该汇聚到一个超级数据中心去处理,然后再把结果送回来。这个模式在互联网时代跑得通,因为那时候的数据量还不算离谱,延迟也不是致命问题。但到了智能服务大规模落地的阶段,这套逻辑开始撞墙。
我拿一个最直观的场景来说明。假设你在一家汽车零部件工厂做质检,产线上每分钟流过六十个零件,每个零件上装了四个高清摄像头做表面缺陷检测。如果按照传统云计算的思路,这四个摄像头每秒产生的原始图像数据加起来可能超过两百兆,全部要上传到云端,云端推理完再把“合格”或“不合格”的指令传回来。先不说带宽成本,光是网络往返的延迟就足够让产线停摆——等你云端算完,零件早就流到下一个工位了。这就是边缘计算要解决的第一类问题:延迟敏感型任务不能忍受数据长途旅行。
第二类问题是带宽的经济性。还是那个质检场景,两百兆每秒的原始数据,如果全部上传,一个工厂一年在专线上的花费就是七位数起步。但如果你在产线旁边放一台边缘服务器,让它先做一轮本地推理,只把“疑似缺陷”的那几帧图像上传到云端做二次复核,带宽消耗直接降到原来的百分之一都不到。这不是技术炫技,这是实打实的成本账。
第三类问题更隐蔽,但影响更深远:数据主权的边界。很多制造企业、医疗机构、金融机构对数据出本地有严格的合规要求。你不可能把病人的CT影像随便传到公有云上去做AI分析,也不可能把工厂的核心工艺参数暴露在公网上。边缘计算让数据在本地完成处理,只把脱敏后的结果或者统计特征上传,这在合规层面是一条底线。
所以,边缘计算不是云计算的替代品,它是云计算的延伸和补充。云负责全局调度、模型训练、长期存储;边缘负责实时响应、本地推理、数据过滤。两者配合,才能撑起真正可用的智能服务。我见过不少团队一上来就想“全部上边缘”,结果发现边缘设备的算力根本扛不住大模型的推理,最后还是要回到云边协同的架构。这个教训后面会详细展开。
提示:判断一个场景是否需要边缘计算,先问三个问题——延迟要求是否在毫秒级?原始数据量是否大到上传不经济?数据是否允许离开本地?三个问题有一个答案是“是”,边缘计算就值得考虑。
2. 智能服务在边缘侧落地时,算力、模型、数据三者的拉扯
2.1 边缘设备的算力天花板与模型选型的现实妥协
做边缘智能服务,第一个绕不开的约束就是算力。云端可以堆A100、H100,边缘侧你面对的可能是英伟达Jetson系列、华为昇腾310、瑞芯微RK3588,甚至是一块树莓派。这些设备的算力从几TOPS到几十TOPS不等,和云端动辄几百TOPS的加速卡完全不在一个量级。这就意味着,你在云端训练好的那个精度高达99.5%的ResNet-152模型,直接搬到边缘侧可能连推理都跑不起来,或者跑起来只有两帧每秒,根本满足不了产线节拍。
我自己的经验是,边缘侧的模型选型要遵循“够用就好”的原则,而不是“越大越好”。具体来说,有几个实操层面的取舍:
- 模型剪枝:把训练好的大模型里那些对输出贡献极小的神经元连接去掉,通常能压缩掉百分之六七十的参数,精度损失控制在百分之一以内。这个操作在PyTorch里有现成的工具链,比如
torch.nn.utils.prune,但要注意剪枝后需要做一轮微调,否则精度会掉得厉害。 - 知识蒸馏:用一个大的教师模型去教一个小的学生模型,让学生模型在边缘侧跑。这个方法的妙处在于,学生模型的参数量可能只有教师模型的十分之一,但精度能保留到百分之九十五以上。Hinton那篇蒸馏的开山论文虽然老,但工程上依然好用。
- 量化:把FP32的权重和激活值降到INT8甚至INT4,推理速度能提升两到四倍,内存占用直接砍半。但量化有个坑——不是所有层都对量化友好,尤其是那些输出范围变化剧烈的层,强行量化会导致精度崩塌。我一般会先用校准数据集跑一遍,看看每层的敏感度,再决定哪些层保持FP16。
这里给一个我实际用过的量化配置片段,基于TensorRT的Python API:
import tensorrt as trt config = builder.create_builder_config() config.set_flag(trt.BuilderFlag.INT8) config.set_flag(trt.BuilderFlag.FP16) # 设置校准器,用五百张代表性图片做校准 config.int8_calibrator = MyCalibrator(calibration_data, cache_file) # 对敏感层保持FP16精度 for layer_name in ["conv1", "fc_out"]: layer = network.get_layer_by_name(layer_name) layer.precision = trt.float16这个配置的核心逻辑是:大部分层走INT8拿速度,少数敏感层走FP16保精度。实测下来,在Jetson Xavier NX上,一个原本需要八十毫秒的推理任务能压到二十五毫秒左右,精度只掉了零点三个百分点。
2.2 数据在边缘侧的“粗加工”与“精加工”分工
边缘计算的一个核心设计哲学是:让数据在离产生地最近的地方完成第一轮处理。这轮处理我习惯叫“粗加工”,目的是把原始数据变成结构化信息,同时把数据量降下来。粗加工包括哪些操作?去噪、裁剪、缩放、格式转换、初步的目标检测。比如在智能安防场景里,边缘设备先跑一个轻量级的人形检测模型,只有检测到人形时才把对应的视频片段截取出来上传,其余时间的数据直接丢弃。这样云端收到的就是“有人出现的片段”,而不是二十四小时不间断的监控流。
“精加工”则放在云端或者区域性的边缘数据中心。精加工的任务包括:跨摄像头的目标重识别、行为分析、长期趋势统计、模型迭代训练。这些任务对算力要求高,但对实时性要求没那么苛刻,放在云端更经济。
这个分工模式有一个容易被忽略的细节:边缘侧粗加工的结果要带上足够的元数据。我见过一个团队,边缘侧只上传了“检测到人形”这个标签,结果云端想做重识别时发现没有时间戳、没有摄像头ID、没有位置信息,根本没法关联。后来他们在边缘侧加了一个JSON结构,把时间戳、设备ID、检测框坐标、置信度全部打包上传,云端的分析才跑通。这个教训说明,边缘侧的数据封装格式要在项目初期就设计好,不然后期改起来牵一发动全身。
2.3 模型更新:边缘侧最容易被低估的运维难题
模型在云端训练好了,怎么推到几百个甚至几千个边缘节点上去?这个问题在实验室里不是问题,在生产环境里是大问题。我经历过一次惨痛的教训:一个客户在全国有三百多个边缘节点,我们第一次做模型更新时,直接写了个脚本让所有节点同时从云端拉取新模型。结果云端出口带宽瞬间被打满,更新持续了六个小时,期间部分节点因为拉取超时进入了不可用状态。
后来我们改成了灰度发布加断点续传的方案。具体做法是:
- 把边缘节点按区域分成若干组,每组选一个节点作为“种子节点”,先从云端拉取新模型。
- 种子节点拉取完成后,同组的其他节点从种子节点所在的局域网内拉取,而不是全部走广域网。
- 每个节点的模型文件做分块校验,拉取中断后可以从断点继续,不用从头再来。
- 新模型拉取后先不激活,等所有节点都拉取完毕,再统一切换推理引擎。
这个方案把一次全量更新的时间从六小时压到了四十分钟,而且对云端带宽的冲击几乎可以忽略。更重要的是,它给了我们一个回滚的窗口——如果新模型在第一批节点上表现异常,我们可以立刻停止后续节点的切换,把已经切换的节点回滚到旧模型。
注意:边缘侧的模型更新一定要有版本管理和回滚机制。我建议每个模型文件都带上版本号和校验和,边缘节点在激活新模型前先做一次自检推理,确认输出正常后再正式切换。
3. 云边协同的架构设计:哪些活该云干,哪些活该边干
3.1 一个可复用的云边协同分层模型
在做了几个边缘智能项目之后,我总结出一个比较通用的分层模型,分成四层:设备层、边缘层、协同层、云端。每一层的职责边界要划清楚,否则就会出现“边缘干了云的活,云干了边缘的活”这种混乱局面。
设备层就是摄像头、传感器、PLC、机器人控制器这些。它们的职责是产生数据、执行指令。这一层不需要智能,只需要可靠。
边缘层是部署在現場的计算节点,可以是工控机、边缘服务器、智能网关。它们的职责是实时推理、数据过滤、协议转换、本地闭环控制。这一层的核心指标是延迟和稳定性,不是吞吐量。
协同层是我认为最容易被忽视的一层。它的职责是管理边缘节点的模型版本、收集边缘侧的运行指标、做云边之间的数据同步和任务调度。这一层可以部署在区域数据中心,也可以部署在云端,但逻辑上它是独立的。没有协同层,边缘节点就是一个个信息孤岛,运维成本会随着节点数量线性增长。
云端负责全局的事情:模型训练、大数据分析、跨厂区调度、长期存储。云端的核心指标是吞吐量和弹性,不是延迟。
这个分层模型的好处是,每一层的技术选型可以独立做。边缘层选Jetson还是昇腾,不影响云端用PyTorch还是TensorFlow;协同层用MQTT还是gRPC,不影响设备层的协议。我见过一些团队把边缘和云端的技术栈绑死,结果边缘侧想换个推理框架,云端也得跟着改,这种耦合在项目初期看不出来,到了后期就是灾难。
3.2 云边任务划分的决策树
具体到一个任务,到底该放在云上还是边上?我一般用下面这棵决策树来判断:
| 判断条件 | 放边缘 | 放云端 |
|---|---|---|
| 延迟要求 | 小于100毫秒 | 大于1秒 |
| 数据量 | 原始数据量大,需本地过滤 | 过滤后的结构化数据 |
| 算力需求 | 轻量级模型,INT8量化后可跑 | 大模型训练、复杂分析 |
| 合规要求 | 数据不允许出本地 | 数据可脱敏后上传 |
| 更新频率 | 模型稳定,更新不频繁 | 模型迭代快,需要频繁更新 |
| 网络条件 | 网络不稳定或带宽有限 | 网络稳定,带宽充足 |
这张表不是绝对的,但能覆盖百分之八十的决策场景。举个例子,一个智能客服的语音识别任务,延迟要求是五百毫秒以内,原始音频数据量不大,算力需求中等,合规上音频可以脱敏,模型更新频率中等——这个任务就适合放在边缘侧做初步识别,云端做语义理解和知识库检索。再比如,一个跨工厂的设备预测性维护任务,需要汇总多个工厂的历史数据做趋势分析,延迟要求是小时级,数据量巨大但可以批量上传,算力需求高——这个任务就适合放在云端。
3.3 边缘侧的服务编排与容器化实践
边缘节点上跑的服务往往不止一个:可能有视频解码、目标检测、数据上报、本地控制等多个进程。如果这些进程直接跑在宿主机上,依赖冲突、资源抢占、版本管理都是麻烦。我的做法是全部容器化,用Docker或者containerd来管理。
容器化在边缘侧有几个实实在在的好处。第一,环境隔离。视频解码依赖的FFmpeg版本和目标检测依赖的OpenCV版本可以互不干扰。第二,资源限制。用cgroup给每个容器分配固定的CPU和内存配额,防止某个服务跑飞了把整个节点拖垮。第三,滚动更新。新版本的服务先起容器,健康检查通过后再停旧容器,实现零停机更新。
但边缘侧的容器化也有坑。最大的坑是镜像体积。一个带CUDA的PyTorch镜像动辄好几个G,在带宽有限的现场拉取一次要很久。我的经验是,边缘侧的镜像要尽量做小:用Alpine或者Distroless作为基础镜像,只装运行时需要的库,把模型文件通过挂载卷的方式注入而不是打进镜像。这样能把镜像压到几百兆甚至几十兆。
还有一个坑是容器编排工具的选择。Kubernetes在云端是王者,但在边缘侧太重了。一个K8s节点最少要占几百兆内存,对于资源紧张的边缘设备来说太奢侈。我一般用K3s或者Docker Compose来做边缘侧的编排。K3s是K8s的轻量版,保留了大部分API,内存占用只有几十兆;Docker Compose更简单,适合节点数量少、服务拓扑固定的场景。
# docker-compose.yml 边缘侧服务编排示例 version: '3.8' services: video-decode: image: edge/video-decode:1.2.0 deploy: resources: limits: cpus: '2' memory: 1G devices: - /dev/video0:/dev/video0 object-detection: image: edge/object-detection:2.1.0 deploy: resources: limits: cpus: '4' memory: 2G reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] volumes: - ./models:/models:ro depends_on: - video-decode这个编排文件里,视频解码容器限制了两个CPU核和一G内存,目标检测容器分配了四个核、两G内存和一块GPU。模型文件通过只读卷挂载,不打进镜像。这种配置在Jetson Xavier NX上跑两个服务,CPU占用稳定在百分之六十左右,GPU占用在百分之七十左右,留有余量应对突发流量。
4. 智能体在边缘侧的落地形态与制造业服务案例拆解
4.1 边缘智能体和传统边缘推理的区别
最近“智能体”这个词很热,但在边缘侧,智能体和传统的边缘推理有本质区别。传统的边缘推理是“输入-模型-输出”的单向管道:给一张图,输出检测框;给一段语音,输出文字。智能体则是在这个管道上加了一个“决策循环”:它能根据当前的环境状态,决定下一步做什么。
我拿制造业的一个实际案例来说明。传统边缘推理做设备异常检测是这样的:传感器采集振动数据,边缘节点跑一个异常检测模型,如果异常分数超过阈值就报警。这个流程里,边缘节点只负责“判断”,不负责“决策”。但智能体做同样的事情时,它会多走几步:检测到异常后,先查一下这个设备当前的生产任务是否紧急,如果紧急就调高报警优先级;再查一下同类设备最近有没有类似异常,如果有就附上历史处理记录;最后根据预设的策略,决定是自动降速、切换备用设备、还是通知维护人员。这个“查-判-决”的循环,就是智能体和传统推理的区别。
在边缘侧实现智能体,技术上有几个关键点。第一是状态管理。智能体需要记住当前的环境状态和历史决策,这要求边缘节点有一个轻量级的状态存储,我一般用SQLite或者Redis。第二是工具调用。智能体需要能调用外部的API或者函数,比如查询MES系统、读取设备手册、发送通知。第三是决策逻辑的可解释性。制造业场景里,一个自动决策如果出了问题,必须能追溯到是哪条规则、哪个数据触发的。所以智能体的决策逻辑不能是一个黑盒,要有日志和审计。
4.2 一个汽车零部件工厂的质检智能体落地过程
去年我参与了一个汽车零部件工厂的质检智能体项目,这里把落地过程拆开来讲,里面有不少踩坑的经验。
背景:这家工厂生产刹车片,产线速度是每分钟四十五件。质检环节原本靠人工目检,三个质检员轮流盯着传送带看,漏检率在百分之三左右,而且质检员连续工作两小时后注意力会明显下降。
第一阶段:边缘推理替代人工目检。我们在产线旁边部署了一台边缘服务器,配了四路工业相机,从四个角度拍摄刹车片表面。边缘服务器上跑一个YOLOv5的轻量版模型,做表面缺陷检测。这个阶段的目标很简单:把漏检率降到百分之一以下。实测下来,模型在测试集上的mAP是零点九二,产线上的实际漏检率是百分之零点八,达到了目标。但这里有一个坑:工业相机的触发同步。四路相机如果不同步触发,拍到的就不是同一时刻的刹车片,后续的缺陷关联就会出错。我们最后用硬件触发线把四路相机连到同一个信号源上,才解决了这个问题。
第二阶段:从推理升级到智能体。漏检率达标后,工厂提出了新需求:不仅要检测缺陷,还要对缺陷分类,并且根据缺陷类型自动决定处置方式。比如,表面划痕如果深度小于零点一毫米,可以打磨返修;如果大于零点一毫米,直接报废。这个需求就要求边缘侧不仅有检测模型,还要有一个决策逻辑。我们在这个阶段引入了智能体架构:
- 检测模型输出缺陷的类型、位置、置信度。
- 智能体查询工艺数据库,获取该类型缺陷的处置规则。
- 智能体根据规则和当前产线的生产任务,决定是“放行”“返修”还是“报废”。
- 决策结果通过PLC信号发送给产线的分拣机构,同时写入MES系统。
这个阶段最大的挑战是决策的实时性。从相机触发到分拣机构动作,整个链路必须在两百毫秒内完成。我们的检测模型推理占了八十毫秒,智能体的决策逻辑占了二十毫秒,PLC通信占了三十毫秒,加上相机曝光和图像传输的时间,总共一百八十毫秒左右,勉强达标。为了留出余量,我们把智能体的决策逻辑做了缓存——对于常见的缺陷类型,规则直接缓存在内存里,不用每次都查数据库。
第三阶段:云边协同的模型迭代。产线运行三个月后,积累了大量新的缺陷样本。这些样本在边缘侧只做了推理,没有用于训练。我们设计了一个云边协同的迭代流程:边缘侧把置信度低于阈值的图像自动上传到云端,云端的人工标注团队标注后,加入训练集重新训练模型,新模型通过协同层灰度下发到边缘节点。这个流程跑通后,模型的mAP从最初的零点九二提升到了零点九六,漏检率降到了百分之零点三。
4.3 制造业智能服务中边缘侧的数据闭环设计
上面那个案例里,最值得展开讲的是数据闭环。很多团队做边缘智能,只关注推理性能,忽略了数据回流,结果模型上线后就不再进步了。一个完整的数据闭环应该包括四个环节:采集、筛选、标注、迭代。
采集环节要注意的是,边缘侧不能把所有数据都上传,那样带宽扛不住。我的做法是设置一个“不确定性阈值”:模型输出的置信度低于这个阈值的样本,才上传到云端。这些样本是模型“拿不准”的,对模型迭代最有价值。
筛选环节是在云端做的。上传上来的样本可能有重复或者质量差的,需要做一轮去重和质量过滤。我一般用图像哈希做去重,用清晰度评分做质量过滤。
标注环节可以外包给标注团队,也可以用半自动标注工具先预标注再人工修正。制造业的缺陷标注对专业性要求高,我建议让工厂的质检员参与标注规范的制定,否则标注出来的数据可能和实际判断标准不一致。
迭代环节就是重新训练和下发。这里要注意的是,新模型上线前一定要做A/B测试。我们当时的做法是,在产线上保留百分之十的旧模型节点,新模型先在百分之九十的节点上跑一周,对比两组的漏检率和误检率,确认新模型确实更好后再全量切换。
提示:数据闭环的四个环节里,筛选和标注是最容易被低估的。我见过一个团队采集了十万张图像,结果标注完发现有效样本只有两万张,其余都是重复或者模糊的。采集环节的阈值设置直接决定了后续标注的成本,宁可少采,不可滥采。
5. 边缘智能服务部署中的那些“坑”与应对策略
5.1 网络抖动导致的推理服务不可用
边缘节点部署在现场,网络条件往往不如数据中心。我遇到过最极端的情况是,一个客户的工厂在郊区,4G信号时好时坏,边缘节点和云端的连接每隔十几分钟就断一次。如果推理服务依赖云端的某个API,那这个服务就没法稳定运行。
应对策略是本地兜底。所有关键推理逻辑必须在边缘侧完整实现,不依赖云端。云端只做非关键的事情,比如日志上报、模型更新、远程配置。边缘侧要有一个本地缓存,把云端下发的配置和模型版本存下来,网络断了也能继续用旧版本运行。等网络恢复了,再把积压的数据补传上去。
还有一个细节是心跳检测和自动重连。边缘节点和云端之间的连接要有心跳机制,检测到断连后自动重连,重连失败超过一定次数就切到本地兜底模式。这个逻辑听起来简单,但实现的时候要注意重连的退避策略——不能一断连就疯狂重试,那样会把有限的带宽全部占满。我一般用指数退避,第一次等一秒,第二次等两秒,第三次等四秒,最多等三十秒。
5.2 边缘设备的散热与长期稳定性
边缘设备往往部署在没有空调的车间、户外机柜、地下管廊这些环境里。夏天车间温度能到四十度,边缘服务器的CPU温度轻松突破八十度,然后触发降频,推理延迟从二十毫秒飙到一百毫秒。这个问题在实验室里永远遇不到,到了现场就是致命的。
我的经验是,边缘设备的选型要留足散热余量。工业级边缘服务器的宽温版本能扛到零下二十度到六十度,但价格比商用版本贵不少。如果预算有限,至少要做到:机箱有主动散热风扇,进风口有防尘网,设备不要安装在密闭空间里。软件层面也可以做一些优化:把推理任务的优先级调高,让CPU在降频时优先保证推理线程;设置温度监控,超过阈值时自动降低推理频率或者切换到更轻量的模型。
5.3 边缘节点的安全防护不能只靠“物理隔离”
很多团队觉得边缘节点部署在工厂内网里,物理上隔离了外网,所以安全不是问题。这个想法很危险。我见过一个案例,攻击者通过一个未授权的USB设备接入边缘节点,植入了一个挖矿程序,导致推理服务性能下降了一半,工厂花了三天才定位到问题。
边缘侧的安全防护至少要做到这几条:
- 禁用不必要的端口和服务。边缘节点上只开推理服务需要的端口,SSH要用密钥登录,禁用密码登录。
- USB设备管控。通过udev规则限制只有白名单内的USB设备才能挂载,其他设备插入后自动拒绝。
- 镜像签名。边缘侧拉取的容器镜像要有签名校验,防止被篡改的镜像运行。
- 日志审计。所有对边缘节点的操作都要记录日志,包括谁在什么时候登录了、执行了什么命令、更新了什么模型。
这些措施看起来繁琐,但比起被攻击后产线停摆的损失,这点投入是值得的。
5.4 模型精度在边缘侧“水土不服”的排查思路
最后一个坑,也是最隐蔽的:模型在云端测试集上精度很高,部署到边缘侧后精度明显下降。这个问题可能的原因有很多,我一般按下面的顺序排查:
- 输入数据分布不一致。云端的测试集可能是从历史数据里随机抽的,但边缘侧的实际数据分布可能不同。比如,云端测试集里白天的图像多,边缘侧晚上也在跑,夜间图像的光照条件和白天差异很大。排查方法是,在边缘侧采集一批实际数据,和云端测试集做分布对比。
- 预处理不一致。云端训练时的图像预处理(归一化参数、缩放算法、颜色空间)和边缘侧推理时的预处理可能不一致。这个是最常见的坑,排查方法是把同一张图分别走云端和边缘侧的预处理流程,对比输出。
- 量化精度损失。如果边缘侧用了INT8量化,而云端是FP32,精度下降是正常的。排查方法是,在边缘侧用FP16跑一遍,如果精度恢复,说明是量化的问题,需要调整量化策略。
- 硬件差异。不同厂商的GPU/NPU对某些算子的实现可能有细微差异,导致输出不一致。这个比较难排查,一般只能通过更换硬件或者调整模型结构来规避。
我自己的习惯是,模型在边缘侧部署前,一定要做一个一致性测试:用同一批测试数据,分别在云端和边缘侧跑一遍,对比输出的差异。如果差异超过百分之一,就要查原因。这个测试花不了多少时间,但能避免上线后才发现精度问题。
6. 从项目经验里沉淀下来的几条实操原则
做了几个边缘智能项目之后,有几条原则是我现在做方案设计时一定会遵守的,这里分享出来,希望能帮到正在踩坑或者即将踩坑的朋友。
第一条:边缘侧的算力预算要打对折。你在实验室里测出来的推理延迟,到了现场至少要乘以二。因为现场有温度降频、有其他进程抢占资源、有网络抖动导致的等待。所以选型的时候,不要选“刚好够用”的设备,要选“算力翻倍”的设备。多出来的算力不是浪费,是给现场环境留的余量。
第二条:所有依赖云端的逻辑都要有本地降级方案。云端挂了、网络断了、API超时了,边缘侧的服务不能跟着挂。每一个云端调用都要有超时设置和本地兜底。这个原则在项目初期就要贯彻,后期补是补不上的。
第三条:数据格式在项目第一天就要定死。边缘侧上传的数据结构、云端下发的配置格式、模型文件的元数据规范,这些在项目第一天就要确定,并且写成文档。我见过太多项目因为数据格式不统一,后期做数据关联时花了大量时间做格式转换。
第四条:灰度发布是边缘侧更新的唯一正确姿势。不要一次性更新所有节点,先更新百分之一,观察一天,再更新百分之十,再观察一天,最后全量。这个节奏看起来慢,但比全量更新出问题后回滚要快得多。
第五条:现场调试的时间要按周算,不是按天算。边缘智能项目涉及硬件、网络、软件、模型多个环节,任何一个环节出问题都要现场排查。我现在的习惯是,在项目计划里给现场调试留出至少两周的缓冲时间,否则一定会延期。
最后说一个我自己的体会。边缘计算和智能服务的结合,技术上的难点其实不是模型本身,而是工程上的确定性。云端可以容忍不确定性,因为资源可以弹性伸缩;边缘侧不行,边缘侧的每一个毫秒、每一兆内存、每一度温度都是确定的。做边缘智能,本质上是在确定的约束下寻找最优解。这个思路转变过来之后,很多技术选型和架构决策就变得清晰了。