ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AI与硬件结合的结构设计:从边缘算力到模型部署的工程实践

AI与硬件结合的结构设计:从边缘算力到模型部署的工程实践 去年接项目的时候有个客户提了个需求用AI识别现场设备的状态摄像头拍仪表盘把读数自动录进系统。我第一反应是调云端的OCR接口结果到现场一测彻底傻眼了——车间里网络不稳一张图传上去要两三秒才能返回结果中间时不时还断连这项目差点黄在半路。后来换成边缘硬件方案在设备旁边放一块小小的开发板本地跑模型本地出结果延迟降到几十毫秒整个系统才真正立起来。这件事给我的启发很大AI和硬件在一起不是简简单单拿个开发板烧个模型就完事背后是一整套结构设计的问题。算力放哪、数据怎么走、硬件怎么响应AI的决策、安全怎么兜底每一步都能决定项目是样机还是能落地产线的东西。这篇文章就拿我这些年做AI硬件项目的经验把AI与硬件结合的结构拆开讲讲——适合刚转AI方向的嵌入式工程师也适合想把手头设备搞聪明一点的硬件开发者和产品经理。1. AI与硬件结合的整体架构先画一张框图再动手很多硬件工程师第一次做AI项目容易直接陷入选型焦虑是买NVIDIA Jetson还是国产的瑞芯微要不要上GPU模型用YOLO还是用最新的什么网络但我觉得第一个动作应该是画图把整个系统的结构框出来想清楚每个模块的职责再谈具体芯片和模型。1.1 感知层与执行层硬件在AI系统中的两个角色AI和硬件结合的结构里硬件不只是跑模型的盒子它通常同时承担两个角色感知和执行。感知层是AI的眼睛和耳朵。摄像头、麦克风、温湿度传感器、毫米波雷达、编码器这些硬件负责把物理世界的信号采集下来通过ADC、I2C、SPI、MIPI-CSI这类接口变成数字世界可处理的数据。执行层则是AI的手和脚电机、电磁阀、继电器、伺服驱动器、加热器AI模型做出的判断最后都要落到这些硬件上。这两个角色的结构位置差别很大。感知层的数据方向是物理世界 - 硬件 - 内存 - AI模型执行层的数据方向是AI模型的输出 - 控制逻辑 - 硬件驱动 - 物理动作。我在设计结构时习惯把它们画在AI模型的两端中间用内存缓冲区和消息队列隔开这样感知采集慢一点不会卡死模型推理执行反馈慢一点也不会阻塞感知采样——这就是一个很基础但很管用的异步结构。1.2 算力分布边缘推理、云端训练与前向部署的分工AI与硬件结合的算力分布是整个结构的主干。我通常把它分成三块云端负责训练边缘负责推理微控制器负责关键安全动作。云端训练指的是用大算力GPU集群把模型训练出来这一步和硬件产品关系不大可能跑在机房或者云服务器上。边缘推理则是把训练好的模型压缩、量化之后部署到设备端的一块NPU或者GPU上设备本地就能跑前向计算不依赖网络。微控制器负责的是那些需要极低延迟和极高可靠性的动作比如急停按钮被按下、过流保护触发这些不能等AI模型算完再反应必须由MCU或者硬件逻辑直接处理。这套三层算力结构本质上是一种可靠性分级越靠近物理风险的动作越交给纯硬件逻辑越需要智能的部分越交给AI模型模型训练这种计算密集的活则放在远端。项目里每次有人问我能不能一个芯片全搞定我基本都会反问一句哪些功能的延迟要求是10毫秒以内哪些是600毫秒也能接受把这个分清楚再决定算力怎么分配。1.3 数据流与接口契约从传感器到执行器的结构骨架定了算力层接下来就是把数据通路画出来。AI硬件系统的数据流通常是传感器 - 信号调理 - 数据采集 - 预处理 - 模型推理 - 业务逻辑 - 执行器驱动。每两级之间都需要一个明确的接口契约。接口契约不是只说用串口还是CAN还要规定数据格式、单位、时间戳、异常定义。比如IMU输出的加速度到底是多少G还是多少米每二次方秒温度传感器上报的是原始ADC值还是已经换算好的摄氏度这些不一致十有八九会在联调时变成玄学bug。我在实际项目中吃过这个亏传感器模块给的是有效值算法工程师按峰值分析了一周最后对不上数据查了三天才发现单位没统一。所以在结构设计阶段就要把每段数据的单位、范围、频率、最大延迟写清楚。这个文档就是整个硬件和AI之间的宪法后面所有模块对接都按它来。2. 边缘算力硬件选型为什么很多时候不是越贵越好选型这件事特别容易被算力参数带着走。刚接触AI硬件的工程师一看到TOPS、TFLOPS这些数字就走不动路觉得越高越好。实际做完几个项目之后你会发现边缘AI硬件的性能瓶颈往往不在峰值算力而在内存带宽、数据通路和软件适配这些看不见的地方。2.1 NPU、GPU、CPU、DSP不同算力单元的分工与取舍AI与硬件结合的结构里算力单元从来不是单打独斗。拿一块主流的边缘SoC来说里面通常同时有CPU、GPU、NPU可能还有DSP。它们的分工大概是这样CPU跑操作系统、业务逻辑、网络协议栈负责组织调度。GPU擅长并行图形处理和通用并行计算做图像预处理、某些浮点密集的算子有优势。NPU专门为神经网络推理设计的加速器处理卷积、矩阵乘法这类算子效率最高能效比远优于GPU。DSP擅长音频、信号处理类的定点和流式计算适合做语音前端、振动分析。选型时不要只看某个单元的参数要看整个系统的数据链路。比如一个视觉检测项目摄像头通过MIPI-CSI传给ISPISP做完raw图处理之后既可以交给CPU做缩放也可以直接喂给NPU。这个过程如果ISP、内存带宽、NPU输入格式不匹配哪怕NPU标称50 TOPS实际吞吐也可能跑不满一半。我建议选型前先画一张数据流图标清楚每个环节的数据量再拿厂商提供的benchmark去核对。2.2 用Rockchip做边缘AI从硬件解码到模型部署的路径瑞芯微的芯片在边缘AI项目里很常见特别是RK3588、RK3568这些型号自带NPU还集成了视频编解码单元。这里重点说一说硬件解码这件事因为很多AI视觉项目的第一步就是从摄像头或者网络流里拿到图像解码效率直接决定整个流水线的延迟。在Linux系统下用Chromium跑网页应用时如果忽略硬件解码CPU会被视频解码拖得很惨。Rockchip平台通常会提供基于VA-API或者MPP的硬件解码库需要在Chromium里启用对应参数。以RK3588为例一般做法是确认内核里安装了mpp服务然后在启动Chromium时加上--enable-featuresVaapiVideoDecoder之类的参数让它通过V4L2请求硬件解码。这个过程看起来简单实际坑很多内核的dma-buf要支持、Chromium版本要和mpp版本对齐、桌面环境是否走Wayland也有影响。我在调试时习惯先用gst-launch-1.0跑一条硬件解码管道验证mpp底层通不通再回到Chromium层面配置。硬件解码在AI与硬件结合结构里的位置很关键。视觉AI流水线中解码后输出的YUV帧可以直接送进NPU做推理省去先解码成RGB再转换的开销。设计结构时尽量让解码输出和NPU输入格式保持一致能省掉不少延迟。2.3 内存带宽与功耗边缘AI最容易忽略的两个隐形瓶颈很多硬件工程师选型时盯着算力装机后一跑才发现问题出在内存带宽和功耗上。一个典型的场景NPU每秒钟要读取 tensors 的数据量很大如果DDR带宽不足NPU算得再快也得停下来等数据。我做过一个项目规格书上写的NPU算力跑模型绰绰有余但实际部署时因为内存频率上不去导致推理帧率只有理论的一半。后来调整了DDR的freq scaling策略才把性能提上来。功耗是另一个大坑。边缘设备通常在盒子里散热条件差如果满载功耗超过了散热能力的极限芯片会降频性能反而退化。选型时别只看标称功耗要看实际跑目标模型时的功耗最好用功耗仪实测。在我做过的项目里从规格书估算的功耗和实测功耗差30%以上很常见。算力、带宽、功耗这三者要在结构设计阶段同步考虑先定下来互相之间的余量等画板子时再想改就代价大了。3. AI Agent与硬件控制逻辑的结合结构最近大模型挺火很多硬件工程师也来问我AI Agent 能不能直接控制硬件这个问题值得认真聊。Agent 确实可以控制硬件但绝不能是大模型输出一串自然语言然后硬件照着执行这种结构。3.1 从被动响应式控制到Agent化决策的结构变化传统硬件的控制逻辑是事件 - 状态机 - 动作传感器触发了判断当前状态执行对应动作。这套结构确定性强、可测试、出问题好查。而AI Agent化的硬件控制是环境感知 - 大模型推理 - 任务规划 - 拆解为指令 - 硬件执行 - 反馈 - 再规划的闭环结构。这带来的结构变化很明显原来状态机是硬编码的现在决策引擎变成了模型权重原来状态转移条件写在代码里现在变成了提示词和工具调用。但底层执行的那一层我始终坚持用状态机不能让大模型直接操作寄存器或者PWM占空比。Agent 应该通过工具函数间接控制硬件比如定义好set_speed(speed_value)、stop_motor()这类接口大模型只负责决定调用哪个工具、参数是多少具体时序和异常保护交给底层执行器。3.2 AI PLC与结构化控制的融合老工业现场的新玩法PLC在工业现场用了这么多年稳定性没得说但编程门槛一直在。最近有人用大模型生成PLC代码这确实是个有意思的方向。比如一个标注好的结构化文本ST程序大模型可以理解逻辑再根据需求生成新的分支。但为什么不能说大模型直接取代PLC因为PLC讲究确定性扫描周期、实时性、安全性大模型做不到这三点。现实的结构是大模型作为一个辅助生成工具在工程阶段把自然语言需求转换成结构化文本或者梯形图代码再由人工工程师审核后灌入PLC。在运行阶段AI Agent可以放在PLC上层做生产调度优化下发参数给PLCPLC本身的执行逻辑仍然保持硬实时。这种AI规划 PLC执行的分层结构比让AI直接控制IO要安全得多。3.3 让Agent调用硬件的接口设计状态机、指令集与回环想让Agent稳定地调用硬件你需要把硬件抽象成一套很小很干净的接口。第一层是状态机层定义硬件的核心状态比如空闲、运行中、故障、急停。Agent 发来的每一个控制指令都要先经过状态机校验如果当前状态不允许该指令直接返回拒绝。第二层是指令集层挑选最常用的原子操作暴露给Agent比如启动、停止、设定速度、读取当前状态、读取传感器数据。每个指令要有明确的参数范围、超时时间和错误码别让Agent自己去翻寄存器。第三层是回环层Agent发指令后系统必须主动上报执行结果。这个回环机制很重要否则大模型会以为自己成功地停掉了电机实际上硬件早卡死了。我强烈建议把回环时间设计得短一些并让Agent感知到执行失败后可以重新规划。这三层结构加在一起才是Agent与硬件结合的正确骨架上层智能解放了灵活决策底层执行仍然安全可靠。4. AI辅助硬件研发从代码生成到测试闭环的真实经验承接上面的讨论AI不仅和新造出来的硬件结合还和我们硬件工程师的工作流结合。这一节聊聊我怎么用AI工具加速硬件项目开发以及哪些环节真能提效哪些环节会掉坑。4.1 AI写嵌入式代码可用的场景、必须改的场景和绝对不能用的场景AI生成代码确实能提效但必须明确边界。我用了大半年总结出三类场景可用的场景是驱动移植和接口模板。比如你拿到一款新传感器的寄存器手册可以用AI把寄存器配置、读取时序、数据换算这套模板代码生成出来比自己对着datasheet一个个抠寄存器快得多。必须改的场景是涉及到并发、中断和资源竞争的逻辑。AI生成的中断处理代码经常忽略中断优先级、临界区保护和上下文切换细节看起来对跑起来偶发崩。这类代码我会让AI生成伪代码和整体骨架具体实现自己手写。绝对不能用的场景是安全关键代码和底层时序严格的部分。电机的PWM波形、硬件定时器的实时响应、过压保护逻辑这些代码一旦出错轻则烧板子重则出安全事故。这类代码必须人工逐行review并经过硬件在环测试不能信任AI生成的内容。我见过有新手工程师拿AI生成的代码直接刷进板子结果PWM配置错了把电机驱动芯片烧了成本还只是次要重点是打击信心。用AI生成代码前一定要花力气把它的边界想清楚。4.2 用AI搭建硬件在环测试结构硬件在环测试HIL以前是汽车电子这种高端领域的玩法现在因为AI辅助开发变得亲民很多。HIL的基本结构是把真实硬件和仿真环境连接起来用仿真来模拟外部传感器信号验证控制器的行为。AI在HIL结构里可以做两件事一是生成仿真模型二是自动生成测试用例。比如你想验证一个电池管理系统的过压保护功能可以让AI生成一系列电压跌落、尖峰干扰的测试序列贴在仿真模型上自动观察控制器的响应时间。我在实际项目里用AI做过一套HIL的自动化脚本AI负责生成测试SOP和异常输入组合然后跑在虚拟环境中记录到的异常再反馈回模型。这个闭环把之前人工测试一周的工作量压到一天。但记住HIL里的仿真结果永远不能100%代表真实硬件特别是时序相关的测试最后必须上真实硬件复测。4.3 硬件工程师的AI工具链组合拳除了上面说的代码和测试硬件工程师还能从AI工具链里挖出不少时间。我自己常用的组合是设计阶段用大模型做方案比选和datasheet提炼拿到一个新芯片时让AI帮我总结关键参数、参考设计要点、供电时序要求画板阶段用AI辅助检查电路连接关系把原理图导出的Netlist喂给大模型让它找开路短路、电源域遗漏调试阶段遇上硬件三连上电不起振、通信不通、信号畸形先用大模型做一轮排查思路的头脑风暴再结合示波器实测定位。这套组合拳帮我节省了大量检索时间。但有一点必须提醒AI生成的信息需要交叉验证尤其涉及到具体的引脚号、寄存器地址时必须回到官方datasheet核对。网上有一些大模型对冷门芯片的回答经常出现引脚编号张冠李戴的情况一旦照着做板子就废了。5. AI硬件安全与信任根结构设计里最容易漏掉的一环很多AI硬件项目的结构图里只有感知、算力、执行和应用缺了安全这一层。等到产品要量产、要过认证、要面对真实攻击时再补安全结构就非常被动。这里说的安全不是软件防火墙那一套而是从芯片底层往上设计的安全骨架。5.1 安全启动与硬件信任根AI模型运行可信的前提AI模型最终跑在端侧硬件上整个链路从BootROM开始必须是可信的。硬件信任根是指芯片内部一个不可篡改的根密钥和对应的启动校验逻辑它是整个信任链的起点。结构上通常是芯片BootROM - 引导加载程序 - 内核 - 文件系统 - AI模型每一级要由上一级用签名校验。如果引导加载程序被改了后面的AI模型就算再加密也没用因为整个运行环境已经不可信了。做安全启动时最容易踩的坑是把密钥私钥放在开发机的普通目录里导致泄漏。密钥管理要和代码库分离还要有专门的硬件安全模块来存储和保护。5.2 硬件防拆与数据保护结构设计中的反逆向思维硬件项目里有一类需求叫防拆但结构上真正要防的不是物理拆开——到了物理破解这个层面全是国家级的攻防。我们要做的是提高拆解代价让大多数攻击者觉得不划算。常用结构包括隐蔽的螺丝孔、灌封胶工艺覆盖关键芯片、PCB内层走敏感信号线、使用带屏蔽罩的BGA封装、烧断熔丝的调试接口保护。最关键的是不要让明文数据在PCB走线上轻易被探针读到。比如SPI Flash里存着模型权重如果走线在表层且没有任何保护用逻辑分析仪就能直接抓出来。设计时要把这类敏感存储放在内层或者使用带加密功能的Flash芯片。5.3 端侧模型保护模型加密、混淆与执行环境隔离对AI硬件来说模型权重是最核心的知识产权。保护模型通常有三层一是加密存储模型文件加密放在Flash里运行时再动态解密到内存二是混淆通过算子的随机排列、假分支等方式让逆向者难以还原原始网络结构三是执行环境隔离让模型推理运行在受保护的可信执行环境里CPU和NPU之间只交换密文参数。我之前做过一个视觉检测设备一开始模型文件直接明文怼在SD卡里客户拿去被竞品拆机模型结构一目了然。后来改成启动时由安全模块解密模型加载进受保护内存效果好了不少。当然安全没有绝对做好几层防护让攻击成本高于产品价值就行了。6. 从零到一一个AI硬件项目的结构设计与落地复盘最后拿一个我做过的项目来完整串一遍结构设计一台基于机器视觉的产品质检设备。生产线上每秒钟过5个零件需要用摄像头识别表面划痕和缺陷不合格的发给剔除机构吹掉。整体过程我可以分享给大家作为参考。6.1 把模糊需求拆成硬件、算法、数据结构三张图接到需求后我没有先找开发板而是先画了三张图。第一张硬件结构图摄像头选什么分辨率、帧率工控机还是嵌入式主板光源用什么样的剔除机构用电磁阀还是伺服推杆这些最终决定了算力需求和成本。我选的是一块瑞芯微RK3588的板子配全局快门的工业相机配条形光源。第二张算法结构图任务拆成目标检测、缺陷分类两个模型。检测模型负责定位零件区域分类模型负责判断该区域内是否有缺陷。为什么拆两个因为检测和分类的数据分布差异很大合在一个模型里反而难调。第三张数据结构图每个零件有一个唯一ID系统保存它的图像、检测结果、时间戳、当前工位状态。这张图决定了数据库怎么设计也决定了后续怎么分析漏检原因。6.2 系统联调的推进顺序与常见卡点结构搭好后联调不是一次到位而是分层推进。第一步先调通底层点亮摄像头确认采集的图像清晰、色彩正常、帧率达标。第二步调模型推理把一张张图像送进NPU确认推理结果和预期一致这一步需要和算法同事一起标定置信度阈值。第三步调执行联动检测到NG后信号要能准确地传给剔除机构而且要在传送带运动过程中准时触发。这一步最麻烦因为传送带速度波动、相机触发时刻、剔除电磁阀响应延迟都影响最终定位。我印象最深的一个卡点是时序相机图像到达内存的时间和PLC收到剔除信号的时间对不上导致明明检测到了缺陷但吹气的时候零件已经过去了。后来加了一个编码器反馈测量传送带实际位置再同步到触发逻辑里这个问题才彻底解决。这类时序问题在AI硬件项目里特别常见因为AI推理本身带有几十毫秒的延迟整个链路时序计算要提前留好抖动余量。6.3 一个真实项目的踩坑记录与改进思路最后分享几个踩过的坑。第一个坑是散热设计。开发阶段板子裸奔没事塞进外壳后NPU跑满十分钟就过热降频推理速度掉了40%。后来换了大散热片并在外壳上开对流孔加了温控风扇问题才解决。强烈建议在结构设计阶段就把热仿真做掉别等到过热了再补。第二个坑是电源设计。AI硬件有脉冲式的负载变化NPU跑大模型时瞬时电流能到好几安培。如果供电结构没做好电压跌落会导致系统重启。解决方法是重点布置去耦电容并且用示波器实测不同负载跳变下的电压纹波。第三个坑是模型更新流程。早期模型更新是直接把文件拷贝到设备里结果有一次文件传输中断设备起不来。后来改成带版本号的双分区部署A区跑当前版本B区准备新版本切换后才启用回滚也方便。这套OTA结构看着笨但可靠性极高。按照这三个坑的经验我在后续项目里把散热验证、电源裕量、双分区更新都列进了结构设计检查清单后面的项目少走了不少弯路。做AI与硬件结合的项目难点从来不在一两个炫酷的模型上而在于怎么把AI能力稳稳地嵌进硬件的结构里让它长时间可靠运行还能方便地运维和迭代。我个人的体会是结构设计阶段多想一步后面调试阶段就能少熬几个通宵。顺便分享一个小技巧每次画完结构框图都试着自己扮演黑客和质检员挑毛病你会发现很多原来只有到现场才暴露的问题早就能在设计文档里被揪出来。
返回列表