# 飞桨训推一体全流程(TIPC)模型开发文档
## 1. TIPC简介
飞桨除了基本的模型训练和预测,还提供了支持多端多平台的高性能推理部署工具。飞桨训推一体全流程(Training and Inference Pipeline Criterion(TIPC))旨在建立模型从学术研究到产业落地的桥梁,方便模型更广泛的使用。
## 2. 论文复现流程与规范
### 2.1 复现流程
如果您对于论文复现过程已经非常熟悉,在复现过程中可以按照自己的复现方法进行复现。但是需要注意训练日志与文档内容符合规范。可以参考`2.2章节`。
如果您在论文复现方面经验较少或者复现过程中遇到问题,希望定位问题,强烈建议您按照论文复现指南进行操作。以CV任务为例,复现指南将论文复现分为12个步骤,如下所示。
更多内容请参考:[CV方向论文复现指南](../lwfx/ArticleReproduction_CV.md)。
### 2.2 规范验收点
#### 2.2.1 小数据集
repo中包含`lite_data`小数据集压缩包,解压之后可以获取`lite_data`小数据集文件夹。
需要准备好小数据集。方便快速验证。
#### 2.2.2 代码与精度
* 代码中包含训练(`train.py`)、评估(`eval.py`)、预测(`predict.py`)的脚本,分别作为模型训练、评估、预测的入口。
* 模型结构、数据预处理/后处理、优化器、预训练模型与参考代码保持一致。
#### 2.2.3 训练日志
* 输出目录中包含`train.log`文件,每个迭代过程中,至少包含`epoch`, `iter`, `loss`, `avg_reader_cost`, `avg_batch_cost`, `avg_ips`关键字段。含义如下所示。
* `epoch`: 当前训练所处的epoch数
* `iter`: 该epoch中,当前训练的具体迭代轮数
* `loss`: 过去若干个iter的loss值
* `avg_reader_cost`: 过去若干个iter的平均reader耗时 (单位: sec)
* `avg_batch_cost`: 过去若干个iter的平均训练耗时 (单位: sec)
* `avg_ips`: 过段若干个iter个训练速度(单位: images/sec)
#### 2.2.3 文档
* 说明文档中需要有数据准备以及模型训练、评估、预测的命令。
* 介绍预测命令(predict.py)时,需要提供示例图片,并根据示例图片,可视化出使用提供的预测命令运行得到的结果。
## 3. 模型推理开发规范
### 3.1 开发流程
基于Paddle Inference的预测过程分为下面4个步骤。
更多的介绍可以参考:[模型推理开发规范](./inference.md)。
### 3.2 规范验收点
#### 3.1.1 代码与预测结果
* 项目中需要包含`模型动转静`脚本(`export_model.py`)以及`模型基于预测引擎的`预测脚本(`infer.py`)。
#### 3.1.2 文档
* 说明文档中,需要包含`模型动转静`和`模型基于预测引擎`的说明。
## 4. TIPC测试开发规范
### 4.1 开发流程
TIPC测试开发流程与规范可以参考:[Linux GPU/CPU 基础训练推理测试开发规范](./train_infer_python.md)。
### 4.2 规范验收点
验收点包含`目录结构、配置文件、说明文档`,具体内容可以参考[Linux GPU/CPU 基础训练推理测试开发规范](./train_infer_python.md)的`3.3章节`。