You're reading an pre-release version of this documentation.
For the latest stable release version, please have a look at master.

Server 接口说明

简介

下位机实现了一个基于 JSON-RPC 2.0 标准协议的轻量级服务端框架,通过网口实现 NB 文件的上传、推理、删除、查询等功能。


编译和使用

获取源码

下载下位机源码:pnna 项目examples/jsonrpc_server 目录。

编译配置

  • 编译工具和相关库请参考 jsonrpc_server 目录下的说明文档

网络配置

设备

IP 地址

板卡

192.168.23.100

电脑

192.168.23.132(与板卡同一网段)

启动服务

将编译生成的可执行文件 server 传输到板卡,执行:

1./server

通信基础信息

项目

配置

通信协议

WebSocket

连接地址

ws://192.168.23.100:8000/websocket

数据格式

JSON-RPC 2.0


JSON-RPC 请求格式

所有请求需符合以下 JSON 结构,通过 WebSocket 发送文本帧:

{
  "jsonrpc": "2.0",
  "method": "方法名",
  "params": [],
  "id": 1
}

字段

类型

说明

jsonrpc

string

JSON-RPC 版本,固定为 "2.0"

method

string

调用的方法名(如 add_modelinfer_method

params

array

方法参数列表

id

int

请求 ID,用于匹配响应


核心 API 详情

1. 加载模型

加载 Base64 编码的模型文件(.nb 格式),并注册推理方法。

请求:

参数

类型

说明

params[0]

string

Base64 编码的模型文件数据

params[1]

string

注册的推理方法名

请求示例:

{
  "jsonrpc": "2.0",
  "method": "add_model",
  "params": ["nbfile", "infer_method"],
  "id": 1
}

成功响应:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": "Method 'infer_method' added"
}

失败响应:

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": 500,
    "message": "model_add_failed"
  }
}

失败原因: 模型文件解码失败、模型上下文创建失败。


2. 模型推理

调用已注册的模型执行推理,返回结果与推理耗时。

请求:

参数

类型

说明

method

string

已注册的推理方法名

params

array

Base64 编码的输入数据(数量等于模型输入节点数)

请求示例:

{
  "jsonrpc": "2.0",
  "method": "infer_method",
  "params": ["image1", "image2"],
  "id": 1
}

成功响应:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "tensor": ["output1", "output2"],
    "infer_time": "12.345678 ms"
  }
}

失败响应:

内存分配失败:

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": 500,
    "message": "malloc input_tensor failed"
  }
}

推理执行失败:

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": 500,
    "message": "Inference failed"
  }
}

3. 删除模型

删除已注册的模型,释放资源。

请求:

参数

类型

说明

params[0]

string

已注册的推理方法名

请求示例:

{
  "jsonrpc": "2.0",
  "method": "delete_model",
  "params": ["infer_method"],
  "id": 1
}

成功响应:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": "Model 'infer_method' deleted"
}

注:若方法名不存在,仍返回成功。


4. 查询已注册方法

返回所有已注册的 JSON-RPC 方法列表。

请求:

{
  "jsonrpc": "2.0",
  "method": "rpc.list",
  "params": [],
  "id": 1
}

成功响应:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": [
    "add_model",
    "delete_model",
    "infer_method",
    "rpc.list"
  ]
}

API 汇总

方法

功能

参数

add_model

加载模型

nb_file, method_name

{method_name}

执行推理

input_data...

delete_model

删除模型

method_name

rpc.list

查询方法列表


作者:ougaoliang