You're reading the documentation for a development version.
For the latest stable release version, please have a look at master.

client 接口说明

简介

通过python接口,快速部署模型到板卡,获得模型的运行时间和结果

环境依赖

  • 确保板卡server已经运行,详情参考server_api.md

  • 安装好python依赖包

    1 pip install websockets jsonrpcclient
    

Client类

创建 Client

描述: 实例化 Client 类。

  • 代码示例:

    1from client import Client
    2pnna_device = Client(uri)
    

参数:

  • uri:板卡连接地址

Client.infer

描述: 板卡模型推理

  • 代码示例:

    1#单输入推理
    2infer_data, infer_time = pnna_device.infer(method_model, input_data1)
    3# 多输入推理,多个输入用,隔开
    4infer_data, infer_time = pnna_device.infer(method_model, input_data1, input_data2)
    

参数:

  • method_model:推理模型名称

  • input_data1:np格式的推理数据

输出返回:

  • 推理结果与推理耗时

Client.add_model

描述: 添加新模型到板卡

  • 代码示例:

    1ret_add = pnna_device.add_model(nb_file_path, method_model)
    

参数:

  • nb_file_path:nbg文件的路径

  • method_model:字符串,为该模型注册的推理方法名,后续调用infer需使用此名称

输出返回:

  • json格式,添加是否成功的信息

Client.delete_model

描述: 删除板卡已注册模型

  • 代码示例:

    1ret_delete = pnna_device.delete(method_model)
    

参数:

  • method_model:字符串,add时为该模型注册的推理方法名

输出返回:

  • json格式,删除是否成功的信息

Client.query

描述: 查询前系统中所有已注册的JSON-RPC方法(包括系统方法与用户通过add_model注册的推理方法)。

  • 代码示例:

    1ret_delete = pnna_device.query()
    

输出返回:

  • json格式,返回查询到的所以方法

Client.close

描述: 与板卡断开连接,释放资源

  • 代码示例:

    1pnna_device.close()
    

板卡单张图片推理示例

以netrans下的yolov5s为例,通过netrans工具生成asymu8类型的nbg文件

 1import cv2
 2from client import *
 3
 4nbfile_path = '/app/netrans/examples/onnx/yolov5s/wksp/yolov5s_asymu8_nbg_unify/network_binary.nb'
 5method_model = 'detect'
 6
 7# 数据加载
 8img = cv2.imread('/app/netrans/examples/onnx/yolov5s/0.jpg')
 9img_data = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
10
11# 初始化client
12pnna_device = Client("ws://192.168.23.100:8000/websocket")
13
14# 添加新模型到板卡
15ret_add = pnna_device.add_model(nbfile_path, method_model)
16
17# 板卡推理
18infer_data, infer_time = pnna_device.infer(method_model, img_data)
19
20# 推理结果转tensor
21preds = torch.frombuffer(infer_data[0], dtype=torch.float32).reshape(1, 25200, 85)
22
23# 断开连接
24pnna_device.close()