模型部署总览

本节是模型部署章节的入口。当您已经完成模型量化与编译、拿到 hbm 模型后,可以从本节了解上板部署这一段完整的动作序列,以及每个阶段的输入、产出、重点检查项与异常排查入口。

阅读本节的前置条件是已经通过 ONNX 或 PyTorch 链路完成模型量化与编译,并得到可上板运行的 hbm 模型。

部署链路术语与产物对照表

在进入具体阶段前,先通过下表对齐模型部署链路涉及的关键术语与产物:

概念模型部署
上板模型hbm
对照基准quantized_model.bc(含 quantized_removed_model.bc)
运行时框架UCP
推理接口hbDNNInferV2 / hbUCPSubmitTask / hbUCPWaitTaskDone
内存申请hbUCPMalloc / hbUCPMallocCached
张量属性hbDNNTensorProperties(validShape / stride / alignedByteSize)
性能评测hrt_model_exec perf
精度评测hrt_model_exec infer / hbm_infer
资源监控hrt_ucp_monitor
调度追踪UCP Trace

模型部署全流程阶段表

模型部署按实际使用顺序拆分为以下阶段:输入输出规则确认 → 环境与依赖准备 → 应用工程开发 → 板端运行验证 → 性能与精度评测 → 资源评估与调优。

每一步的输入、输出、是否必选、重点检查与异常跳转参考下表:

阶段输入主要输出 / 产物是否必选重点检查不满足需求时建议查看
输入输出规则确认hbm 模型明确的 validShape / stride / alignedByteSize是模型输入是否存在动态维度,stride 是否需要按平台补对齐参考 对齐规则 与 动态输入介绍 章节
环境与依赖准备开发板、交叉编译器可运行的板端环境是依赖库是否已上传板端,LD_LIBRARY_PATH 是否已设置参考 环境部署 与 基础示例包使用说明 章节
应用工程开发hbm 模型、UCP 接口可执行的推理程序是内存申请是否满足首地址对齐,输入数据是否按 stride 排布参考 模型推理应用开发指导 与 对齐规则 章节
板端运行验证推理程序、输入数据单帧推理结果是板端结果与 quantized_model.bc 是否一致参考 ONNX 模型部署一致性分析 或 PyTorch 模型部署一致性分析 章节,以及 UCP 常见问题 章节
性能与精度评测hbm 模型Latency / FPS 指标、数据集精度报告是评测时是否有其他程序占用资源参考 板端评测 与 性能调优指导 章节
资源评估与调优运行中的推理程序硬件 IP 占用率与内存信息否多模型场景下是否存在资源争抢参考 板端资源评估 章节,以及 模型优先级控制 小节

部署路径选择

进入应用开发阶段时,您可以根据目标选择以下两条路径:

  • 从基础示例包快速跑通:直接使用 OE 发布物 samples/ucp_tutorial/dnn/ 下的基础示例包,编译后在板端运行 00_quick_start 示例,先确认板端环境、依赖库与模型链路都是通的,再以示例代码为起点改造成自己的工程。适合首次上板、需要尽快拿到一个可运行结果的场景,详见 基础示例包使用说明 章节。

  • 按开发指导从零搭建工程:按工程创建、工程实现、工程编译与运行三个阶段自行搭建 cmake 工程,并在此基础上使用多模型控制策略与应用调优建议。适合需要与既有应用框架集成、或对任务调度有定制要求的场景,详见 模型推理应用开发指导 章节。

两条路径使用的是同一套 UCP 接口,差别只在于起点,您可以先用基础示例包验证环境,再切换到自建工程。

前置提示

在进入具体阶段前,请留意以下前置提示:

  • 板端推理结果应与 quantized_model.bc 一致。若不一致,请优先排查输入数据准备与对齐处理,而不是先怀疑模型本身。

  • 不同平台的输入输出对齐要求不同,具体差异请查看 平台差异说明 章节的输入输出处理差异一节。

  • 若模型精度在量化阶段就未达标,请先回到量化链路解决,部署阶段无法解决量化本身的问题。

  • 性能评测结果受平台硬件能力影响,跨平台对比性能指标时需要先确认平台型号。