第一部分:入门篇
1. TacoAI taNNTC 简介
1.1 概述
本手册旨在为开发者提供详尽的技术指导,帮助您将主流深度学习框架训练的模型高效转换、部署至 TOPSFuture EA65xx NPU 硬件平台。
TacoAI taNNTC 可负责将来自主流深度学习框架(如 TensorFlow、PyTorch、ONNX 等)的预训练模型,进行包括图优化、算子融合、量化(如 INT8、FP16)、编译和内存布局优化在内的一系列转换,最终生成可在 EA65xx NPU 上高效执行的二进制指令或模型格式。
1.2 典型部署流程
1. 模型导入与转换 (Import)
- 功能描述:此阶段旨在将源自主流深度学习框架(如 TensorFlow、ONNX 等)的模型,转换为 taNNTC 的标准中间表示 (Intermediate Representation, IR)。
- 执行命令:
pegasus import ... - 输出产物:操作完成后,生成以下两种文件,合称为中间表示 (IR):
- 网络结构文件 (
.json):描述模型的拓扑结构。 - 网络权重文件 (
.data):存储模型的参数权重。
- 网络结构文件 (
2. 模型预处理配置文件生成 (Generate)
- 功能描述:此阶段根据导入模型后生成的 IR 文件,自动或手动创建一个 YAML 配置文件。该文件详细定义了模型在推理前对输入数据(如图像)的预处理步骤(例如:Resize、Crop、Normalization 等)以及对模型输出的后处理步骤(例如:解码、排序等)。这确保了后续量化、验证和最终部署时数据处理逻辑的完全一致。
- 执行命令:
pegasus generate ... - 输出产物:
- 输入端预处理文件 (inputmeta.yml):定义输入数据的处理流程。
- 输出端后处理文件 (postprocess_file.yml):定义模型输出的解析流程。
3. 模型优化与量化 (Optimize & Quantize)
- 功能描述:此阶段是核心的性能优化步骤。它接收上一阶段生成的 IR 文件,执行模型优化并计算量化参数。该过程利用校准数据集分析张量的数据分布,从而生成最优的定点转换参数。
- 执行命令:
pegasus quantize ... - 输出产物:一个量化表 (
.quantize) 文件,记录了用于低精度转换的缩放因子 (scale) 和零点 (zero-point) 等关键信息。
4. (可选) PC 端推理验证 (Verification)
- 功能描述:此为一可选的验证与调试环节。在执行最终导出之前,可在开发主机(PC/服务器)上对量化后的模型进行推理,用于评估量化引入的精度影响,确保模型行为符合预期。
- 执行命令:
pegasus inference ...
5. 模型导出 (Export)
- 功能描述:此阶段为工具链的最终步骤,负责生成可部署的硬件模型。该过程将中间表示 (IR) 与量化表 (
.quantize) 相结合,经过 NPU 专用的图优化与代码生成,最终编译并打包成一个高度优化的可执行文件。 - 执行命令:
pegasus export ovxlib ... - 输出产物:一个二进制图文件 (
.nb),该文件是可直接在目标硬件上运行的最终部署单元。
6. 板端推理 (On-device Inference)
- 功能描述:此为最终的部署与执行环节,独立于 taNNTC 工具链。编译生成的
.nb文件被部署到搭载 EA65 系列 NPU 的目标硬件上。而设备端的 TaRuntime 负责加载该二进制图文件,并通过 NPU 驱动执行高性能的推理计算。
1.3 工具链特性
- 输入支持
- 框架模型:TensorFlow (2.3.x ~ 2.17.x)、TFLite、Caffe、ONNX (1.16.2)、PyTorch (2.3.0)、Keras、Darknet
- 数据集格式:Text / NumPy / SQLite
- 量化支持
- 数据类型:uint8、int8、int16、bfloat16、float16、float32
- 量化算法:KL 散度、滑动平均、自动混合精度等
- 输出支持
- 格式:二进制图文件
.nb
- 格式:二进制图文件
2. 系统要求与环境安装
2.1 系统要求
| 资源 | 要求 |
|---|---|
| CPU | Intel Core i5-6500 或以上(支持 AVX) |
| GPU(可选) | NVIDIA CUDA 架构显卡 |
| RAM | ≥ 8 GB |
| 磁盘 | ≥ 160 GB |
| OS | Ubuntu 18.04 / 20.04 / 22.04 64 位 |
| Python | 3.6 / 3.8 / 3.10 |
2.2 环境安装
taNNTC 工具链通过 Docker 容器提供,可简化环境配置。
- 拉取 Docker 镜像
docker pull harbor.topsfuture.com:9099/mes20/ta-nntc:latest
- 创建并进入 Docker 容器
# 创建并后台运行容器,并将当前目录映射到容器的 /home 目录
docker run -itd --name tool_chain -v $(pwd):/home harbor.topsfuture.com:9099/mes20/ta-nntc:latest
# 启动容器(如果已停止)
docker start tool_chain
# 进入容器的交互式终端
docker exec -it tool_chain /bin/bash