ARTICLE DETAIL

资讯详情

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

STM32Cube AI Studio On Target模式实战:从环境配置到板上推理全流程

STM32Cube AI Studio On Target模式实战:从环境配置到板上推理全流程 STM32Cube AI Studio的On Target模式算是把模型从“能跑”推到“真能用”的关键一步。模型在PC端仿真精度再高不上板实测一遍你永远不知道它在目标芯片上到底是个什么表现。但恰恰是这个On Target模式好多人在第一步就连不上板子或者连上了又报内存不足、HardFault折腾半天连个推理结果都拿不到。这篇东西就围绕On Target模式把从环境准备、工程配置、板上运行到问题排查的完整链路捋一遍都是实测过的经验。1. On Target 模式的定位与核心价值1.1 我们为什么需要真实硬件验证先说个我在社区里反复看到的误区很多人觉得模型在STM32Cube AI Studio里用On Cloud模式验证过精度量化也做了板上跑就是走个过场。真不是这样。On Cloud模式本质是在ST的服务器上用一个软件模拟器类似STM32的指令集模拟来跑你的模型得到的是“理论上”的性能数据和精度数据。它最大的价值是快、方便、不占本地资源适合在项目早期快速判断这个模型在这个MCU上有没有戏。但模拟器永远替代不了真实硬件。原因有几层第一模拟器对Flash和RAM的占用是估算值不是实际链接后的精确值很多时候模拟器说内存够真正编译链接后就爆了第二模拟器的执行时间是基于指令周期数算出来的理论值跟实际跑起来的时钟配置、总线等待状态、Flash加速器命中率都有关系误差可以到10%甚至更多第三模型输入输出的数据格式、量化参数在模拟器里是“内定”的你拿到的精度结果是在理想条件下算出来的一旦上了板外设、DMA、中断都会跟推理争抢资源数值行为可能有微妙差异。所以ST官方才提供了On Target模式。它的工作方式并不复杂STM32Cube AI Studio通过调试器通常是ST-LINK连接你的目标板把当前工程编译生成的AI库代码和模型数据下载到芯片里然后在芯片上实际执行推理再把推理结果、耗时、内存占用这些数据回传到PC端展示。这就是一个“真实硬件跑分”的过程也是模型部署上板前最接近实际运行环境的验证手段。1.2 On Target 模式和 On Cloud 模式到底差在哪先把这个关系梳理清楚后面涉及到配置你就知道哪些选项是On Target独有的了。两种模式共享同一套上游流程模型导入、C代码生成、内存布局分析、量化配置这些在切换模式时是通用的。但在运行验证阶段两者走了完全不同的路。On Cloud模式下STM32Cube AI Studio会把模型编译出的C代码发送到ST的云仿真环境云环境里有一个针对STM32内核的指令集模拟器。它执行C代码统计模型在模拟器上消耗的周期数然后结合你选择的芯片型号和主频折算出一个推理时间的估算值。注意它其实并不真正把代码编译链接成完整的固件也不会处理你的外设初始化、时钟树、中断优先级这些东西。On Target模式则不同它需要你用STM32CubeMX先生成或者维护一个完整的工程这个工程里已经配置好了芯片型号、时钟树、调试接口、串口等等。STM32Cube AI Studio通过扩展插件或者独立的工程构建流程把AI库代码集成到这个工程中然后编译出完整的、可运行的固件文件。接下来通过ST-LINK把固件下载到目标板由目标板上的一个小型运行时程序实际上就是AI库的运行时加上测试桩执行模型推理并把结果通过调试通道回传。所以说白了On Cloud验证的是“模型能不能在这个芯片架构上跑、大概跑多快”On Target验证的是“模型在你的完整工程里、你的电路板上、你的时钟和内存配置下到底能不能跑、跑多快、精度掉没掉”。两者是完全不同的信任层级这也是为什么ST官方一直强调最终部署前一定要用On Target模式做一次完整的板级验证。2. 环境准备把“板上验证”这件事的材料备齐2.1 硬件连接与调试器选型On Target模式的前提是PC能跟目标板通信而通信的桥梁就是调试器。ST-LINK是这里面的绝对主力。如果你用的是NUCLEO、Discovery这类官方评估板板上已经集成了ST-LINK部分直接通过USB线连电脑就行。但这里有个特别容易踩的坑NUCLEO板载ST-LINK默认是支持调试和虚拟串口的但在ST-LINK的驱动配置里你有三种模式可选——Connect under reset、Hardware reset、Normal。多数板子默认Normal没问题但某些功耗较高的目标芯片或者已经跑起来占住了SWD引脚的工程Normal模式下调试器可能连接不上目标芯片这时候就需要改成Connect under reset用复位信号把芯片拉住再连接。如果你是使用自己画的板子或者第三方的STM32最小系统板调试器就得外接。这时候注意看调试器的供电能力ST-LINK V2的3.3V输出电流是有限的一般在50mA到100mA左右如果你的目标板上还有其他外设比如传感器模块、OLED屏幕、无线模块这个电流很可能不够导致上电后芯片工作不稳定、复位异常。我遇到过不少朋友在群里问“为什么我的板子连On Target模式下载固件时会随机失败”排查到最后就是外接调试器供电不足给板子外接了一个独立3.3V电源后问题就消失了。调试器连接方式上SWD只需要四根线SWDIO、SWCLK、GND、3.3V供电可选。但要注意SWDIO和SWCLK这两根线尽量短建议在10cm以内线太长信号质量差在稍高频的调试时钟下会出现CRC校验错误。另外如果调试器连不上目标板不要急着换调试器先量一下目标板的NRST引脚电平如果被外部电路拉低了板子会一直处在复位状态SWD接口自然也就无法枚举到设备。2.2 软件版本配套一个容易被忽视的坑On Target模式对软件版本配套的要求极为苛刻而且这个问题在报错信息里往往表现得不明显。我见过的情况包括Cube AI Studio提示“target not ready”但板子明明连着固件下载成功但回传数据超时模型能跑但精度明显和On Cloud仿真差一大截查到最后发现是CubeMX生成的HAL库版本和AI运行时库版本不匹配。所以我强烈建议在做On Target验证之前先把软件版本匹配关系确认一遍STM32CubeMX版本On Target模式依赖CubeMX生成的初始化工程。不同版本的CubeMX对时钟树和HAL库的初始化代码略有差异AI运行时库对HAL库的版本有兼容要求。ST官方文档里对每个Cube AI版本都列出了经过验证的CubeMX版本范围尽量在这个范围内。STM32Cube AI Studio版本Studio本身会每周或每月更新每个版本对应的函数库X-CUBE-AI版本也锁定了。如果你是用Studio直接生成代码并集成到CubeMX工程里版本一致性由插件机制保证但如果你手工把Studio生成的代码拷到旧的CubeMX工程里或者反过来用Studio 8.x版本生成的代码去配CubeMX 6.9的工程很容易出问题。固件包Firmware Package版本你用的HAL库、LL库都来自ST官方固件包。打开CubeMX的Help - Manage embedded software packages确认你安装的固件包版本跟CubeMX建议版本一致。这里分享一个我自己的排查习惯出现莫名其妙的On Target连接问题或者运行崩溃时我不会第一时间去怀疑代码而是先创建一个干净的空工程只配置时钟和调试口然后在Studio里对这个空工程做On Target验证。如果空工程能跑通说明硬件连接和工具链版本链路没问题如果空工程都跑不通那问题就出在版本配套或者硬件连接上跟你的应用代码没关系。这个方法能帮你把“环境问题”和“应用问题”快速隔离省下大量排查时间。2.3 创建工程时的关键设置无论你准备用官方板还是自定义板在CubeMX里创建工程时有几个设置项跟On Target模式的稳定性直接相关。第一个是调试接口。新建工程后第一件事就是去System Core - SYS或Debug不同版本位置略有差异里把Debug选成Serial Wire。很多人在CubeMX里新建工程时默认Debug是Disabled因为对某些量产板子厂商会建议把调试口关闭以减少功耗和引脚占用。但如果Debug是Disabled固件一旦跑起来SWD引脚被释放成普通GPIO你在On Target模式下固件下载完成后调试器根本无法再通过SWD连接芯片去读回推理结果。而且更麻烦的是如果你没有提前在烧录时配置好Connect under reset固件里又把SWD关了那芯片基本就变砖了只能通过设置BOOT引脚进系统存储器用串口ISP的方式擦除Flash麻烦至极。第二个是时钟配置。On Target模式对芯片主频是有要求的并非所有主频都能正确运行AI库。建议把RCC里的HSE外部高速晶振或者HSI内部高速时钟配好然后在Clock Configuration页面里把系统主频调到你所用芯片的最高主频。比如STM32H743最高跑480MHzSTM32F767最高216MHz。AI推理的计算性能跟主频直接挂钩你如果只配了64MHz就去跑On Target虽然能跑但性能数据没有参考价值因为实际产品里你不可能为了一个AI模型把主频降这么低。第三个是堆栈大小。AI推理时运行时库会申请不少栈空间尤其是一些较大的模型如果栈不够上电后一执行推理就直接HardFault。在CubeMX工程的Project Manager - Project Settings里把Stack Size适当调大我常用的值是0x10004KB如果模型比较大或者使用了较深的中间表示会调整到0x2000。堆Heap也建议调大到至少0x400。这个调整是为后续Studio在板上跑测试预留余量实测中栈溢出导致的HardFault还挺常见的。3. 实操过程从加载模型到拿到实测结果3.1 选择目标板官方板与自定义板的两条路当你第一次在STM32Cube AI Studio里创建项目并切换到On Target模式时会有一个目标板选择界面。这里有两类入口一是选择ST官方的评估板型号例如NUCLEO-H743ZI2、STM32F746G-DISCO这类二是直接通过导入CubeMX工程的方式用你自己的板子配置。官方板这条路最简单适合刚接触On Target模式、想快速验证工具链是否正常的开发者。选好板子后Studio会自动拉取这个板子的默认时钟配置和引脚配置你几乎不需要额外设置就能把模型跑起来。但注意Studio内置的板级支持包版本可能会跟你本地CubeMX固件包版本不一致如果加载时提示“board configuration mismatch”直接用Studio推荐的配置覆盖即可。自定义板这条路才是实际项目里最常用的。操作方式是先在本地的CubeMX里把你目标芯片的工程配好保存为.ioc文件然后再在Studio里导入这个CubeMX工程。Studio会解析ioc文件提取芯片型号、时钟频率、内存配置等信息。这里有个关键点Studio在导入工程时会默认把工程里所有空闲的Flash和RAM空间都分配给AI模型使用。如果你的CubeMX工程里已经有大量代码和数据占据了Flash或者你在链接脚本里手工划定了某些区域给其他功能Studio可能识别不到这些占用生成的内存布局会跟实际链接结果冲突。我建议在导入自定义板工程前先确保你的CubeMX工程能正常编译、烧录、运行。也就是说On Target验证的工程最好是空的、只包含基础外设配置的工程这样AI库才有充足的内存空间也能避免其他驱动代码干扰推理结果。如果项目里确实有大量业务代码那就把它拆分On Target验证用精简工程实际产品在验证通过后再手动把AI库代码和模型数据集成到正式工程里。3.2 内存分配ROM/RAM 是怎么被“算”出来的On Target模式里内存分配是很多人看不明白的环节。Studio里有一个界面会显示模型的Flash占用和RAM占用并且会跟目标芯片的Flash/RAM总容量做对比。这里需要注意的是Studio显示的是模型本身的需求量而不是最终固件的实际占用。先说Flash。模型数据在Flash里占的空间主要包含三部分模型权重参数、算子相关代码比如卷积、全连接这些算子层、运行时库的静态代码。模型权重参数在量化后通常占大头8bit量化后的权重就是1字节/参数4bit量化后是0.5字节/参数这也是为什么ST官方一直推荐8bit量化起步、有条件再上4bit的原因。算子相关代码体积相对固定一般在几十KB量级跟你选用的模型算子种类有关用到的算子越多越杂代码体积越大。再说RAM。RAM占用的大头是中间激活值activations也就是每一层卷积、每一层池化计算过程中产生的中间结果。这个数值跟模型的输入尺寸和通道数强相关跟定点数无关量化主要影响权重存储对激活值RAM影响有限。Studio里显示RAM占用时会给出“峰值激活内存”这样一个指标你就把它理解为整个推理过程中某一瞬间占用的最大RAM量。如果你的模型峰值激活内存是80KB那说明在推理到某一层时RAM里同时存在这80KB的中间数据其他层的数据可能已经释放了。如果在On Target验证阶段报了RAM不够的错误有两条出路一是减小输入尺寸这是最直接有效的办法输入尺寸减半激活内存可能降到四分之一甚至更少二是修改Studio里的内存优化选项把内存布局策略从“均衡”改为“优先极小化激活内存”Studio里对应选项通常叫Activation memory optimization这种模式会牺牲一点点推理速度换掉更低的RAM峰值。实测中这个优化能省下20%到40%的激活内存。3.3 模型编译、部署与运行当Studio把你的模型转成C代码后界面上会有一个“Build”或者“Generate”阶段。On Target模式下这个阶段的工作量比On Cloud大不少因为它需要把AI库代码跟你的HAL驱动代码、启动文件一起编译链接成完整的固件。编译过程中最常见的麻烦是编译器版本或链接脚本兼容性问题。Studio内部集成了arm-none-eabi-gcc工具链但在导入CubeMX工程时它会尊重工程里原有的工具链配置。如果你之前在CubeMX里配的是IAR或者Keil的工程链Studio可能会提示“compiler not supported”这时候需要把工程的工具链切换成GCC。在CubeMX的Project Manager里Toolchain设置选择STM32CubeIDE它就是基于GCC的重新生成代码后再导入Studio。编译通过后下一步是把固件下载到目标板上。Studio在这时会开启一个调试会话等价于用ST-LINK烧录一次固件。烧录成功后目标板并没有立即执行推理而是进入一个等待状态等待Studio通过调试接口下发“开始推理”的命令。这是On Target模式的一个典型工作机制它不是烧录完就直接跑而是由上位机一步一步控制。实际推理测试时Studio会给模型构造一个或多个输入样本如果你在导入模型时同时导入了校准数据集它会从里面挑一些样本如果没有就生成随机数输入下载到目标板的内存中然后让芯片执行推理。推理完成后芯片把输出结果写回到指定内存Studio再读取回传。界面展示的数据通常包括每层的推理耗时、整个模型的推理耗时、输出的各类别概率或回归值、RAM峰值占用等。这个过程中有个不太显眼但非常实用的按钮叫“Validate”就是多次重复推理并做一致性检查。计算机上的浮点计算是确定性的但在嵌入式环境里因为内存踩踏、栈溢出、外设DMA写坏数据等问题偶尔会出现某一次推理结果异常的情况。跑一次Validate如果十次推理结果里有几次数值不一致那基本可以断定你的工程里有内存越界或者并发访问冲突的问题了。3.4 理解测试结果正确率、耗时与内存占用拿到On Target模式的结果后你真正要关注的指标不止推理耗时一个。这里有一个常见的误解大家习惯性盯着“推理时间”这个数字把这个数字对标On Cloud模式里的理论耗时一旦数据不吻合就怀疑工具链出问题了。先说耗时。On Cloud模式的理论耗时通常基于“芯片以主频满载运行、内存零等待”的理想假设而On Target模式跑出来的是真实耗时它包含了指令预取的Flash等待周期、总线仲裁比如DMA和CPU同时访问内存、Cache命中率等所有真实因素。两者有差距是正常的一般On Target的结果会比On Cloud慢10%-30%如果差距超过50%那就要考虑是否有外设频繁抢占CPU、或者Flash配置成最低等待周期导致CPU大量等待的情况了。如果你用了带Cache的ST芯片比如M7内核的H7系列记得在CubeMX里打开指令Cache和数据Cache推理速度会有明显提升。再说精度。On Target模式的精度回传是“模型输出值”和“参考输出值”的偏差分析Studio会计算出每个输出的平均绝对误差、最大误差等指标。如果你导入模型时附带了一个参考输出比如测试集的标注label你还能直接看到分类正确率。这一步重点观察误差是否跟On Cloud模式仿真出来的误差基本一致。如果板上精度比仿真精度明显差个几个百分点优先怀疑输入数据的预处理差异比如你在应用中用浮点归一化而模型输入是整型均匀量化两头一比精度自然掉了。最后是内存。Studio界面的内存报告会显示编译链接后实际占用的Flash和RAM这个数字通常比Studio提交模型时预估的数字要大因为链接脚本里还有启动代码、中断向量表、堆栈等系统区段。实际内存你关心两件事就行一是Flash不能超过芯片容量二是RAM峰值不能超过芯片RAM同时要给系统栈和堆留够余量。有一个经验值芯片的RAM至少要比模型峰值激活内存多出30%-40%的余量否则即便编译链接能过运行期也可能因为动态内存分配失败而崩溃。4. 常见问题与排查技巧实录4.1 连接失败类问题On Target模式下“连接失败”是出现频率最高的报错没有之一。这一类问题的表现形式多样但根源绝大多数就四个方向驱动、物理连接、目标板状态、软件配置。驱动方向装了ST-LINK驱动但设备管理器里看不到ST-LINK设备或者设备带黄色感叹号。解决办法是把ST-LINK驱动卸载后重新安装并且确认你安装的是最新版本的ST-LINK驱动。我遇到过Win10系统更新后旧版驱动自动被替换掉的情况导致Studio识别不到调试器重装一次驱动就好了。物理连接前面提过的四根线接触不良或者USB线质量太差。USB线这个问题要单独说很多微型USB线只有供电线没有数据线充电能用但数据传输完全没有。所以如果你连上后电脑完全没有识别到任何设备先换一根确定能传数据的USB线试试。目标板状态目标板没上电、NRST被拉低、目标芯片已经跑飞、BOOT0引脚配置不对导致芯片进入ISP模式等这些都会让调试器无法正常访问芯片。排查时先用STM32CubeProgrammer自带的“Connect”按钮试试能否读取到芯片ID如果CubeProgrammer都连不上那Studio就更连不上了。软件配置Studio里的调试器设置Debugger selection可能没有选对。在Studio的设置界面里确认选择的调试器类型跟你的实际硬件匹配比如内置ST-LINK还是外接ST-LINK还是J-Link。另外如果板子有多个调试接口比如NUCLEO板子上有ST-LINK和另外一个SWD口确认Studio识别到了正确的接口。4.2 编译或运行期崩溃类问题编译阶段最常见的错误是“region FLASH overflowed”和“region RAM overflowed”这个很直白就是内存不够。建议按我前面说的顺序排查先看模型大小考虑是否需要换更小的模型或者更强的量化再看是否有优化选项没开最后看链接脚本是否被改过是否有其他代码占用过多内存。运行期崩溃最典型的是HardFault。On Target模式下HardFault几乎没有直接的报错信息你只能看到Studio卡住不动或者长时间没有返回数据。出现HardFault我的排查顺序是这样的检查栈溢出打开调试器看PC指针和LR寄存器如果PC复位到了HardFault_Handler先看栈顶地址是否接近栈区边界。检查指针非法访问看系统寄存器里的Fault状态寄存器SCB-CFSR如果是IMPRECISERR非精确总线错误多半是DMA或外设访问了不存在的地址如果是UNDEFINSTR未定义指令多半是代码跑飞了。检查启动文件某些型号的芯片启动文件里对FPU的启用是有条件的如果启动文件里没有打开FPU而代码里用了浮点运算指令芯片会触发UsageFault。这个问题在使用Cortex-M4/M7内核的芯片时特别容易遇到因为AI推理库默认是开启FPU的而CubeMX生成的工程里有时会在SystemInit阶段才初始化FPU顺序不对就出问题。解决办法是在中断向量表之前、Reset_Handler里尽早调用SystemInit或者确认代码里执行了SCB-CPACR | ((3UL 10*2) | (3UL 11*2))。还有一个我在实际项目中遇到的坑AI库生成的代码默认假设Cortex-M内核支持指令集是兼容的但如果你在CubeMX里把芯片选成了M0内核的型号而AI库使用的是为M4/M7编译的SIMD优化指令那跑起来直接触发UsageFault。这种情况下不要硬调代码老老实实把目标芯片换成支持相应指令集的内核或者重新用支持该内核的ST官方模型优化库。4.3 输出结果异常类问题连接和编译都正常推理也执行了但返回的结果跟On Cloud仿真的结果对不上或者干脆是乱码、全零、全满值这一类问题通常指向数据链路。全零输出或者全相同值优先怀疑输入没有正确写入。Studio在On Target模式下会通过调试接口把输入数据写到RAM里如果写数据时地址不对或者输入的排列方式内存布局跟模型期望不一致推理结果自然就是错的。这时候可以看Studio日志里打印的输入数据地址和目标板实际接收数据的内存地址做个对比。如果你发现Studio写的是0x20000000而模型输入缓冲区实际在0x20001000那把Studio里的输入缓冲区偏移改成对应值就好。乱码输出怀疑数据宽度和字节序问题。模型的输入如果是int8类型Studio回传时如果按照int16解析就会乱码。排查方式是固定模型输入类型比如你用8bit量化模型输入格式就是int8那Studio回传数据时也按int8格式查看不要用浮点格式查看。精度异常还可能是量化误差被放大导致的这个问题在On Target模式下比On Cloud模式更明显因为片上模型的权重是真实量化后的而On Cloud模式某些情况下会把量化权重反量化为浮点再计算这个差异会造成一定的精度偏差属于正常现象。但如果偏差大到不可接受优先检查校准数据集你是否提供了有代表性的校准集。校准集不够代表真实场景量化时的缩放因子算得就不准有些权重会被压缩损失大量信息量。解决方式是重新准备校准集覆盖真实使用中可能出现的各种输入分布。4.4 排查速查表现象可能原因快速处理办法Studio提示找不到目标板调试器驱动异常/物理连接断开用CubeProgrammer单独连接测试重装ST-LINK驱动固件下载成功但回传超时调试接口被应用代码关闭检查CubeMX的Debug设置是否Serial Wire编译报Flash溢出模型参数过多或量化不足改用更小输入尺寸或开启8bit/4bit量化编译报RAM溢出激活内存过大开启激活内存优化减小输入分辨率推理结果全零输入缓冲区地址不对核对Studio和目标板的内存映射表推理结果乱码数据宽度/字节序不匹配统一按量化类型解析输出HardFault栈溢出/未启用FPU/指令集不兼容查CFSR寄存器核对启动文件和内核型号精度明显低于仿真校准集无代表性/预处理不一致重新采集校准集统一归一化方式5. On Target 模式的一些进阶使用建议5.1 从“验证”走向“调优”On Target模式的价值绝不止于跑通一个模型。一旦你能熟练地在板上拿到推理耗时和内存占用你其实就获得了一个调优杠杆。我平时做模型部署时On Target模式的定位是“验证平台”但它的数据会反哺整个部署决策链路。比如我拿到一块主频216MHz的STM32F767原本计划跑一个ResNet-18分类网络On Target实测推理时间是820ms这显然在应用场景里不可接受。那On Target模式的数据就告诉我问题不在工具链而在模型选型上。于是我回到模型设计层把ResNet-18换成MobileNetV2量化后On Target实测掉到260ms再进一步用Ghost模块替换部分卷积层最终压到120ms以内。这个过程中On Target模式就是一把尺子每一次模型改动我都能快速上板验证实际收益。另外一个很实用的技巧是On Target模式可以直接用来做芯片选型。项目早期不确定该用F4还是H7就可以用同一份模型分别在两块NUCLEO板上跑On Target验证对比实测耗时就知道了。这种方法比看数据手册估算靠谱得多因为你在真实跑的是自己的模型、自己的量化策略、自己的外设负载。5.2 多模型与版本管理的小建议实际项目中一个产品里往往不止一个模型比如关键词语音检测加声纹识别、目标检测加分类、异常检测加回归拟合。在On Target模式下ST官方建议一次只验证一个模型因为每个模型的编译和内存布局是独立生成的多个模型混在一起会让内存布局分析变得复杂也容易互相干扰。我的习惯是在原型阶段把每个模型单独做成一个On Target验证工程进入集成阶段后再把验证过的AI库代码分别集成到产品工程里通过ST的优化运行时比如把多个模型的共享算子合并来减少代码体积。另外版本管理是个容易被忽略的点。On Target模式验证通过只是一个时点的状态。你更新了CubeMX工程比如改了时钟、加了外设驱动、更新了Cube AI Studio版本、或者更新了HAL库版本之后之前验证的结果就不再有效了。所以每次项目里程碑节点我都会把“On Target验证通过”作为一个正式的评审项记录当时的软件版本号和芯片型号。如果后续改了任何环境相关配置就重新跑一遍On Target验证防止引入回归问题。这里还有一个实际工作中的小技巧在CI流程里是可以集成On Target验证的ST官方提供了命令行模式的Cube AI工具可以直接在流水线里调用自动烧录固件、跑若干次推理、比对结果。如果你的团队已有自动化测试体系把模型精度回归测试做成一个夜间任务一旦模型更新或者代码改动让精度跌破阈值第二天早上就能收到报警邮件这是非常实用的质量兜底手段。
返回列表