三种 Badcase 精度验证方案详解与 hbm_infer 部署实录

在模型结构优化与部署量化过程中,开发者往往会遇到一个关键任务:​基于历史 Badcase 数据验证模型精度变化​,确保模型修改不会引入明显性能退化。 这类验证常见于感知、预测、行为识别等任务,尤其在客户交付或精度回归过程中十分关键。

但实际场景中,Badcase 的来源和管理非常复杂:

  • 数据常常​分散在客户服务器​;
  • 有些数据是​动态生成、无法导出​;
  • 板端资源有限,难以长期驻留模型或数据。

为此,地平线工具链围绕量化后的模型,提供了三种可选的精度验证方案,分别适配不同类型的项目需求。

一、三种 Badcase 精度验证方案

1.1 方案一:仿真推理(Simulate Inference)

使用量化过程生成的与 hbm 等效的 .bc 模型,在服务端模拟 BPU 行为进行推理,无需依赖硬件设备。

  • 优点​:
    • 无需开发板,部署轻量;
    • 适合多模型结构快速迭代验证;
  • 缺点​:
    • 本地仿真推理因为缺少了专用板端硬件参与,速度相对较差。

适用场景​:早期算法开发、模型结构调整的初步验证。

1.2 方案二:本地数据,远程推理(hbm_infer 协同执行)

基于 hbm_infer 模块,服务端将输入数据通过 RPC 接口发送至板端,调用 HBM 模型进行真实硬件推理,结果再返回服务端进行分析。

  • 优点​:
    • 数据留在服务端,可动态调度;
    • 使用板端 硬件推理,速度较快,且度评估基于真实 BPU,结果可靠;
  • 缺点​:
    • 网络带宽影响推理效率;
    • 需依赖板端资源;

适用场景​:Badcase 动态生成、服务端数据不便迁移、对验证速度存在较大需求 、真实精度验证。

1.3 方案三:板端本地验证(纯离线推理)

通过 NFS 或本地挂载方式将全部数据传输到板端,在板端离线完成所有推理与验证工作。

  • 优点​:
    • 推理速度最快,完全无网络瓶颈;
    • 精度结果与部署完全一致;
  • 缺点​:
    • 需预先准备所有测试数据;
    • 动态输入或在线调试能力较弱
    • 重度需依赖板端资源;

适用场景​:静态 Badcase 精度评估、大规模离线验证、交付测试。

二、三方案对比一览

image.png

三、为什么重点介绍方案二?

尽管三种方案各有应用空间, 在目前发布的 OE 包与官方示例中,​对方案一/三已有说明与案例​,而​方案二虽然支持面广、功能强大,却缺少系统化教程​,另外方案二 ​hbm_infer​ 是目前唯一能同时满足以下需求的解决方案​:

  1. 数据无需迁移​:Badcase 可在服务器本地组织;
  2. 推理结果真实可信​:完全基于硬件板端执行;
  3. 部署过程存在一定复杂度​:但可高度自动化,适合通用集成;

本文将聚焦方案二的 hbm_infer 使用流程,提供完整、可运行的代码模板,帮助你快速构建服务端 + 板端协同验证框架。

四、 hbm_infer 使用指南(方案二)

4.1 安装依赖

# 安装核心组件
1. hbm_infer的使用依赖算法工具发布的docker环境,因此在使用hbm_infer前需要先构建后DOCKER环境,然后在容器中安装hbm_infer组件
2. 在NDA支持下获取hbm_infer python安装包,进入docker环境后使用pip install 安装后使用

4.2 常规模式示例:开发调试推荐

import torch
import time
from hbm_infer.hbm_rpc_session import HbmRpcSessiondef test_hbm_infer():hbm_model = HbmRpcSession(host="192.168.1.100",  # 板端 IPlocal_hbm_path="./model.hbm")hbm_model.show_input_output_info()data = {"input_0_y": torch.randint(0, 256, (1, 512, 960, 1), dtype=torch.uint8),"input_0_uv": torch.randint(0, 256, (1, 256, 480, 2), dtype=torch.uint8),}begin = time.time()for _ in range(10):outputs = hbm_model(data)print({k: v.shape for k, v in outputs.items()})print(f"Avg time: {round((time.time()-begin)*1000 / 10, 2)} ms")hbm_model.close_server()if __name__ == "__main__":test_hbm_infer()

4.3 Flexible 模式示例:多线程/多模型推荐

from hbm_infer.hbm_rpc_session_flexible import (HbmRpcSession, init_server, deinit_server, init_hbm, deinit_hbm
)
import torch, timedef test_flexible():server = init_server(host="192.168.1.100")handle = init_hbm(hbm_rpc_server=server, local_hbm_path="./model.hbm")hbm_model = HbmRpcSession(hbm_rpc_server=server, hbm_handle=handle)data = {"input_0_y": torch.randint(0, 256, (1, 512, 960, 1), dtype=torch.uint8),"input_0_uv": torch.randint(0, 256, (1, 256, 480, 2), dtype=torch.uint8),}begin = time.time()for _ in range(10):outputs = hbm_model(data)print({k: v.shape for k, v in outputs.items()})print(f"Avg time: {round((time.time()-begin)*1000 / 10, 2)} ms")hbm_model.close_server()deinit_hbm(handle)deinit_server(server)if __name__ == "__main__":test_flexible()

五、小贴士:提高推理效率的建议

  • 板端与服务端建议处于​同网段或直连​,降低传输延迟;
  • 对于批量推理任务,可提前批量加载数据并串行发送;
  • 支持 with_profile=True 打开性能日志分析;

六、总结建议

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/945714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CF512E. Cycling City

题目传送门 十分有趣的题。 思路 三条路径,本质上其实就是 \(x,y\) 同时属于两个有交集(至少交一条边)的简单环,这个肯定没问题。 套路的跑一遍 dfs,然后就有了返祖边树边和横叉边,然后朴素的分讨然后用个数据结…

ABP - 事件总线(Event Bus)[IEventBus、LocalEventBus、IntegrationEvent]

(1)事件总线(Event Bus) 核心辅助类:IEventBus:发布/订阅事件。 LocalEventBus:本地事件总线(进程内)。 IntegrationEvent:跨服务集成事件。事件总线是一种“发布-订阅”模式的通信机制,用于解耦系统中的各…

【ArcMap】基本操作1:查看属性表Table、测量路线长度、打断点

1.查看 a.查看线段信息b.查看属性表Table c.查看坐标点 2.测量路线长度-简单 3.打断点 4.画线

CSP-S模拟37

T1:回文(string) 思路: 由于本题的数据范围较小,所以可能有多种 \(dp\) 状态,这里只呈现其中可能较典的两种外加一种暴搜最优解。 DP1: 我们设 \(f_{i,j,x,y}\) 表示使用 \(a\) 串的 \(i\) ~ \(j\) 和 \(b\) 串…

Google Skills免费开放啦

Google Skills免费开放啦家人们,AI圈的大事来啦!Google搞了个大动作,直接把内部的AI学习资源打包成“Google Skills”平台,向全球开放!这波操作直接把AI学习的门槛拉到超低,普通人也能轻松上车!免费用户直接用G…

ABP - 缓存(Caching)[IDistributedCache、ICacheManager、ICacheKeyNormalizer、[Cache]、[CacheInvalidate]]

(一)缓存(Caching) 核心辅助类:IDistributedCache:分布式缓存(基于Redis等)。 ICacheManager:缓存管理器(支持多级缓存)。 [Cache]:方法缓存特性。 ICacheKeyNormalizer:缓存键标准化器,自动添加租户前缀…

好想成为人类啊——2025 . 10 . 24

好想成为人类啊。 今天应该是比较著名的程序员节,貌似大家都在庆祝。但我其实没啥感觉,因为我的理想并不是成为一个程序员。 那我的理想是什么呢,也好像并没有什么理想,可能跟艺术方面沾点儿边吧,当然,这怎么看都…

10 24(+第14场补题)

14.3维护 \(cur\), \(ans\) , \(dif = cur - ans\) 。 每次执行 \(cur = cur + a_i, \quad dif = dif + a_i\)。如果 \(cur < 0\),则 \(dif -= cur, \quad cur = 0\)。 如果 \(dif > 0\),则 \(dif = 0\)。考虑…

详细介绍:C++ 位运算 高频面试考点 力扣 268. 丢失的数字 题解 每日一题

详细介绍:C++ 位运算 高频面试考点 力扣 268. 丢失的数字 题解 每日一题pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family:…

详细介绍:第十六届蓝桥杯软件赛C组省赛C++题解(京津冀)

详细介绍:第十六届蓝桥杯软件赛C组省赛C++题解(京津冀)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

《打造自己的 DeepSeek》第 1 期:为什么要打造自己的 DeepSeek?

近些年 AI 大火,不过在国内真正火起来还是源于今年春节期间的 DeepSeek。 个人认为有两方面原因:一方面是 DeepSeek 使用方便。由于众所周知的原因,国内对国外网站的访问是有诸多限制的,其中就包括各大 AI 模型的官…

ret2text

from pwn import * io = remote("39.106.48.123", 29826) payload = b"A"*264 + p64(0x401202) io.sendline(payload) io.interactive() 264即258+8,258是rbp的位置,ida里一般是16位,0x401202为…

ABP - 异常处理(Exception Handling)[AbpExceptionFilter、UserFriendlyException、IExceptionSubscriber]

一、异常处理(Exception Handling) 常用核心辅助类:AbpExceptionFilter:自动捕获并处理异常。 UserFriendlyException:用户友好异常(直接返回给前端)。 IExceptionSubscriber:自定义异常订阅。1、核心类全解析…

2025年沸腾干燥机厂家权威推荐榜单:专业直销与高效节能技术深度解析,提供优质沸腾干燥设备及定制方案

2025年沸腾干燥机厂家权威推荐榜单:专业直销与高效节能技术深度解析,提供优质沸腾干燥设备及定制方案 沸腾干燥技术作为现代工业干燥领域的重要工艺,凭借其高效的传热传质效率和均匀的干燥效果,在制药、化工、食品…

CF Round 1046(#2135) 总结

CF Round 1046(#2135) 总结 A 可以 DP,用 vector 存下这个数出现的位置。 B 考虑移动到无限远处,如果移到左下角,容易发现离的最近的点就是离 \((-10^9,-10^9)\) 最近的点。这样就能确定一条直线(确定 \(x+y\))。…

重组蛋白表达的几种类型介绍

一、引言 重组蛋白表达(Recombinant Protein Expression) 是分子生物学与蛋白质工程中的核心技术。通过将目标基因导入特定宿主系统,可以在细胞内合成外源蛋白。不同的表达类型反映了蛋白在细胞中的定位方式、折叠状…

Luogu P5479 [BJOI2015] 隐身术 题解 [ 紫 ] [ 多维 DP ] [ 交换维度 ] [ 后缀数组 ] [ 哈希 ]

隐身术:挺巧妙的一道题。 首先考虑一个暴力:将“子串”的条件转化为对每一个后缀的前缀考虑,枚举每一个后缀。然后对每一个后缀做一个编辑距离的 DP,统计答案即可。 具体地,编辑距离的 DP 状态定义为:\(dp_{i, j…

2025年10月23日

A. 萌萌甜酱 洛谷原题:https://www.luogu.com.cn/problem/P3621题目 你准备给弟弟 Ike 买一件礼物,但是,Ike 挑选礼物的方式很特别:他只喜欢那些能被他排成有序形状的东西。 你准备给 Ike 买一个风铃。风铃是一种多…

大象《Thinking in Projects》读书笔记2

大象《Thinking in Projects》第二部分聚焦项目执行阶段的核心逻辑与实践方法,与第一部分强调的项目思维搭建形成紧密衔接,为大三学生从理论学习转向实践落地提供了关键指引。​ 这部分内容首先深入剖析了项目进度管…

06_DNS解析:从域名到IP地址

本文将通过C语言,手写实现一个基于UDP编程的DNS域名解析。一.DNS是什么? DNS(Domain Name System)的作用将我们容易记忆的域名转换为计算机可以处理的IP地址,DNS 使用 TCP 和 UDP 端口 53。 常用的nslookup命令,可…