run_seq2seq_with_pretrain.bash (5288B)
1 #!/usr/bin/env bash 2 # -*- coding:utf-8 -*- 3 4 EXP_ID=$(date +%F-%H-%M-$RANDOM) 5 export CUDA_VISIBLE_DEVICES="0" 6 export batch_size="16" 7 export model_name=t5-base 8 export data_name=one_ie_ace2005_subtype 9 export lr=5e-5 10 export task_name="event" 11 export seed="421" 12 export lr_scheduler=constant_with_warmup 13 export label_smoothing="0" 14 export epoch=30 15 export pretrain=5 16 export decoding_format='tree' 17 export eval_steps=500 18 export warmup_steps=0 19 export constraint_decoding='--constraint_decoding' 20 21 OPTS=$(getopt -o b:d:m:i:t:s:l:f: --long batch:,device:,model:,data:,task:,seed:,lr:,lr_scheduler:,label_smoothing:,epoch:,format:,eval_steps:,warmup_steps:,pretrain:,wo_constraint_decoding -n 'parse-options' -- "$@") 22 23 if [ $? != 0 ]; then 24 echo "Failed parsing options." >&2 25 exit 1 26 fi 27 28 eval set -- "$OPTS" 29 30 while true; do 31 case "$1" in 32 -b | --batch) 33 batch_size="$2" 34 shift 35 shift 36 ;; 37 -d | --device) 38 CUDA_VISIBLE_DEVICES="$2" 39 shift 40 shift 41 ;; 42 -m | --model) 43 model_name="$2" 44 shift 45 shift 46 ;; 47 -i | --data) 48 data_name="$2" 49 shift 50 shift 51 ;; 52 -t | --task) 53 task_name="$2" 54 shift 55 shift 56 ;; 57 -s | --seed) 58 seed="$2" 59 shift 60 shift 61 ;; 62 -l | --lr) 63 lr="$2" 64 shift 65 shift 66 ;; 67 -f | --format) 68 decoding_format="$2" 69 shift 70 shift 71 ;; 72 --lr_scheduler) 73 lr_scheduler="$2" 74 shift 75 shift 76 ;; 77 --label_smoothing) 78 label_smoothing="$2" 79 shift 80 shift 81 ;; 82 --epoch) 83 epoch="$2" 84 shift 85 shift 86 ;; 87 --eval_steps) 88 eval_steps="$2" 89 shift 90 shift 91 ;; 92 --warmup_steps) 93 warmup_steps="$2" 94 shift 95 shift 96 ;; 97 --pretrain) 98 pretrain="$2" 99 shift 100 shift 101 ;; 102 --wo_constraint_decoding) 103 constraint_decoding="" 104 shift 105 ;; 106 --) 107 shift 108 break 109 ;; 110 *) 111 echo "$1" not recognize. 112 exit 113 ;; 114 esac 115 done 116 117 # google/mt5-base -> google_mt5-base 118 model_name_log=$(echo ${model_name} | sed -s "s/\//_/g") 119 120 model_folder=models/curriculum_${EXP_ID}_${model_name_log}_${decoding_format}_${data_name}_${lr_scheduler}_lr${lr}_ls${label_smoothing}_${batch_size}_wu${warmup_steps} 121 data_folder=data/text2${decoding_format}/${data_name} 122 123 output_dir=${model_folder} 124 mkdir -p ${output_dir} 125 126 CUDA_VISIBLE_DEVICES=${CUDA_VISIBLE_DEVICES} python run_seq2seq.py \ 127 --do_train --do_eval --do_predict ${constraint_decoding} \ 128 --label_smoothing_sum=False \ 129 --use_fast_tokenizer=False \ 130 --evaluation_strategy steps \ 131 --predict_with_generate \ 132 --metric_for_best_model eval_trigger-F1 \ 133 --save_total_limit 1 \ 134 --load_best_model_at_end \ 135 --max_source_length=256 \ 136 --max_target_length=128 \ 137 --num_train_epochs=${pretrain} \ 138 --task=${task_name} \ 139 --train_file=${data_folder}_span/train.json \ 140 --validation_file=${data_folder}_span/val.json \ 141 --test_file=${data_folder}_span/test.json \ 142 --event_schema=${data_folder}_span/event.schema \ 143 --per_device_train_batch_size=${batch_size} \ 144 --per_device_eval_batch_size=$((batch_size * 4)) \ 145 --output_dir=${output_dir}/span_pretrain \ 146 --logging_dir=${output_dir}/span_pretrain_log \ 147 --model_name_or_path=${model_name} \ 148 --learning_rate=${lr} \ 149 --lr_scheduler_type=${lr_scheduler} \ 150 --label_smoothing_factor=${label_smoothing} \ 151 --eval_steps ${eval_steps} \ 152 --decoding_format treespan \ 153 --warmup_steps ${warmup_steps} \ 154 --source_prefix="span: " \ 155 --seed=${seed} --disable_tqdm True >${output_dir}/span_pretrain.log 2>${output_dir}/span_pretrain.log 156 157 mkdir ${output_dir}/span_pretrained 158 cp ${output_dir}/span_pretrain/config.json ${output_dir}/span_pretrained 159 cp ${output_dir}/span_pretrain/pytorch_model.bin ${output_dir}/span_pretrained 160 cp ${output_dir}/span_pretrain/special_tokens_map.json ${output_dir}/span_pretrained 161 cp ${output_dir}/span_pretrain/spiece.model ${output_dir}/span_pretrained 162 cp ${output_dir}/span_pretrain/tokenizer_config.json ${output_dir}/span_pretrained 163 164 CUDA_VISIBLE_DEVICES=${CUDA_VISIBLE_DEVICES} python run_seq2seq.py \ 165 --do_train --do_eval --do_predict ${constraint_decoding} \ 166 --label_smoothing_sum=False \ 167 --use_fast_tokenizer=False \ 168 --evaluation_strategy steps \ 169 --predict_with_generate \ 170 --metric_for_best_model eval_role-F1 \ 171 --save_total_limit 1 \ 172 --load_best_model_at_end \ 173 --max_source_length=256 \ 174 --max_target_length=128 \ 175 --num_train_epochs=${epoch} \ 176 --task=${task_name} \ 177 --train_file=${data_folder}/train.json \ 178 --validation_file=${data_folder}/val.json \ 179 --test_file=${data_folder}/test.json \ 180 --event_schema=${data_folder}/event.schema \ 181 --per_device_train_batch_size=${batch_size} \ 182 --per_device_eval_batch_size=$((batch_size * 4)) \ 183 --output_dir=${output_dir}/event_finetune \ 184 --logging_dir=${output_dir}/event_finetune_log \ 185 --model_name_or_path=${output_dir}/span_pretrained \ 186 --learning_rate=${lr} \ 187 --lr_scheduler_type=${lr_scheduler} \ 188 --label_smoothing_factor=${label_smoothing} \ 189 --eval_steps ${eval_steps} \ 190 --decoding_format ${decoding_format} \ 191 --warmup_steps ${warmup_steps} \ 192 --source_prefix="${task_name}: " \ 193 --seed=${seed} --disable_tqdm True >${output_dir}/event_finetune.log 2>${output_dir}/event_finetune.log 194