Neural Prompt Search
TL;DR
The idea is simple: we view existing parameter-efficient tuning modules, including Adapter, LoRA and VPT, as prompt modules and propose to search the optimal configuration via neural architecture search. Our approach is named NOAH (Neural prOmpt seArcH).
Updatas
[05/2022] arXiv paper has been released.
Environment Setup
conda create -n NOAH python=3.8
conda activate NOAH
pip install -r requirements.txt
Data Preparation
1. Visual Task Adaptation Benchmark (VTAB)
cd data/vtab-source
python get_vtab1k.py
2. Few-Shot and Domain Generation
-
Images
Please refer to DATASETS.md to download the datasets.
-
Train/Val/Test splits
Please refer to files under
data/XXX/XXX/annotations
for the detail information.
Quick Start For NOAH
We use the VTAB experiments as examples.
1. Downloading the Pre-trained Model
Model | Link |
---|---|
ViT B/16 | link |
2. Supernet Training
sh configs/NOAH/VTAB/supernet/slurm_train_vtab.sh PATH-TO-YOUR-PRETRAINED-MODEL
3. Subnet Search
sh configs/NOAH/VTAB/search/slurm_search_vtab.sh PARAMETERS-LIMITES
4. Subnet Retraining
sh configs/NOAH/VTAB/subnet/slurm_retrain_vtab.sh PATH-TO-YOUR-PRETRAINED-MODEL
We add the optimal subnet architecture of each dataset in the experiments/NOAH/subnet/VTAB
.
5. Performance
Citation
If you use this code in your research, please kindly cite this work.
@inproceedings{zhang2022NOAH,
title={Neural Prompt Search},
author={Yuanhan Zhang and Kaiyang Zhou and Ziwei Liu},
year={2022},
archivePrefix={arXiv},
}
Acknoledgments
Part of the code is borrowed from CoOp, AutoFormer, timm and mmcv.
Thanks to Chong Zhou (https://chongzhou96.github.io/) for the code of downloading the VTAB-1k.