三種 Badcase 精度驗證方案詳解與 hbm_infer 部署實錄
數據常常分散在客戶服務器;
有些數據是動態生成、無法導出;
板端資源有限,難以長期駐留模型或數據。
一、三種 Badcase 精度驗證方案
1.1 方案一:仿真推理(Simulate Inference)
優點:
無需開發板,部署輕量;
適合多模型結構快速迭代驗證;
缺點:
本地仿真推理因為缺少了專用板端硬件參與,速度相對較差。
1.2 方案二:本地數據,遠程推理(hbm_infer 協同執行)
優點:
數據留在服務端,可動態調度;
使用板端 硬件推理,速度較快,且度評估基于真實 BPU,結果可靠;
缺點:
網絡帶寬影響推理效率;
需依賴板端資源;
1.3 方案三:板端本地驗證(純離線推理)
優點:
推理速度最快,完全無網絡瓶頸;
精度結果與部署完全一致;
缺點:
需預先準備所有測試數據;
動態輸入或在線調試能力較弱
重度需依賴板端資源;
二、三方案對比一覽
三、為什么重點介紹方案二?
四、 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 HbmRpcSession
def test_hbm_infer():
hbm_model = HbmRpcSession(
host="192.168.1.100", # 板端 IP
local_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, time
def 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 打開性能日志分析;
六、總結建議
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。









