UCDP-AEC

Models and data for the UCDP Abstractive Event analysis Corpus paper
git clone https://esimon.eu/repos/UCDP-AEC.git
Log | Files | Refs | README | LICENSE

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