|
@@ -187,6 +187,24 @@ else
|
|
|
exit 1
|
|
|
fi
|
|
|
|
|
|
+# 5.6 使用前一天线上模型和前一天的新模型对前一天的数据进行预测并计算AUC
|
|
|
+yesterday_online_model=${LAST_MODEL_HOME}/model_online.txt
|
|
|
+
|
|
|
+# 5.6.1 判断model_online文件的生成时间,如果是昨天生成的则表示模型有更新
|
|
|
+# ${MODEL_PATH}/${model_name}_${today_early_1}.txt 和 ${LAST_MODEL_HOME}/model_online_$(date +\%Y\%m\%d).txt
|
|
|
+file_creation_date=$(stat -c %W "$yesterday_online_model")
|
|
|
+file_creation_date_format=$(date -d "@$file_creation_date" +%Y%m%d)
|
|
|
+if [ "$file_creation_date_format" == "$today_early_1" ]; then
|
|
|
+ yesterday_online_model=${LAST_MODEL_HOME}/model_online_${today_early_1}.txt
|
|
|
+fi
|
|
|
+
|
|
|
+# 5.6.2 使用昨天的线上模型,进行预测
|
|
|
+$HADOOP fs -text ${bucketFeatureSavePath}/${today_early_1}/* | ${FM_HOME}/bin/fm_predict -m "$yesterday_online_model" -dim 8 -core 8 -out ${PREDICT_PATH}/${model_name}_${today_early_1}_online_all.txt
|
|
|
+yesterday_online_auc=`cat ${PREDICT_PATH}/${model_name}_${today_early_1}_online_all.txt | /root/sunmingze/AUC/AUC`
|
|
|
+
|
|
|
+# 5.6.3 使用昨天的新模型,进行预测
|
|
|
+$HADOOP fs -text ${bucketFeatureSavePath}/${today_early_1}/* | ${FM_HOME}/bin/fm_predict -m ${MODEL_PATH}/${model_name}_${today_early_2}.txt -dim 8 -core 8 -out ${PREDICT_PATH}/${model_name}_${today_early_1}_new_all.txt
|
|
|
+yeaterday_new_auc=`cat ${PREDICT_PATH}/${model_name}_${today_early_1}_new_all.txt | /root/sunmingze/AUC/AUC`
|
|
|
|
|
|
|
|
|
# 6 模型格式转换
|
|
@@ -247,7 +265,9 @@ echo -e "$LOG_PREFIX -- 模型文件推送至OSS -- 广告模型文件至OSS成
|
|
|
|
|
|
# 8 本地保存最新的线上使用的模型,用于下一次的AUC验证
|
|
|
step_start_time=$(date "+%Y-%m-%d %H:%M:%S")
|
|
|
-cp -f ${LAST_MODEL_HOME}/model_online.txt ${LAST_MODEL_HOME}/model_online_$(date +\%Y\%m\%d).txt
|
|
|
+# 将之前的线上模型进行备份,表示从上一个备份时间到当前时间内,使用的线上模型都是此文件
|
|
|
+# 假设当前是07-11,上一次备份时间为07-07。备份之后表示从07-07下午至07-11上午线上使用的模型文件都是model_online_20240711.txt
|
|
|
+cp -f ${LAST_MODEL_HOME}/model_online.txt ${LAST_MODEL_HOME}/model_online_${today}.txt
|
|
|
cp -f ${MODEL_PATH}/${model_name}_${today_early_1}.txt ${LAST_MODEL_HOME}/model_online.txt
|
|
|
|
|
|
step_end_time=$(date "+%Y-%m-%d %H:%M:%S")
|
|
@@ -264,11 +284,10 @@ echo -e "$LOG_PREFIX -- 模型备份 -- 模型备份完成: 耗时 $step_elapsed
|
|
|
|
|
|
# 9 任务完成通知
|
|
|
step_end_time=$(date "+%Y-%m-%d %H:%M:%S")
|
|
|
-msg="\n\t - 广告模型文件更新完成 \n\t - 新模型AUC: $new_auc \n\t - 线上模型AUC: $online_auc \n\t - AUC差值: $auc_diff_abs \n\t - 模型上传路径: $online_model_path"
|
|
|
+msg="\n\t - 广告模型文件更新完成 \n\t - 前一天线上模型全天数据AUC: $yesterday_online_auc} \n\t - 前一天新模型全天数据AUC: $yeaterday_new_auc \n\t - 新模型AUC: $new_auc \n\t - 线上模型AUC: $online_auc \n\t - AUC差值: $auc_diff_abs \n\t - 模型上传路径: $online_model_path"
|
|
|
echo -e "$LOG_PREFIX -- 模型更新完成 -- $msg: 耗时 $step_elapsed"
|
|
|
elapsed=$(($(date +%s -d "$step_end_time") - $(date +%s -d "$start_time")))
|
|
|
/root/anaconda3/bin/python ad/ad_monitor_util.py --level info --msg "$msg" --start "$start_time" --elapsed "$elapsed"
|
|
|
|
|
|
|
|
|
-
|
|
|
# 15 15 * * * cd /root/zhaohp/recommend-emr-dataprocess && /bin/sh ./ad/01_ad_model_update_everyday.sh > logs/01_update_eventday_$(date +\%Y-\%m-\%d_\%H-\%M).log 2>&1
|