T-Few
这个代码库包含了论文《少样本参数高效微调优于上下文学习且成本更低》的官方代码。
该方法在性能上优于GPT-3的上下文学习,并在"RAFT"上达到了最先进的水平。
环境设置
首先,为项目创建一个虚拟环境并安装所有必需的依赖。 (我们使用conda管理环境。请确保先安装并初始化conda。)
- 使用Python 3.7创建虚拟环境:
conda create -n tfew python==3.7
,然后激活环境:conda activate tfew
。 - 安装其他依赖:
pip install -r requirements.txt -f https://download.pytorch.org/whl/cu113/torch_stable.html
- 如果您计划运行SAID,请通过
python src/intrinsic_said_setup.py develop
安装依赖。否则,跳过此步骤。
以上步骤只需执行一次。此外,每次开始新会话时,您都需要运行. bin/start.sh
运行您的第一个实验
完成环境设置后,您可以尝试运行
CUDA_VISIBLE_DEVICES=3 python -m src.pl_train -c t0.json+rte.json -k save_model=False exp_name=first_exp
此次运行的输出将保存在${OUTPUT_PATH}/first_exp/
,通常是/t-few/exp_out/first_exp/
。这里,first_exp
是实验名称,您可以使用不同的实验名称运行更多实验。代码会自动跳过已完成的实验。(但是,如果您希望以相同的实验名称重新运行已完成的实验,您需要手动删除输出目录中相应的文件。)
有两种方法可以控制实验。
- 您可以使用
-c
指定配置文件。多个配置文件可以用+
组合。(当出现冲突时,右侧配置文件中的配置项优先级更高。)当您有多个形成固定组合的配置项时,这种方法会很方便。 - 您可以使用
-k
覆盖值。当您需要更改少量配置项时,这种方法会很方便。
建议使用40GB显存的GPU来训练T0(3B),使用80GB显存的GPU来训练T0。
运行一系列实验
在这个项目中,我们经常需要运行大量实验。
这里有一个名为bin/few-shot-pretrained-3b-100k.sh
的bash脚本示例,用于在所有数据集上微调3B预训练的(IA)3模型。
这应该需要几个小时。之后,您可以使用scripts/get_results_table.py
生成CSV格式的摘要。
引用
如果您觉得这个代码库有帮助,欢迎引用我们的工作:
@article{liu2020tfew,
title={Few-Shot Parameter-Efficient Fine-Tuning is Better and Cheaper than In-Context Learning},
author={Liu, Haokun and Tam, Derek and Muqeeth, Mohammed and Mohta, Jay and Huang, Tenghao and Bansal, Mohit and Raffel, Colin},
journal={arXiv preprint arXiv:2205.05638},
year={2022}
}
我们在工作中使用了以下代码:
@article{mahabadi2021compacter,
title={Compacter: Efficient low-rank hypercomplex adapter layers},
author={Mahabadi, Rabeeh Karimi and Henderson, James and Ruder, Sebastian},
journal={arXiv preprint arXiv:2106.04647},
year={2021}
}
@article{sung2021training,
title={Training Neural Networks with Fixed Sparse Masks},
author={Sung, Yi-Lin and Nair, Varun and Raffel, Colin},
journal={arXiv preprint arXiv:2111.09839},
year={2021}
}
@article{aghajanyan2020intrinsic,
title={Intrinsic dimensionality explains the effectiveness of language model fine-tuning},
author={Aghajanyan, Armen and Zettlemoyer, Luke and Gupta, Sonal},
journal={arXiv preprint arXiv:2012.13255},
year={2020}
}