これは、commitbertの実装です。事前に訓練されたプログラミング言語モデルを使用してメッセージ生成をコミットします。 Commitbertは、ACLワークショップであるNLP4PROGで受け入れられています。コミットメッセージを書くのをためらったことはありますか?ここで、人工知能からコミットメッセージを取得してください!
Codebert:プログラミングおよび自然言語の事前に訓練されたモデルは、プログラム言語と自然言語(PL-NL)の組み合わせで事前に訓練されたモデルを導入します。また、コードを自然言語に変換する問題を導入します(コードドキュメント生成)。
diff --git a/test.py b/test.py
new file mode 100644
index 0000000..d13f441
--- /dev/null
+++ b/test.py
@@ -0,0 +1,6 @@
+
+import torch
+import argparse
+
+def add(a, b):
+ return a + b
Recommended Commit Message : Add two arguments .
Codebertを使用して、コードが追加されたときにコミットメッセージを生成するモデルを作成できます。ただし、ほとんどのコードの変更は、コードの追加だけでは行われず、コードの一部が削除されます。
diff --git a/test.py b/test.py
index d13f441..1b1b82a 100644
--- a/test.py
+++ b/test.py
@@ -1,6 +1,3 @@
-import torch
-import argparse
-
def add(a, b):
return a + b
Recommended Commit Message : Remove unused imports
この問題を解決するには、XLM(Lample et al、2019)が言語の埋め込みを使用したように、追加および削除されることを区別できるpatch_type_embeddingsと呼ばれる新しい埋め込みを使用します。 (追加された場合、削除された場合は2)
| 言語 | 追加した | diff | データ(diffのみ) | ウェイト |
|---|---|---|---|---|
| Python | ✅ | ✅ | 423K | リンク |
| JavaScript | ✅ | ✅ | 514K | リンク |
| 行く | ⬜ | ⬜ | ⬜ | ⬜ |
| Java | ⬜ | ⬜ | ⬜ | ⬜ |
| ルビー | ⬜ | ⬜ | ⬜ | ⬜ |
| Php | ⬜ | ⬜ | ⬜ | ⬜ |
現在サポートされていない言語をゆっくりと征服する予定です。ただし、上記の言語についてトレーニングするには、AWSまたはGCPの高価なGPUインスタンスを使用する必要があります。このために簡単なスポンサーをしてください!データの追加はCodeSearchNetデータセットです。
このプロジェクトを実行するには、フラスコベースの推論サーバー(GPU)とクライアント(コミットモジュール)が必要です。 GPUをお持ちでない場合は、心配しないでください。GoogleColabを使用して使用できます。
サーバーを実行する前に、DockerとNvidia-Dockerを準備します。
Nvidia Dockerを使用してFlask Serverを提供します。ここのプログラミング言語については、Dockerタグを確認してください。
| 言語 | タグ |
|---|---|
| Python | py |
| JavaScript | JS |
| 行く | 行く |
| Java | Java |
| ルビー | ルビー |
| Php | Php |
$ docker run -it -d --gpus 0 -p 5000:5000 graykode/commit-autosuggestions:{language}GPUを持っていなくても、commit_autosuggestions.ipynbでngrok設定を使用して、フラスコサーバーにサービスを提供できます。
commit名前のpythonクライアントモジュールを使用して、COMMICOSOGISGESTIONを開始します。まず、PIPを介してパッケージをインストールします。
$ pip install commit Commit Configureコマンドを介してステップ1で構成されたフラスコサーバーのエンドポイントを設定します。 (たとえば、エンドポイントがhttp://127.0.0.1:5000の場合、次のように設定しcommit configure --endpoint http://127.0.0.1:5000 。
$ commit configure --help
Usage: commit configure [OPTIONS]
Options:
--profile TEXT unique name for managing each independent settings
--endpoint TEXT endpoint address accessible to the server (example :
http://127.0.0.1:5000/) [required]
--help Show this message and exit.すべてのセットアップが完了しました!これで、コマンドコミットでAIからコミットメッセージを取得できます。
$ commit --help
Usage: commit [OPTIONS] COMMAND [ARGS]...
Options:
--profile TEXT unique name for managing each independent settings
-f, --file FILENAME patch file containing git diff (e.g. file created by
` git add ` and ` git diff --cached > test.diff ` )
-v, --verbose print suggested commit message more detail.
-a, --autocommit automatically commit without asking if you want to
commit
--help Show this message and exit.
Commands:
configure糸くずスタイルのためにトレーニング方法を参照してください。これにより、リポジトリのコミットリントスタイルへのチューニングを再構築できます。
記事のタイプミスやコードでさえ、何でも貢献できます。躊躇しないで!!。バージョンは、各バージョンの名前があるブランチ内でのみ管理されます。 Pypiでリリースされた後、マスターブランチに統合され、アップグレードされたバージョンのブランチで新しい開発収益が融合されます。
テ・ファン・ジョン(@graykode)
@article{jung2021commitbert,
title={CommitBERT: Commit Message Generation Using Pre-Trained Programming Language Model},
author={Jung, Tae-Hwan},
journal={arXiv preprint arXiv:2105.14242},
year={2021}
}