Browse Source

feat:添加测试脚本

zhaohaipeng 6 months ago
parent
commit
cb113743e9
2 changed files with 25 additions and 84 deletions
  1. 0 71
      ad/00_test.sh
  2. 25 13
      ad/01_ad_model_update.sh

+ 0 - 71
ad/00_test.sh

@@ -1,71 +0,0 @@
-#!/bin/sh
-set -x
-
-sh_path=$(cd $(dirname $0); pwd)
-
-source /root/anaconda3/bin/activate py37
-
-# 模型保存路径
-model_save_path=/dw/recommend/model/35_ad_model/model_xgb_351_1000_v2_1009_1015
-MODEL_OSS_PATH=oss://art-recommend.oss-cn-hangzhou.aliyuncs.com/zhangbo/
-model_name=model_xgb_351_1000_v2
-predict_analyse_file_path=/root/zhaohp/XGB/predict_analyse_file/20241014_351_1000_analyse.txt
-
-start_time=$(date +%s)
-
-# 保存模型评估的分析结果
-old_incr_rate_avg=0
-new_incr_rate_avg=0
-declare -A old_score_map
-declare -A new_score_map
-
-count=0
-max_line=10
-old_total_diff=0
-new_total_diff=0
-while read -r line && [ ${count} -lt ${max_line} ]; do
-
-    # 使用 ! 取反判断,只有当行中不包含 "cid" 时才执行继续的逻辑
-    if [[ "${line}" == *"cid"* ]]; then
-        continue
-    fi
-
-    read -a numbers <<< "${line}"
-
-    # 分数分别保存
-    old_score_map[${numbers[0]}]=${numbers[6]}
-    new_score_map[${numbers[0]}]=${numbers[7]}
-
-    old_total_diff=$( echo "${old_total_diff} + ${numbers[6]}" | bc -l )
-    new_total_diff=$( echo "${new_total_diff} + ${numbers[7]}" | bc -l )
-
-    count=$((${count} + 1))
-
-done < "${predict_analyse_file_path}"
-
-old_incr_rate_avg=$( echo "scale=6; ${old_total_diff} / ${count}" | bc -l )
-new_incr_rate_avg=$( echo "scale=6; ${new_total_diff} / ${count}" | bc -l )
-
-echo "老模型Top10差异平均值: ${old_incr_rate_avg}"
-echo "新模型Top10差异平均值: ${new_incr_rate_avg}"
-echo "新老模型分数对比: "
-for cid in "${!new_score_map[@]}"; do
-    echo "\t CID: $cid, 老模型分数: ${old_score_map[$cid]}, 新模型分数: ${new_score_map[$cid]}"
-done
-
-msg=" 广告模型文件更新完成"
-msg+="\n\t - 老模型Top10差异平均值: ${old_incr_rate_avg}"
-msg+="\n\t - 新模型Top10差异平均值: ${new_incr_rate_avg}"
-msg+="\n\t - 模型在HDFS中的路径: ${model_save_path}"
-msg+="\n\t - 模型上传路径: ${MODEL_OSS_PATH}/${model_name}.tar.gz"
-
-
-top10_msg="| CID  | 老模型    | 新模型    | \n| ---- | -------- | -------- | "
-for cid in "${!new_score_map[@]}"; do
-    top10_msg="${top10_msg} \n| ${cid} | ${old_score_map[$cid]} | ${new_score_map[$cid]} | "
-done
-
-
-/root/anaconda3/bin/python ${sh_path}/ad_monitor_util.py --level info --msg "${msg}" --start "${start_time}" --elapsed "10000" --top10 "${top10_msg}"
-
-

+ 25 - 13
ad/01_ad_model_update.sh

@@ -53,8 +53,8 @@ predict_analyse_file_path=""
 # 保存模型评估的分析结果
 old_incr_rate_avg=0
 new_incr_rate_avg=0
-old_incr_rate_list=""
-new_incr_rate_list=""
+declare -A old_score_map
+declare -A new_score_map
 
 # 校验命令的退出码
 check_run_status() {
@@ -75,6 +75,20 @@ check_run_status() {
     fi
 }
 
+send_success_upload_msg(){ 
+  local msg=" 广告模型文件更新完成"
+  msg+="\n\t - 老模型Top10差异平均值: ${old_incr_rate_avg}"
+  msg+="\n\t - 新模型Top10差异平均值: ${new_incr_rate_avg}"
+  msg+="\n\t - 模型在HDFS中的路径: ${model_save_path}"
+  msg+="\n\t - 模型上传OSS中的路径: ${MODEL_OSS_PATH}/${model_name}.tar.gz"
+  
+  local top10_msg="| CID  | 老模型    | 新模型    | \n| ---- | -------- | -------- | "
+  for cid in "${!new_score_map[@]}"; do
+    top10_msg="${top10_msg} \n| ${cid} | ${old_score_map[$cid]} | ${new_score_map[$cid]} | "
+  done
+  /root/anaconda3/bin/python ${sh_path}/ad_monitor_util.py --level info --msg "${msg}" --start "${start_time}" --elapsed "${elapsed}" --top10 "${top10_msg}"
+}
+
 init() {
   
   declare -a date_keys=()
@@ -209,13 +223,9 @@ calc_model_predict() {
 
       read -a numbers <<< "${line}"
 
-      if [[ -z ${old_incr_rate_list} ]];then
-          old_incr_rate_list="${numbers[6]}"
-          new_incr_rate_list="${numbers[7]}"
-      else
-          old_incr_rate_list="${old_incr_rate_list};${numbers[6]}"
-          new_incr_rate_list="${new_incr_rate_list};${numbers[7]}"
-      fi 
+      # 分数分别保存
+      old_score_map[${numbers[0]}]=${numbers[6]}
+      new_score_map[${numbers[0]}]=${numbers[7]}
 
       old_total_diff=$( echo "${old_total_diff} + ${numbers[6]}" | bc -l )
       new_total_diff=$( echo "${new_total_diff} + ${numbers[7]}" | bc -l )
@@ -235,9 +245,11 @@ calc_model_predict() {
   check_run_status $? $step_start_time "计算新模型Top10差异"
 
   echo "老模型Top10差异平均值: ${old_incr_rate_avg}"
-  echo "老模型Top10差异列表: ${old_incr_rate_list}"
   echo "新模型Top10差异平均值: ${new_incr_rate_avg}"
-  echo "新模型Top10差异列表: ${new_incr_rate_list}"
+  echo "新老模型分数对比: "
+  for cid in "${!new_score_map[@]}"; do
+    echo "\t\t CID: $cid, 老模型分数: ${old_score_map[$cid]}, 新模型分数: ${new_score_map[$cid]}"
+  done
 }
 
 model_predict() {
@@ -314,8 +326,8 @@ model_upload_oss() {
   local elapsed=$(($step_end_time - $start_time))
 
   echo -e "$LOG_PREFIX -- 模型更新完成 -- 模型更新成功: 耗时 $elapsed"
-  local msg="\n\t - 广告模型文件更新完成 \n\t - 前一天线上模型全天Top差异平均值: ${old_incr_rate_avg} \n\t - 前一天线上模型全天Top差异: ${old_incr_rate_list} \n\t - 前一天新模型全天Top10差异平均值: ${new_incr_rate_avg} \n\t - 前一天新模型全天Top差异: ${new_incr_rate_list} \n\t - 模型上传路径: ${MODEL_OSS_PATH}/${model_name}.tar.gz"
-  /root/anaconda3/bin/python ${sh_path}/ad_monitor_util.py --level info --msg "${msg}" --start "${start_time}" --elapsed "${elapsed}"
+
+  send_success_upload_msg
 }
 
 # 主方法