Spaces:
Runtime error
Runtime error
| ### ----- Instructions to compile the TVM CUDA kernel ----- | |
| # This assumes that docker and its gpu runtime are installed. Check the following for reference: | |
| # Docker: https://docs.docker.com/install/ | |
| # Docker gpu runtime: https://github.com/NVIDIA/nvidia-docker#ubuntu-16041804-debian-jessiestretchbuster | |
| # clone longformer | |
| git clone https://github.com/allenai/longformer.git | |
| cd longformer | |
| # clone tvm inside the `longformer` directory | |
| git clone --single-branch --branch v0.6.0 https://github.com/apache/incubator-tvm.git | |
| # build docker image | |
| docker build -t my_tvm_image -f tvm_docker incubator-tvm/docker/ | |
| # run docker container | |
| docker run -it --gpus all --mount type=bind,source="$(pwd)",target=/code my_tvm_image | |
| # inside the docker container, do the following ... | |
| cd code | |
| mv tvm tvm_runtime # avoid collision between our small tvm runtime and the full tvm library | |
| rm longformer/lib/* # remove old binaries | |
| python3 -c "from longformer.diagonaled_mm_tvm import *; DiagonaledMM._get_function('float32', 'cuda')" # compile new ones | |
| ls longformer/lib/ # check the `lib` dir for the new binaries | |
| mv tvm_runtime tvm # don't forget to put them back | |
| ### ----- Instructions to train TriviaQA ----- | |
| # Relevant files: | |
| # - scripts/triviaqa.py - our training code implemented in pytorch-lightning | |
| # - scripts/triviaqa_utils - copied from https://github.com/mandarjoshi90/triviaqa with slight modifications | |
| # Convert to a squad-like format. This is slighlty modified from the official scripts | |
| # here https://github.com/mandarjoshi90/triviaqa/blob/master/utils/convert_to_squad_format.py | |
| # to keep all answers in the document, not just the first answer. It also added the list of | |
| # textual answers to make evaluation easy. | |
| python -m scripts.triviaqa_utils.convert_to_squad_format \ | |
| --triviaqa_file path/to/qa/wikipedia-dev.json \ | |
| --wikipedia_dir path/to/evidence/wikipedia/ \ | |
| --web_dir path/to/evidence/web/ \ | |
| --max_num_tokens 4096 \ # only keep the first 4096 tokens | |
| --squad_file path/to/output/squad-wikipedia-dev-4096.json | |
| # Run training with the following hyperparameters. | |
| # Training base model takes 1 day on 4 gpus | |
| # Training large model takes less than 1 day on 8 gpus | |
| # The evaluation f1 reported during training are computed using the official | |
| # evaluation function in scripts/evaluation_utils.py | |
| python -m scripts.triviaqa \ | |
| --train_dataset squad-wikipedia-train-4096.json \ | |
| --dev_dataset squad-wikipedia-dev-4096.json \ | |
| --gpus 0,1,2,3,4,5,6,7 --batch_size 8 --num_workers 4 \ | |
| --lr 0.00003 --warmup 1000 --epochs 4 --max_seq_len 4096 --doc_stride -1 \ | |
| --save_prefix output_dir \ | |
| --model_path path/to/pretrained/longformer-base-4096 \ # or longformer-large-4096 | |
| --seed 4321 | |
| # To run our pretrained TriviaQA large model (replicates the leaderboard results), | |
| # first download the pytorch-lightning checkpoint: | |
| # https://ai2-s2-research.s3-us-west-2.amazonaws.com/longformer/triviaqa-longformer-large.tar.gz | |
| # then run: | |
| python -m scripts.triviaqa \ | |
| --train_dataset squad-wikipedia-train-4096.json \ # loaded but not used | |
| --dev_dataset squad-wikipedia-dev-4096.json \ | |
| --gpus 0 --num_workers 4 \ | |
| --max_seq_len 4096 --doc_stride -1 \ | |
| --save_prefix triviaqa-longformer-large \ # pretrained pytorch-lighting checkpoint | |
| --model_path path/to/pretrained/longformer-large-4096 \ # loaded but not used | |
| --test # predictions will be saved into `predictions.json` | |
| # then run the official evaluation scripts | |
| python -m scripts.triviaqa_utils.evaluation_utils \ | |
| --dataset_file path/to/qa/wikipedia-dev.json \ | |
| --prediction_file predictions.json | |
| # Output should be: | |
| {'exact_match': 73.07644188665083, 'f1': 77.78523804802242, 'common': 7993, 'denominator': 7993, 'pred_len': 7993, 'gold_len': 7993} | |
| # TPU | |
| import torch_xla.debug.metrics as met; print(met.metrics_report()) | |
| curl -X POST http://10.125.212.42:8475/requestversion/pytorch-dev20200722 | |
| /usr/share/torch-xla-nightly/pytorch/xla/scripts/debug_run.py --outfile debug.tar.gz -- python -u scripts/test_tpu.py | |
| /usr/share/torch-xla-nightly/pytorch/xla/scripts/debug_run.py --outfile debug.tar.gz -- python -u scripts/pretrain.py --input_dir data/ --save_prefix test_xla_2 --gpu_count 0 --tpu_core_count 1 --val_batches 4 --val_every 130 --num_workers 0 --log_rate 1 --model allenai/longformer-base-4096 | |
| python scripts/pretrain.py --input_dir data/ --save_prefix test_grad_accum --gpu_count 0 --tpu_core_count 8 --val_batches 30 --val_every 30 --num_workers 0 --log_rate 1 | |
| export TPU_IP_ADDRESS=10.125.212.42 | |
| export XRT_TPU_CONFIG="tpu_worker;0;$TPU_IP_ADDRESS:8470" | |
| source /anaconda3/bin/activate torch-xla-nightly | |
| # Resume training | |
| python scripts/summarization.py --num_workers 12 --save_prefix eval_long16k_nooverlap_large --model_path bart-large-long-16384/ --max_input_len 16368 --batch_size 2 --grad_accum 4 --grad_ckpt --attention_mode sliding_chunks_no_overlap --attention_window 340 --val_every 0.333333333 --debug --resume summarization/run_long16k_nooverlap_large/_ckpt_epoch_3_v1.ckpt --val_percent_check 1.0 --disable_checkpointing | |