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

注意:

  1. 此脚本运行环境为python3.
  2. 变量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 是不是在设置的阈值范围内。