该存储库包含 ACL 2023 论文 ContraCLM:因果语言模型的对比学习的代码。
工作完成者:Nihal Jain*、Dejiao 张*、Wasi Uddin Ahmad*、Zijian Wang、Feng Nan、Xiaopeng Li、Ming Tan、Ramesh Nallapati、Baishakhi Ray、Parminder Bhatia、Xiaofei Ma、Bing Xing。 (*表示同等贡献)。
我们提出了 ContraCLM,一种新颖的对比学习框架,可在令牌级别和序列级别上运行。 ContraCLM 增强了对仅解码器语言模型的表示的区分,并弥合了与仅编码器模型的差距,使因果语言模型更适合语言生成之外的任务。我们鼓励您查看我们的论文以了解更多详细信息。
设置涉及在环境中安装必要的依赖项并将数据集放置在必要的目录中。
运行这些命令来创建新的 conda 环境并安装此存储库所需的包。
# create a new conda environment with python >= 3.8
conda create -n contraclm python=3.8.12
# install dependencies within the environment
conda activate contraclm
pip install -r requirements.txt
看这里。
在本节中,我们将展示如何使用此存储库对 (i) 自然语言 (NL) 数据上的GPT2
以及 (ii) 编程语言 (PL) 数据上的CodeGen-350M-Mono
进行预训练。
本节假设您将训练数据和验证数据分别存储在TRAIN_DIR
和VALID_DIR
中,并且位于安装了所有上述依赖项的环境中(请参阅设置)。
您可以通过运行以下命令来概述与预训练相关的所有标志:
python pl_trainer.py --help
GPT2
bash runscripts/run_wikitext.sh
CL_Config=$(eval echo ${options[1]})
来运行具有 MLE 损失的代码。CodeGen-350M-Mono
配置runscripts/run_code.sh
顶部的变量。有很多选项,但这里只解释了 dropout 选项(其他选项是不言自明的):
dropout_p
: torch.nn.Dropout
中使用的 dropout 概率值
dropout_layers
:如果 > 0,这将以dropout_p
的概率激活最后一个dropout_layers
functional_dropout
:如果指定,将在 CodeGen 模型输出的 token 表示之上使用功能 dropout 层
根据所需的模型配置设置变量CL
。确保TRAIN_DIR, VALID_DIR
的路径已根据需要设置。
运行命令: bash runscripts/run_code.sh
请参阅此处相关的特定于任务的目录。
如果您在研究中使用我们的代码,请将我们的工作引用为:
@inproceedings{jain-etal-2023-contraclm,
title = "{C}ontra{CLM}: Contrastive Learning For Causal Language Model",
author = "Jain, Nihal and
Zhang, Dejiao and
Ahmad, Wasi Uddin and
Wang, Zijian and
Nan, Feng and
Li, Xiaopeng and
Tan, Ming and
Nallapati, Ramesh and
Ray, Baishakhi and
Bhatia, Parminder and
Ma, Xiaofei and
Xiang, Bing",
booktitle = "Proceedings of the 61st Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)",
month = jul,
year = "2023",
address = "Toronto, Canada",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2023.acl-long.355",
pages = "6436--6459"
}
请参阅贡献以获取更多信息。
该项目根据 Apache-2.0 许可证获得许可。