Esta é a implementação do Commitbert: Commit, cometer geração de mensagens usando o modelo de linguagem de programação pré-treinado. Commitbert é aceito no Workshop da ACL: NLP4Prog. Você já hesitou em escrever uma mensagem de confirmação? Agora receba uma mensagem de confirmação da inteligência artificial!
Codebert: Um modelo pré-treinado para programação e linguagens naturais introduz um modelo pré-treinado em uma combinação de linguagem de programa e linguagem natural (PL-NL). Ele também apresenta o problema de converter código em linguagem natural (geração de documentação de código).
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 .
Podemos usar o Codebert para criar um modelo que gera uma mensagem de confirmação quando o código é adicionado. No entanto, a maioria das alterações de código não é feita apenas por add do código e algumas partes do código são excluídas.
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
Para resolver esse problema, use uma nova incorporação chamada patch_type_embeddings que pode distinguir adicionadas e excluídas, assim como o XLM (Lamample et al, 2019) usou a linguagem incorporada. (1 para adicionar, 2 para excluído.)
| Linguagem | Adicionado | Dif | Dados (apenas diff) | Pesos |
|---|---|---|---|---|
| Python | ✅ | ✅ | 423k | Link |
| JavaScript | ✅ | ✅ | 514K | Link |
| Ir | ⬜ | ⬜ | ⬜ | ⬜ |
| JAVA | ⬜ | ⬜ | ⬜ | ⬜ |
| Rubi | ⬜ | ⬜ | ⬜ | ⬜ |
| Php | ⬜ | ⬜ | ⬜ | ⬜ |
Planejamos conquistar lentamente idiomas que não são suportados no momento. No entanto, também preciso usar instâncias caras de GPU da AWS ou GCP para treinar sobre os idiomas acima. Por favor, faça um patrocinador simples para isso! Adicionar dados é o conjunto de dados do CodesearchNet.
Para executar este projeto, você precisa de um servidor de inferência baseado em frascos (GPU) e um cliente (módulo de confirmação). Se você não tiver uma GPU, não se preocupe, você pode usá -lo através do Google Colab.
Prepare o Docker e o Nvidia-Docker antes de executar o servidor.
Sirva o Flask Server com o NVIDIA Docker. Verifique a tag do docker para a linguagem de programação aqui.
| Linguagem | Marcação |
|---|---|
| Python | py |
| JavaScript | JS |
| Ir | ir |
| JAVA | Java |
| Rubi | rubi |
| Php | php |
$ docker run -it -d --gpus 0 -p 5000:5000 graykode/commit-autosuggestions:{language}Mesmo se você não tiver uma GPU, ainda poderá servir o servidor Flask usando a configuração NGROK em commit_autosuggestions.ipynb.
commit .Primeiro, instale o pacote através do PIP.
$ pip install commit Defina o terminal para o servidor Flask configurado na etapa 1 através do comando Configure Configure. (Por exemplo, se o endpoint for http://127.0.0.1:5000, defina o seguinte: 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.Toda a configuração está feita! Agora, você pode receber uma mensagem de confirmação da IA com o comando de comando.
$ 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:
configureConsulte como treinar para o seu estilo de fiapo. Isso permite que você refine o ajuste no estilo de cometimento do seu repositório.
Você pode contribuir com qualquer coisa, mesmo um erro de digitação ou código no artigo. Não hesite !!. As versões são gerenciadas apenas dentro da filial com o nome de cada versão. Depois de ser lançado no Pypi, ele é mesclado na filial principal e o novo desenvolvimento prossegue na filial da versão atualizada.
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}
}