Test environment:
    Ubuntu 20.04
    python 3.11.5
    PyTorch 2.0.1 + TensorBoard
    CUDA 11.8
    NVIDIA GeForce RTX 3090 x 8 (only for ViT)

1. Supervised classification
    1.1. git clone https://github.com/weiaicunzai/pytorch-cifar100
    1.2. cp -r optimizers/ pytorch-cifar100/ && cp -r modifications/pytorch-cifar100/* pytorch-cifar100/
    1.3. cd pytorch-cifar100/ && bash train_models.sh

2. Reinforcement learning
    2.1. wget https://mujoco.org/download/mujoco210-linux-x86_64.tar.gz
    2.2. tar -xzvf mujoco210-linux-x86_64.tar.gz
    2.3. export MUJOCO_PY_MUJOCO_PATH=${PWD}/mujoco210 && export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${PWD}/mujoco210/bin
    2.4. pip install "mujoco-py<2.2,>=2.1" "gym==0.17.2" "cython<3"
    2.5. sudo apt update && sudo apt install libosmesa6-dev libgl1-mesa-glx libglfw3 patchelf
    2.6. git clone https://github.com/pranz24/pytorch-soft-actor-critic
    2.7. cp -r optimizers/ pytorch-soft-actor-critic/ && cp -r modifications/pytorch-soft-actor-critic/* pytorch-soft-actor-critic/
    2.8. cd pytorch-soft-actor-critic/ && bash train_models.sh

3. Training ViT
    3.1. download ILSVRC2012 images from https://image-net.org/download-images.php
    3.2. git clone https://github.com/huggingface/pytorch-image-models
    3.3. pip install -r pytorch-image-models/requirements.txt
    3.4. cp -r optimizers/ pytorch-image-models/ && cp -r modifications/pytorch-image-models/* pytorch-image-models/
    3.5. cd pytorch-image-models/ && bash train_models.sh ${num_gpus} ${imagenet_path}

4. Fine-tuning
    4.1. downloads ADE20K from https://groups.csail.mit.edu/vision/datasets/ADE20K/
    4.2. sudo apt update && sudo apt install libgl1
    4.3. pip install -U openmim && mim install mmengine && mim install "mmcv>=2.0.0"
    4.4. git clone https://github.com/open-mmlab/mmsegmentation
    4.5. pip install -v -e mmsegmentation
    4.6. mkdir -p mmsegmentation/data/ade/ && ln -s ${ADE20K_path}/* mmsegmentation/data/ade/
    4.7. cp -r optimizers/ mmsegmentation/ && cp -r modifications/mmsegmentation/* mmsegmentation/
    4.8. cd mmsegmentation/ && bash train_models.sh

5. Self-supervised learning
    5.1. pip install pyyaml
    5.2. git clone https://github.com/sthalles/SimCLR
    5.3. cp -r optimizers/ SimCLR/ && cp -r modifications/SimCLR/* SimCLR/
    5.4. cd SimCLR/ && bash train_models.sh

6. Training ViT with weight decay
    6.1. cd pytorch-image-models/ && bash distributed_train.sh ${num_gpus} ${imagenet_path} -j 12 --model vit_tiny_patch16_224 --epochs 300 --batch-size 512 --sched cosine --warmup-epochs 5 --warmup-lr 0.2 --aa rand-m6-mstd0.5 --mixup 0.1 --cutmix 1.0 --crop-pct 0.9 --bce-loss --weight-decay 0.035 --lr 1.0 --opt psdasgd
