项目文件夹

文件
wehub-resource-sync 2aaeece67c
Codestyle Check / Lint (push) Has been cancelled
Codestyle Check / Check bypass (push) Has been cancelled
Pipelines-Test / Pipelines-Test (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:37:14 +08:00

129 行
3.8 KiB
Bash

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
#!/usr/bin/env bash
set -xe
# Test training benchmark for a model.
# UsageCUDA_VISIBLE_DEVICES=0 bash run_benchmark.sh ${run_mode} ${bs_item} ${fp_item} ${max_iter} ${model_item}
function _set_params(){
run_mode=${1:-"sp"} # sp or mp
batch_size=${2:-"2"}
fp_item=${3:-"fp32"} # fp32 or fp16
max_iter=${4:-"100"}
model_item=${5:-"gpt2"}
mode_item=${6:-"static"}
need_profile=${7:-"off"}
mission_name="语义表示"
direction_id=1
run_log_path=${TRAIN_LOG_DIR:-$(pwd)}
device=${CUDA_VISIBLE_DEVICES//,/ }
arr=(${device})
num_gpu_devices=${#arr[*]}
base_batch_size=$(($batch_size*1024))
model_name=${model_item}_${mode_item}_bs${batch_size}_${fp_item}
log_file=${run_log_path}/${model_name}_${num_gpu_devices}_${run_mode}
log_folder=${run_log_path}/${model_item}_logdir
log_profile=${run_log_path}/${model_item}_model.profile
OUTPUT_PATH=${run_log_path}/output
log_with_profiler=$log_file
profiler_path=$log_profile
keyword="ips:"
keyword_loss="loss:"
skip_steps=20
model_mode=-1
ips_unit='tokens/s'
index="1"
gpu_num=$num_gpu_devices
}
function _train(){
echo "Train on ${num_gpu_devices} GPUs"
echo "current CUDA_VISIBLE_DEVICES=$CUDA_VISIBLE_DEVICES, gpus=$num_gpu_devices, batch_size=$batch_size"
if [ -d $OUTPUT_PATH ]; then
rm -rf $OUTPUT_PATH
fi
if [ $fp_item = "fp16" ]; then
use_fp16_cmd="--use_amp true"
if [ $mode_item = "dygraph" ] && [ $model_item = "gpt3" ]; then
use_fp16_cmd="--use_pure_fp16 true"
fi
fi
profiler_cmd=""
profiler_options="batch_range=[100,110];profile_path=${log_profile}"
if [ $need_profile = "on" ]; then
profiler_cmd="--profiler_options=${profiler_options}"
fi
script_cmd="run_pretrain_static.py"
if [ $mode_item = "dygraph" ]; then
script_cmd="run_pretrain.py"
fi
base_path="examples/language_model/gpt/"
if [ $model_item = 'gpt3' ]; then
base_path=examples/language_model/gpt-3/${mode_item}
fi
data_path=$(pwd)"/data"
train_cmd="${profiler_cmd}\
--micro_batch_size=${batch_size} \
--global_batch_size=$((${batch_size}*${num_gpu_devices})) \
--model_type="gpt"\
--model_name_or_path="gpt2-en"\
--input_dir=${data_path}\
--output_dir=${OUTPUT_PATH} \
--dp_degree=${num_gpu_devices}\
--max_seq_len 1024 \
--max_lr 0.00015 \
--min_lr 0.00001 \
--max_steps=${max_iter} \
--save_steps 100000 \
--decay_steps 320000 \
--weight_decay 0.01\
--warmup_rate 0.01 \
--grad_clip 1.0 \
--logging_freq 1\
--eval_freq 1000 \
--device "gpu" \
${use_fp16_cmd}"
case ${run_mode} in
sp)
train_cmd="python -m paddle.distributed.launch --log_dir=${log_folder} --gpus=$CUDA_VISIBLE_DEVICES \
${script_cmd} ${train_cmd}" ;;
mp)
train_cmd="python -m paddle.distributed.launch --log_dir=${log_folder} --gpus=$CUDA_VISIBLE_DEVICES \
${script_cmd} ${train_cmd}" ;;
*) echo "choose run_mode(sp or mp)"; exit 1;
esac
#timeout 1s
#eval` $train_cmd
cd ${base_path}
timeout 15m ${train_cmd} > ${log_file} 2>&1
if [ $? -ne 0 ];then
echo -e "${model_name}, FAIL"
export job_fail_flag=1
else
echo -e "${model_name}, SUCCESS"
export job_fail_flag=0
fi
cd -
#kill -9 `ps -ef|grep 'python'|awk '{print $2}'`
rm ${log_file}
cp ${log_folder}/workerlog.0 ${log_file}
rm -r ${log_folder}
}
source ${BENCHMARK_ROOT}/scripts/run_model.sh
_set_params $@
_run