이것은 미리 훈련 된 프로그래밍 언어 모델을 사용하여 Commitbert : Commit Message Generation의 구현입니다. 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 라는 새 임베딩을 사용하십시오. (추가 된 경우 1, 삭제 된 경우 2)
| 언어 | 추가 | 차이 | 데이터 (diff) | 무게 |
|---|---|---|---|---|
| 파이썬 | ✅ | ✅ | 423K | 링크 |
| 자바 스크립트 | ✅ | ✅ | 514K | 링크 |
| 가다 | ⬜ | ⬜ | ⬜ | ⬜ |
| 자바 | ⬜ | ⬜ | ⬜ | ⬜ |
| 루비 | ⬜ | ⬜ | ⬜ | ⬜ |
| PHP | ⬜ | ⬜ | ⬜ | ⬜ |
우리는 현재 지원되지 않는 언어를 천천히 정복 할 계획입니다. 그러나 위의 언어에 대해 훈련하려면 AWS 또는 GCP의 고가의 GPU 인스턴스를 사용해야합니다. 이를 위해 간단한 스폰서를 해주세요! 데이터 추가는 Codesearchnet DataSet입니다.
이 프로젝트를 실행하려면 플라스크 기반 추론 서버 (GPU)와 클라이언트 (커밋 모듈)가 필요합니다. GPU가 없다면 걱정하지 마십시오. Google Colab을 통해 사용할 수 있습니다.
서버를 실행하기 전에 Docker와 Nvidia-Docker를 준비하십시오.
Nvidia Docker와 함께 Flask Server를 제공하십시오. 여기서 프로그래밍 언어에 대한 Docker 태그를 확인하십시오.
| 언어 | 꼬리표 |
|---|---|
| 파이썬 | 파이 |
| 자바 스크립트 | JS |
| 가다 | 가다 |
| 자바 | 자바 |
| 루비 | 루비 |
| PHP | PHP |
$ docker run -it -d --gpus 0 -p 5000:5000 graykode/commit-autosuggestions:{language}GPU가 없더라도 Commit_AutoSuggestions.ipynb에서 ngrok 설정을 사용하여 플라스크 서버에도 서비스를 제공 할 수 있습니다.
commit 라는 Python Client Module을 사용하여 Commit Autosgestion을 시작하십시오.먼저 PIP를 통해 패키지를 설치하십시오.
$ pip install commit 커밋 구성 명령을 통해 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에 출시 된 후 마스터 브랜치로 병합되며 업그레이드 된 버전 브랜치의 새로운 개발 수익금이 있습니다.
Tae Hwan Jung (@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}
}