#!/usr/bin/env bash
# word_language_model: Transformer LM on WikiText-2, 20 epochs, lr 5, on the GPU (--accel replaces --cuda).
set -o pipefail
cd "$(dirname "$0")/word_language_model"
SEED=1111
echo "KVERITAS_INPUT src=seed:$SEED"
echo "KVERITAS_PHASE name=train"
../../env/bin/python -u main.py --accel --epochs 20 --model Transformer --lr 5 --seed "$SEED" --save ../../data/model.pt 2>&1 | awk '
{ print; fflush() }
/^\| end of epoch/ {
  match($0, /epoch +[0-9]+/); split(substr($0,RSTART,RLENGTH), e, " ")
  match($0, /valid loss +[0-9.]+/); split(substr($0,RSTART,RLENGTH), l, " ")
  match($0, /valid ppl +[0-9.]+/); split(substr($0,RSTART,RLENGTH), p, " ")
  printf "KVERITAS_METRIC name=valid_loss value=%s step=%s\nKVERITAS_METRIC name=valid_ppl value=%s step=%s\n", l[3], e[2], p[3], e[2]; fflush()
}
/^\| End of training/ {
  print "KVERITAS_PHASE name=test"
  match($0, /test loss +[0-9.]+/); split(substr($0,RSTART,RLENGTH), l, " ")
  match($0, /test ppl +[0-9.]+/); split(substr($0,RSTART,RLENGTH), p, " ")
  printf "KVERITAS_CLAIM metric=test_loss value=%s\nKVERITAS_CLAIM metric=test_ppl value=%s\n", l[3], p[3]; fflush()
}'
