How to add model to CE - PaddlePaddle/continuous_evaluation GitHub Wiki
paddlepaddle代码库merge时,会触跑CE模型。 与前一次的评价指标(如精确度、时长等 )比较,超过阈值会邮件告警。
这样可以尽可能早地发现paddlepaddle框架中精度、性能相关的问题。
接入方法
运行环境
安装python3.4及以上版本, 以及xonsh
git clone https://github.com/PaddlePaddle/continuous_evaluation continuous_evaluation
cd continuous_evaluation
git clone https://github.com/PaddlePaddle/paddle-ce-latest-kpis tasks
目前tasks中已经有一些基础模型,你可以在此加入新的模型。
模型改造
1.增加接口脚本
在模型目录增加continuous_evaluation.py, 在里面设置支持的评价指标和其阈值
目前支持的评价指标有, 精确度:acc, 损失函数:cost,耗时:duration
注意:
- 此脚本运行环境为python3.
- 变量tracking_kpis为必需变量, 会被CE系统import和分析.
示例
import os
import sys
sys.path.append(os.environ['ceroot'])
from kpi import CostKpi, DurationKpi, AccKpi
##kpy定义在脚本:https://github.com/PaddlePaddle/continuous_evaluation/blob/develop/kpi.py
train_acc_kpi = AccKpi('train_acc', 0.05) #0.05 标示阈值
test_acc_kpi = AccKpi('test_acc', 0.05)
train_duration_kpi = DurationKpi('train_duration', 0.1)
tracking_kpis = [
train_acc_kpi,
test_acc_kpi,
train_duration_kpi,
2.模型的train.py 或model.py的修改
##其中评价指标对象从ce框架中import
from continuous_evaluation import (train_acc_kpi, test_acc_kpi,
train_duration_kpi, tracking_kpis)
##最终数据产生后,记录评价指标数据
train_acc_kpi.add_record(np.array(train_avg_acc, dtype='float32')) # train_avg_acc 是平均acc, accuracy = fluid.average.WeightedAverage().eval()
test_acc_kpi.add_record(np.array(test_avg_acc, dtype='float32'))
train_duration_kpi.add_record(pass_end - pass_start)
3.增加run.xsh 启动脚本
#!/usr/bin/env xonsh
import sys
model_file = 'model.py'
python @(model_file) --batch_size 128 --pass_num 5 --device CPU
CE准入验证
拉取最新的master分支代码,提交代码。 在ce tasks pr中会触发准入job, 准入job会跑3遍该模型。计算3次的diff 是不是在设置的阈值范围内。