170 lines
6.3 KiB
Bash
170 lines
6.3 KiB
Bash
#!/usr/bin/env bash
|
|
# Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
source /workspace/Paddle/tools/auto_parallel/target_path_lists.sh
|
|
|
|
export paddle=$1
|
|
export paddle_dir=/workspace/Paddle
|
|
mkdir -p /workspace/case_logs
|
|
export log_path=/workspace/case_logs
|
|
export case_list=()
|
|
|
|
install_paddle(){
|
|
echo -e "\033[31m ---- Install paddlepaddle-gpu \033"
|
|
if [ -n "$paddle" ];then
|
|
python -m pip install --user ${paddle} --no-dependencies;
|
|
fi
|
|
python -c "import paddle; print('paddle version:',paddle.__version__,'\npaddle commit:',paddle.version.commit)";
|
|
}
|
|
|
|
get_diff_TO_case(){
|
|
cd ${paddle_dir}
|
|
# get the location of "test/auto_parallel" in target_lists_for_semi_auto_ci
|
|
count=0
|
|
for element in "${target_lists_for_semi_auto_ci[@]}";do
|
|
if [[ "$element" == "test/auto_parallel" ]]; then
|
|
test_auto_num=$count
|
|
break
|
|
fi
|
|
count=$((count+1))
|
|
done
|
|
# get the location of "test/collective/hybrid_strategy" in target_lists_for_dygraph_ci
|
|
count=0
|
|
for element in "${target_lists_for_dygraph_ci[@]}";do
|
|
if [[ "$element" == "test/collective/hybrid_strategy" ]]; then
|
|
test_dygraph_num=$count
|
|
break
|
|
fi
|
|
count=$((count+1))
|
|
done
|
|
for file_name in `git diff --numstat upstream/${AGILE_COMPILE_BRANCH} |awk '{print $NF}'`;do
|
|
arr_file_name=(${file_name//// })
|
|
dir1=${arr_file_name[0]}
|
|
dir2=${arr_file_name[1]}
|
|
dir3=${arr_file_name[2]}
|
|
dir4=${arr_file_name[3]}
|
|
dir5=${arr_file_name[4]}
|
|
dir6=${arr_file_name[5]}
|
|
file_item=$dir1/$dir2/$dir3/$dir4/$dir5/$dir6
|
|
echo "file_name:"${file_name}, "path:"${file_item}
|
|
if [ ! -f ${file_name} ];then # deleting files for PR
|
|
continue
|
|
elif [[ ${file_name##*.} == "md" ]] || [[ ${file_name##*.} == "rst" ]] || [[ ${dir1} == "docs" ]];then
|
|
continue
|
|
else
|
|
# The most auto unittests have been monitored in PR-CI-Distribute-stable,
|
|
# while the other tests of llama model will be executed in PR-CI-Auto-Parallel.
|
|
for ((i=0; i<${#target_lists_for_semi_auto_ci[@]}; i++)); do
|
|
if [[ ${file_item} == *${target_lists_for_semi_auto_ci[i]}* ]];then
|
|
case_list[${#case_list[*]}]="auto_unit_test"
|
|
break
|
|
else
|
|
continue
|
|
fi
|
|
done
|
|
# The dynamic unittests have been monitored in PR-CI-Distribute-stable
|
|
# and will be no longer redundantly executed in PR-CI-Auto-Parallel.
|
|
for ((i=0; i<${#target_lists_for_dygraph_ci[@]}; i++)); do
|
|
if [[ ${file_item} == *${target_lists_for_dygraph_ci[i]}* ]];then
|
|
case_list[${#case_list[*]}]="dygraph_unit_test"
|
|
break
|
|
else
|
|
continue
|
|
fi
|
|
done
|
|
fi
|
|
done
|
|
}
|
|
|
|
print_info(){
|
|
#解决异常退出-6的问题,CI中的偶现问题,无法发现
|
|
if [[ $1 -ne 0 ]] && [[ $1 -ne 250 ]];then
|
|
EXCODE=2
|
|
if [ ! -f ${log_path}/$2 ];then
|
|
echo -e "\033[31m run $2 CI FAIL \033"
|
|
else
|
|
mv ${log_path}/$2 ${log_path}/$2_FAIL.log
|
|
echo -e "\033[31m ${log_path}/$2_FAIL \033"
|
|
tail -70 ${log_path}/$2_FAIL.log
|
|
fi
|
|
exit $EXCODE
|
|
else
|
|
echo -e "\033[32m run $3 CI SUCCESS \033"
|
|
fi
|
|
}
|
|
|
|
# Get the list of pending cases
|
|
get_diff_TO_case
|
|
# Remove duplicates and store the results back to the original list
|
|
|
|
####################
|
|
case_list=($(awk -v RS=' ' '!a[$1]++' <<< ${case_list[*]}))
|
|
if [[ ${#case_list[*]} -ne 0 ]];then
|
|
echo -e "\033[31m =======CI Check case========= \033"
|
|
echo -e "\033[31m ---- case_list length: ${#case_list[*]}, cases: ${case_list[*]} \033"
|
|
echo -e "\033[31m ============================= \033"
|
|
set +e
|
|
|
|
# Install paddle
|
|
install_paddle
|
|
case_num=1
|
|
export FLAGS_install_deps=0
|
|
for case in ${case_list[*]};do
|
|
echo -e "\033[31m ---- running case $case_num/${#case_list[*]}: ${case} \033"
|
|
if [[ ${case} == "llama_auto" ]];then
|
|
bash /workspace/PaddleNLP/scripts/distribute/ci_case_auto.sh llama_case_list_auto $FLAGS_install_deps $FLAGS_download_data
|
|
print_info $? `ls -lt ${log_path} | grep "llama" | head -n 1 | awk '{print $9}'` ${case}
|
|
export FLAGS_install_deps=1
|
|
export FLAGS_download_data="llama ""$FLAGS_download_data"
|
|
let case_num++
|
|
elif [[ ${case} == "auto_unit_test" ]];then
|
|
bash /workspace/Paddle/tools/auto_parallel/ci_case_unit.sh auto_unit_test
|
|
print_info $? `ls -lt ${log_path} | grep "test" | head -n 1 | awk '{print $9}'` ${case}
|
|
let case_num++
|
|
elif [[ ${case} == "gpt-3_dygraph" ]];then
|
|
bash /workspace/PaddleNLP/scripts/distribute/ci_case_dy.sh llm_gpt_case_list_dygraph $FLAGS_install_deps $FLAGS_download_data
|
|
print_info $? `ls -lt ${log_path} | grep "llm_gpt" | head -n 1 | awk '{print $9}'` ${case}
|
|
let case_num++
|
|
elif [[ ${case} == "dygraph_unit_test" ]];then
|
|
bash /workspace/Paddle/tools/auto_parallel/ci_case_unit.sh dygraph_unit_test
|
|
print_info $? `ls -lt ${log_path} | grep "test" | head -n 1 | awk '{print $9}'` ${case}
|
|
let case_num++
|
|
elif [[ ${case} == "llama_auto_unit_test" ]];then
|
|
bash /workspace/Paddle/tools/auto_parallel/ci_case_unit.sh llama_auto_unit_test
|
|
print_info $? `ls -lt ${log_path} | grep "test" | head -n 1 | awk '{print $9}'` ${case}
|
|
let case_num++
|
|
else
|
|
echo -e "\033[31m ---- no ${case} \033"
|
|
let case_num++
|
|
fi
|
|
done
|
|
echo -e "\033[31m ---- end run case \033"
|
|
cd ${log_path}
|
|
if [ ! -f *FAIL* ];then
|
|
FF=0
|
|
EXCODE=0
|
|
echo -e "\033[32m ---- all case Success \033"
|
|
else
|
|
FF=`ls *FAIL*|wc -l`
|
|
EXCODE=2
|
|
echo -e "\033[31m ---- case Failed number: ${FF} \033"
|
|
ls *_FAIL*
|
|
fi
|
|
else
|
|
echo -e "\033[32m Changed Not CI case, Skips \033"
|
|
EXCODE=0
|
|
fi
|
|
exit $EXCODE
|