このリポジトリには、ACL 2023 論文「ContraCLM: 因果言語モデルの対照学習」のコードが含まれています。
担当者: Nihal Jain*、Dejiao Zhang*、Wasi Uddin Ahmad*、Zijian Wang、Feng Nan、Xiaopeng Li、Ming Tan、Ramesh Nallapati、Baishakhi Ray、Parminder Bhatia、Xiaofei Ma、Bing Xiang。 (* は均等な貢献を示します)。
トークンレベルとシーケンスレベルの両方で動作する新しい対照学習フレームワークである 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_p
: torch.nn.Dropout
で使用されるドロップアウト確率値
dropout_layers
: > 0 の場合、 dropout_p
確率で最後のdropout_layers
がアクティブになります。
functional_dropout
: 指定した場合、CodeGen モデルから出力されたトークン表現の上に関数ドロップアウト層を使用します。
希望のモデル構成に応じて変数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 ライセンスに基づいてライセンスされています。