|
|
||
|---|---|---|
| docs | ||
| examples | ||
| test/netrans_py | ||
| README.md | ||
| export_nbg.py | ||
| importer.py | ||
| netrans.py | ||
| quantize.py | ||
| quantize_types.py | ||
| setup.sh | ||
README.md
Netrans 简介
Netrans 是Pnna NPU 配套的AI编译器,提供命令行工具 netrans_cli 和 python api netrans_py, 其功能是将模型权重转换成在 Pnna NPU 上运行的 nbg(network binary graph)格式文件(.nb 后缀)。 Nbg 文件用于后续模型部署和推理工程的交叉编译。
工程结构
Netrans 目录结构如下:
netrans/
├── bin/ # 编译器可执行文件
├── docs/ # 项目文档
├── examples/ # 示例工程
├── test/ # 测试目录
├── netrans.py # Netrans python api
├── importer.py # 模型导入脚本
├── quantize.py # 模型量化脚本
├── export_nbg.py # 模型导出脚本
├── README.md # 说明
├── setup.sh # 安装脚本
├── pyproject.toml # 依赖配置文件
└── uv.lock
安装指南
系统依赖
- 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.8,不推荐使用其他版本
安装步骤
- 安装依赖
sudo apt update
sudo apt install build-essential
- 创建 python3.8 环境
# 下载虚拟环境管理工具 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.8
mamba create -n netrans python=3.8 -y
# 激活 netrans 虚拟环境
mamba activate netrans
- 下载 Netrans
# 下载 Netrans 到 ~/app
cd ~/app
git clone https://gitlink.org.cn/nudt_dsp/netrans.git
- 运行配置脚本
cd ~/app/netrans
./setup.sh
Netrans 使用说明
Netrans 提供 Tensorflow、Caffe、Darknet、ONNX 和 Pytorch 的模型转换示例,请参考 示例
命令行工具
Netrans 提供了简单的命令行接口,用于编译和优化模型。 基本用法
model_path='examples/darknet/yolov4_tiny'
python3 importer.py ${model_path} # 模型导入
python3 quantize.py ${model_path} asymu8 # 模型量化
python3 export_nbg ${model_path} asymu8 # 模型导出
详细说明请参考netrans 命令行使用说明。
Python接口
通过Netrans Python接口,可以方便地在Python脚本中调用编译器。 示例代码:
from nertans import Netrans
model_path = 'examples/darknet/yolov4_tiny'
# 初始化netrans
net = Netrans()
# 模型载入
net.load(model_path)
# 模型量化
net.quantize("asymu8")
# 模型导出
net.export("asymu8")
详细说明请参考netrans api 使用说明。