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.bash (3401B)


      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 decoding_format='tree'
     16 export eval_steps=500
     17 export warmup_steps=0
     18 export constraint_decoding='--constraint_decoding'
     19 
     20 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:,wo_constraint_decoding -n 'parse-options' -- "$@")
     21 
     22 if [ $? != 0 ]; then
     23   echo "Failed parsing options." >&2
     24   exit 1
     25 fi
     26 
     27 eval set -- "$OPTS"
     28 
     29 while true; do
     30   case "$1" in
     31   -b | --batch)
     32     batch_size="$2"
     33     shift
     34     shift
     35     ;;
     36   -d | --device)
     37     CUDA_VISIBLE_DEVICES="$2"
     38     shift
     39     shift
     40     ;;
     41   -m | --model)
     42     model_name="$2"
     43     shift
     44     shift
     45     ;;
     46   -i | --data)
     47     data_name="$2"
     48     shift
     49     shift
     50     ;;
     51   -t | --task)
     52     task_name="$2"
     53     shift
     54     shift
     55     ;;
     56   -s | --seed)
     57     seed="$2"
     58     shift
     59     shift
     60     ;;
     61   -l | --lr)
     62     lr="$2"
     63     shift
     64     shift
     65     ;;
     66   -f | --format)
     67     decoding_format="$2"
     68     shift
     69     shift
     70     ;;
     71   --lr_scheduler)
     72     lr_scheduler="$2"
     73     shift
     74     shift
     75     ;;
     76   --label_smoothing)
     77     label_smoothing="$2"
     78     shift
     79     shift
     80     ;;
     81   --epoch)
     82     epoch="$2"
     83     shift
     84     shift
     85     ;;
     86   --eval_steps)
     87     eval_steps="$2"
     88     shift
     89     shift
     90     ;;
     91   --warmup_steps)
     92     warmup_steps="$2"
     93     shift
     94     shift
     95     ;;
     96   --wo_constraint_decoding)
     97     constraint_decoding=""
     98     shift
     99     ;;
    100   --)
    101     shift
    102     break
    103     ;;
    104   *)
    105     echo "$1" not recognize.
    106     exit
    107     ;;
    108   esac
    109 done
    110 
    111 # google/mt5-base -> google_mt5-base
    112 model_name_log=$(echo ${model_name} | sed -s "s/\//_/g")
    113 
    114 model_folder=models/CF_${EXP_ID}_${model_name_log}_${decoding_format}_${data_name}_${lr_scheduler}_lr${lr}_ls${label_smoothing}_${batch_size}_wu${warmup_steps}
    115 data_folder=data/text2${decoding_format}/${data_name}
    116 
    117 export TOKENIZERS_PARALLELISM=false
    118 
    119 output_dir=${model_folder}
    120 
    121 CUDA_VISIBLE_DEVICES=${CUDA_VISIBLE_DEVICES} python3.8 run_seq2seq.py \
    122     --do_train --do_eval --do_predict ${constraint_decoding} \
    123     --label_smoothing_sum=False \
    124     --use_fast_tokenizer=False \
    125     --evaluation_strategy steps \
    126     --predict_with_generate \
    127     --metric_for_best_model eval_role-F1 \
    128     --save_total_limit 1 \
    129     --load_best_model_at_end \
    130     --max_source_length=256 \
    131     --max_target_length=128 \
    132     --num_train_epochs=${epoch} \
    133     --task=${task_name} \
    134     --train_file=${data_folder}/train.json \
    135     --validation_file=${data_folder}/val.json \
    136     --test_file=${data_folder}/test.json \
    137     --event_schema=${data_folder}/event.schema \
    138     --per_device_train_batch_size=${batch_size} \
    139     --per_device_eval_batch_size=$((batch_size * 4)) \
    140     --output_dir=${output_dir} \
    141     --logging_dir=${output_dir}_log \
    142     --model_name_or_path=${model_name} \
    143     --learning_rate=${lr} \
    144     --lr_scheduler_type=${lr_scheduler} \
    145     --label_smoothing_factor=${label_smoothing} \
    146     --eval_steps ${eval_steps} \
    147     --decoding_format ${decoding_format} \
    148     --warmup_steps ${warmup_steps} \
    149     --source_prefix="${task_name}: " \
    150     --seed=${seed} --disable_tqdm True >${output_dir}.log 2>${output_dir}.log