目录

模型批量时间测试示例

概述

所有示例通过 Python 接口实现板卡推理,批量测试每个模型的4种数据类型板卡推理时间,结果保存到.csv中。提供源码地址、权重文件、nbg文件、测试图片。

流程图:

graph TD
  subgraph 模型批量处理流程
      A[开始] --> B[板卡建立连接]
      B --> C[遍历模型文件夹
获取所有模型文件] C --> D{遍历每个量化模型} subgraph D[单个模型处理流程] D1[删除旧模型] --> D2[加载新量化模型] D2 --> D3[执行多次推理] D3 --> D4[统计推理时间
计算最佳时间] end D --> E[将处理结果保存] E --> F{是否还有
下一个模型?} F -- 是 --> D F -- 否 --> G[结束: 批量处理完成] end

项目结构


├── resource/             # 算法模型
├── src/                  # 源码
│   ├── utils/            # 公共组件
│   └── auto_test.py      # 批量测试脚本
├──  README.md            # 项目说明文档
├──  requirements.txt     # 依赖包

快速开始

环境要求及配置

硬件要求

  • NPU 板卡 :FT78E_DSKC_202311V0 板卡
  • 连接与通信准备(自备):网线
  • 板卡上已开启 jsonrpc_server 服务

编译和使用

  • 下载下位机源码。下位机源码路径工程下的examples/jsonrpc_server下
  • 编译工具和相关库请看jsonrpc_server的页面
  • 将板子ip设置为192.168.23.100,在电脑上添加192.168.23.132这个ip(与板子ip保持在同一网段)。
  • 将可执行文件为examples/jsonrpc_server下的server
  • 传输到板子,在命令行输入./server运行即可。

通信基础信息

  • 通信协议:WebSocket
  • 连接地址:ws://192.168.23.100:8000/websocket,与板卡保持一致
  • 数据格式:JSON-RPC(远程过程调用协议,请求/响应均为JSON格式)

创建 python3.8 环境

wget "https://mirrors.tuna.tsinghua.edu.cn/github-release/conda-forge/miniforge/LatestRelease//Miniforge3-$(uname)-$(uname -m).sh"
mkdir -p ~/app
INSTALL_PATH="${HOME}/app/miniforge3"
bash Miniforge3-Linux-x86_64.sh -b -p ${INSTALL_PATH}
echo "source "${INSTALL_PATH}/etc/profile.d/conda.sh"" >> ${HOME}/.bashrc
echo "source "${INSTALL_PATH}/etc/profile.d/mamba.sh"" >> ${HOME}/.bashrc
source ${HOME}/.bashrc
mamba create -n netrans python=3.8 -y
mamba activate netrans

安装依赖

pip install -r requirements.txt

下载工程

git clone https://gitlink.org.cn/nudt_dsp/models.git

评估指标

  • 推理平均速度:下位机多次推理平均时间(毫秒)
  • 推理最佳速度:下位机单张图片最佳推理时间(毫秒)

执行脚本

python auto_test.py --models_dir models_test --output_csv results.csv

参数: models_dir(str): 模型根目录 output_csv(str): 输出CSV文件路径

  • 生成的CSV文件包含以下列:
    字段名 说明
    model_name 模型名称
    model_type 量化类型
    avg(ms) 平均推理时间(毫秒)
    best(ms) 最佳推理时间(毫秒)

函数说明

  • clear_csv_file(csv_file) 清空CSV文件,只保留表头。 参数: csv_file(str): CSV文件路径

  • append_to_csv(result, csv_file) 追加单条结果到CSV文件。 参数: result(dict): 包含测试结果的数据字典 csv_file(str): CSV文件路径 返回:写入是否成功

  • process_nb_file(nb_path, model_name, quant_type, input_data) 处理单个.nb文件并返回测试结果。 参数: nb_path(str): .nb模型文件路径 model_name(str): 模型名称 quant_type(str): 量化类型 input_data(numpy.ndarray): 输入数据 返回:测试结果,错误时返回None

  • generate_data_from_yml(yml_path) 从YAML配置文件中读取输入数据尺寸并生成随机数据。 参数: yml_path(str): YAML配置文件路径 返回: numpy.ndarray或 None: 生成的随机数据

  • process_and_save_model(model_path, model_name, csv_file) 处理单个模型的所有量化文件,并实时保存到CSV。 参数: model_path(str): 模型目录路径 model_name(str): 模型名称 csv_file(str): 输出CSV文件路径

  • process_models(models_dir, output_csv) 主函数,处理所有模型。 参数: models_dir(str): 模型根目录,默认”models” output_csv(str): 输出CSV文件路径,默认”results.csv”

作者 {{liangliangou}}

关于

tested models

7.0 GB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802032778号