"); //-->
数据常常分散在客户服务器;
有些数据是动态生成、无法导出;
板端资源有限,难以长期驻留模型或数据。
优点:
无需开发板,部署轻量;
适合多模型结构快速迭代验证;
缺点:
本地仿真推理因为缺少了专用板端硬件参与,速度相对较差。
优点:
数据留在服务端,可动态调度;
使用板端 硬件推理,速度较快,且度评估基于真实 BPU,结果可靠;
缺点:
网络带宽影响推理效率;
需依赖板端资源;
优点:
推理速度最快,完全无网络瓶颈;
精度结果与部署完全一致;
缺点:
需预先准备所有测试数据;
动态输入或在线调试能力较弱
重度需依赖板端资源;
# 安装核心组件 1. hbm_infer的使用依赖算法工具发布的docker环境,因此在使用hbm_infer前需要先构建后DOCKER环境,然后在容器中安装hbm_infer组件 2. 在NDA支持下获取hbm_infer python安装包,进入docker环境后使用pip install 安装后使用
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()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 打开性能日志分析;
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。