目录
目录README.md

Netrans 简介

Netrans 是 Pnna NPU 配套的AI编译器,提供命令行工具 Netrans_cli 和 python API, 其功能是将模型权重转换成在 Pnna NPU 上运行的 nbg(network binary graph)格式文件(.nb 后缀)。 Nbg 文件用于后续模型部署和推理工程的交叉编译。

工程结构

Netrans 目录结构如下:

netrans/ 
├── bin  # binary file
├── docs  # 文档,包括用户指南和命令行工具的详细说明
├── examples  # 示例代码,展示不同框架如何使用netrans进行模型转换
├── README.md  # 说明文档,通常包含项目概述、安装指南等
├── script  # 命令行工具
├── setup.sh  # 用于设置环境或安装依赖的Shell脚本
└── test  # 测试代码

安装指南

系统依赖

  • CPU : Intel® Core™ i5-6500 CPU @ 3.2 GHz x4 支持 the Intel® Advanced Vector Extensions.
  • RAM : 至少8GB
  • 硬盘 : 160GB
  • 操作系统 : Ubuntu 20.04 LTS 64-bit with Python 3.10,不推荐使用其他版本

安装步骤

  • 安装依赖
sudo apt update
sudo apt install build-essential

# 安装 mamba ,本项目使用 mamba 创建虚拟环境,演示安装过程

# 下载 mamba 安装脚本
 wget "https://mirrors.tuna.tsinghua.edu.cn/github-release/conda-forge/miniforge/LatestRelease//Miniforge3-$(uname)-$(uname -m).sh"
 # 创建 mamba 的安装目录
 mkdir -p ~/app 
 # 安装 mamba 到 ~/app/ 
 bash Miniforge3-Linux-x86_64.sh -b -p ${HOME}/app/miniforge3
 # 添加 mamba 的初始化脚本到环境配置文件
 echo "source " ${HOME}/app/miniforge3/etc/profile.d/mamba.sh"" >> ${HOME}/.bashrc
 # 重新加载 ~/.bashrc 文件,使 mamba 初始化生效
 source ${HOME}/.bashrc
 # 创建一个名为 netrans 的虚拟环境,并安装 Python 3.10
 mamba create -n netrans python=3.10 -y
 # 激活 netrans 虚拟环境
 mamba activate netrans
  • 下载 Netrans
# 下载 Netrans 到 ~/app
cd ~/app
git clone https://gitlink.org.cn/nudt_dsp/netrans.git
  • 运行配置脚本
cd ~/app/netrans
bash setup.sh

Netrans 使用说明

Netrans 提供 Tensorflow、Caffe、Darknet、ONNX 和 Pytorch 的模型转换示例,请参考目录 ~/app/netrans/examples

命令行工具

Netrans 提供了简单的命令行接口,用于编译和优化模型。

# 以 转成 ONNX 格式的 YOLOv8s 模型为例,演示使用 Netrans 命令行工具完成转换的全过程。
# 1. 定义模型路径,模型路径默认为工作路径。
work_path='~/app/netrans/examples/infer_with_pre_post_process/yolov8s'
cd ${work_path}
# 2. 激活环境
mamba activate netrans
# 3. 模型导入
netrans load ./ --mean 0 0 0 --scale 1 1 1
# 4. 模型量化
netrans quantize ./ asymu8 
# 5. 将前后处理加入推理网络
netrans add_pre_post ./ asymu8
# 6. 导出 nbg 文件
netrans export ./ asymu8 

详细说明请参考netrans 命令行使用说明

Python接口

通过Netrans Python接口,可以方便地在Python脚本中调用编译器。 示例代码:

from netrans import Netrans

# 定义模型路径,模型路径默认为工作路径。
model_path='~/app/netrans/examples/infer_with_pre_post_process/yolov8s'
import sys
model_path=sys.argv[1]

# 初始化netrans
net = Netrans()
# 模型载入,同时配置 mean 和 scale  
net.load(model_path,  mean=[128,128,128] ,scale=[1,1,1] )
# 模型量化
net.quantize("asymu8", pre = False, post= False)
# 前后处理添加进推理
net.add_pre_post("asymu8")
# 模型导出
net.export("asymu8")

详细说明请参考netrans api 使用说明

关于

netrans 是一套针对pnna 芯片的模型处理工具,提供命令行工具 netrans_cli 和 python api netrans_py, 其核心功能是将模型权重转换成在pnna芯片上运行的 nbg(network binary graph)格式(.nb 为后缀)。

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

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号