forked from nudt_dsp/netrans
|
|
||
|---|---|---|
| .devops | ||
| .gitea/workflows | ||
| docs | ||
| examples | ||
| script | ||
| src/netrans | ||
| test | ||
| vendor | ||
| .gitignore | ||
| Makefile | ||
| README.md | ||
| VERSION | ||
| requirements.txt | ||
| setup.py | ||
| setup.sh | ||
README.md
Netrans
Netrans 是 PNNA NPU 配套的 AI 编译器,提供命令行工具和 Python API,将深度学习模型转换为 NBG(Network Binary Graph)格式,用于在 PNNA NPU 上部署运行。
特性
- 多框架支持:ONNX、TensorFlow、TFLite、PyTorch、Caffe、Darknet、Keras
- 多种量化策略:asymu8、symi8、symi16、fp16、混合量化
- 前后处理集成:将 mean/scale 预处理和反量化嵌入网络图
- 多核支持:PNNA2 平台支持 1-4 核配置
- 调试分析工具:张量导出(dump)、推理验证(inference)、性能测量(measure)、ONNX兼容性检查(check_opset)
安装
# 克隆仓库
git clone https://gitlink.org.cn/nudt_dsp/netrans.git ~/app/netrans
cd ~/app/netrans
# 创建 Python 3.10 环境
# 使用 mamba(推荐)
# 下载并安装 miniforge(包含 mamba)
wget https://mirrors.tuna.tsinghua.edu.cn/github-release/conda-forge/miniforge/LatestRelease/Miniforge3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh -b -p $HOME/app/miniforge3
echo "export MAMBA_ROOT_PREFIX=${HOME}/app/miniforge3" >> ${HOME}/.bashrc
echo "source " ${HOME}/app/miniforge3/etc/profile.d/mamba.sh"" >> ${HOME}/.bashrc
source "$HOME/app/miniforge3/etc/profile.d/mamba.sh"
# 创建并激活环境
mamba create -n netrans python=3.10 -y
mamba activate netrans
# 安装(首次全量,后续自动增量)
make install
source ~/.bashrc
日常更新
已安装用户在源码目录执行:
cd ~/app/netrans
make update
make update 会先拉取最新代码,再调用 setup.sh 做增量安装。增量安装根据本地 .install_state 判断哪些组件发生变化:
requirements.txt变化时重装 Python 依赖vendor/变化时重装 acuityscript/或setup.sh变化时重新配置环境变量- 其他普通代码更新只执行
pip install -e .
强制全量重装
当遇到安装异常或跨版本升级时,使用强制重装:
make reinstall # 删除本地安装快照,执行全量安装
版本发布时可通过 VERSION 中的 FORCE_REINSTALL_SINCE 设置强制重装门禁。用户当前安装版本低于该门禁时,即使依赖指纹未变化,setup.sh 也会自动执行全量安装。
5分钟上手
Python API
from netrans import Netrans
model = Netrans()
model.load('./yolov5s', mean=[0, 0, 0], scale=255)
model.quantize('asymu8')
model.export('asymu8', platform='pnna')
CLI
netrans load ./yolov5s --mean 0 0 0 --scale 255
netrans quantize ./yolov5s asymu8
netrans export ./yolov5s asymu8 --platform pnna
输出文件:wksp/yolov5s_asymu8_nbg_unify/network_binary.nb
文档
| 文档 | 内容 |
|---|---|
| cookbook.md | 实用指南、速查表、数据集格式、配置说明、场景示例、故障排查 |
| netrans_api.md | Python API 参考 |
| netrans_cli.md | 命令行工具参考 |
| release.md | 版本发布记录 |
| support/ | 现场问题、边界模型和交付验证记录 |
系统要求
- CPU: Intel® Core™ i5-6500 或同等性能
- RAM: 至少 8GB
- 硬盘: 160GB 剩余空间
- OS: Ubuntu 20.04 LTS 64-bit with Python 3.10
工程结构
netrans/
├── src/netrans # Python 源码
├── script/ # 命令行工具
├── docs/ # 文档
├── examples/ # 示例代码
├── tests/ # 单元测试
├── test/ # 集成测试
├── setup.py # Python 包配置
├── setup.sh # 安装脚本(增量安装,自动跳过未变更的组件)
└── README.md # 本文件
许可证
与 Netrans 主项目相同。