## MAE in LiBai **Masked Autoencoders Are Scalable Vision Learners** Kaiming He, Xinlei Chen, Saining Xie, Yanghao Li, Piotr Dollár, Ross Girshick [[`arXiv`](https://arxiv.org/abs/2111.06377)] [[`BibTeX`](#Citation)]

This is the OneFlow re-implementation of MAE based on [LiBai](https://libai.readthedocs.io/). ## Catelog - [x] MAE pretraining code - [x] MAE finetune code ## Supported parallel mode and task Based on [libai.layers](https://libai.readthedocs.io/en/latest/modules/libai.layers.html), MAE model is automatically configured with the following parallelism mode.
Model Data Parallel Tensor Parallel Pipeline Parallel
MAE pretrain - -
MAE finetune
## Usage ### Installation Please see [LiBai Installation](https://libai.readthedocs.io/en/latest/tutorials/get_started/Installation.html) to install LiBai ### Prepare the Data Please see [Prepare the Data](https://libai.readthedocs.io/en/latest/tutorials/get_started/quick_run.html#prepare-the-data). ### Pretraining Pretraining MAE on 8 GPUs using data parallelism. ```bash cd /path/to/libai bash tools/train.sh projects/MAE/train_net.py projects/MAE/configs/mae_pretraining.py 8 ``` ### Finetuning 1. Setup the weights for finetuning in [mae_finetune.py](./configs/mae_finetune.py) as follows: ```python # mae_funetune.py finetune.enable = True # only load weight if enable is True finetune.weight_style = "oneflow" # Set "oneflow" for loading oneflow checkpoints finetune.path = "/path/to/checkpoint" # the checkpoint directory ``` If you feel confused about the checkpoint format here, please refer to [Load and Save a Checkpoint in LiBai](https://libai.readthedocs.io/en/latest/tutorials/basics/Load_and_Save_Checkpoint.html) for more details. 1. Finetune MAE on 8 GPUs using data parallelism. ```bash cd /path/to/libai bash tools/train.sh projects/MAE/train_net.py projects/MAE/configs/mae_finetune.py 8 ``` **Notes:** if you want to finetune MAE models using different parallel strategies, please refer to the [Distributed Configuration Tutorial](https://libai.readthedocs.io/en/latest/tutorials/basics/Distributed_Configuration.html) ### Evaluation Evaluate MAE model under LiBai on 8 GPUs: ```bash cd /path/to/libai bash tools/train.sh projects/MAE/train_net.py projects/MAE/configs/mae_finetune.py 8 --eval-only ``` ## Advanced Usage ### Finetune MAE with pytorch pretrained checkpoint You can download pytorch pretrained weight from [MAE official repo](https://github.com/facebookresearch/mae#fine-tuning-with-pre-trained-checkpoints) and finetune them in LiBai by updating the [mae_finetune.py](./configs/mae_finetune.py) as follows: ```python finetune.enable = True # only load weight if enable is True finetune.weight_style = "pytorch" # Set "pytorch" for loading torch checkpoints finetune.path = "/path/to/mae_finetuned_vit_base.pth" ``` Run finetuning on 8 GPUs: ```bash cd /path/to/libai bash tools/train.sh projects/MAE/train_net.py projects/MAE/configs/mae_finetune.py 8 ``` ## Citation ```BibTeX @article{he2021masked, title={Masked autoencoders are scalable vision learners}, author={He, Kaiming and Chen, Xinlei and Xie, Saining and Li, Yanghao and Doll{\'a}r, Piotr and Girshick, Ross}, journal={arXiv preprint arXiv:2111.06377}, year={2021} } ```