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

Netrans 简介

Netrans 是 PNNA NPU 配套的 AI 编译器,提供命令行工具和 Python API,将模型权重转换成在 PNNA NPU 上运行的 NBG(Network Binary Graph)格式文件(.nb 后缀)。NBG 文件用于后续模型部署和推理工程的交叉编译。

工程结构

 1netrans/
 2├── src/netrans          # Python 源码
 3├── script               # 命令行工具
 4├── docs                 # 文档
 5├── examples             # 示例代码
 6├── vendor               # 第三方依赖(acuity whl)
 7├── tests                # 单元测试
 8├── test                 # 集成测试
 9├── setup.py             # Python 包配置
10├── setup.sh             # 安装脚本(一键安装)
11├── requirements.txt       # Python 依赖
12└── README.md            # 本文件

安装指南

系统依赖

  • CPU: Intel® Core™ i5-6500 CPU @ 3.2 GHz x4 或同等性能

  • RAM: 至少 8GB

  • 硬盘: 160GB 剩余空间

  • 操作系统: Ubuntu 20.04 LTS 64-bit with Python 3.10

安装步骤

1. 克隆仓库

1git clone https://gitlink.org.cn/nudt_dsp/netrans.git ~/app/netrans
2cd ~/app/netrans

2. 创建并激活 Python 3.10 环境

 1# 使用 mamba(推荐)
 2# 下载并安装 miniforge(包含 mamba)
 3wget https://mirrors.tuna.tsinghua.edu.cn/github-release/conda-forge/miniforge/LatestRelease/Miniforge3-Linux-x86_64.sh
 4bash Miniforge3-Linux-x86_64.sh -b -p $HOME/app/miniforge3
 5echo "export MAMBA_ROOT_PREFIX=${HOME}/app/miniforge3"  >> ${HOME}/.bashrc
 6echo "source " ${HOME}/app/miniforge3/etc/profile.d/mamba.sh"" >> ${HOME}/.bashrc
 7source "$HOME/app/miniforge3/etc/profile.d/mamba.sh"
 8
 9# 创建并激活环境
10mamba create -n netrans python=3.10 -y
11mamba activate netrans

3. 一键安装

1make install
2source ~/.bashrc

4. 验证安装

1# 验证 Python 包
2mamba activate netrans
3python -c "import netrans; print(netrans.__version__)"
4
5# 验证命令行工具
6netrans --help
7netrans-dump --help

快速开始

命令行工具

 1# 进入示例目录
 2cd ~/app/netrans/examples/infer_with_pre_post_process/yolov8s
 3
 4# 激活环境
 5mamba activate netrans
 6
 7# 完整转换流程
 8netrans load ./ --mean 0 0 0 --scale 255 255 255
 9netrans quantize ./ asymu8
10netrans add_pre_post ./ asymu8
11netrans export ./ asymu8

Python API

from netrans import Netrans

# 初始化
net = Netrans()

# 加载模型
net.load('./yolov8s', mean=[0, 0, 0], scale=[255])

# 量化
net.quantize('asymu8')

# 导出(集成前后处理,推荐方式)
net.export('asymu8', platform='pnna', preprocess=True, postprocess=True)

# 或者分步添加前后处理
# net.add_pre_post('asymu8')
# net.export('asymu8', platform='pnna')

文档

许可证

与 Netrans 主项目相同。