Esta es la implementación de Commitbert: Commit Generación de mensajes utilizando el modelo de lenguaje de programación previamente capacitado. Commitbert es aceptado en el taller de ACL: NLP4Prog. ¿Ha dudado alguna vez en escribir un mensaje de confirmación? ¡Ahora obtenga un mensaje de confirmación de la inteligencia artificial!
Codebert: un modelo previamente capacitado para la programación y los idiomas naturales introduce un modelo previamente capacitado en una combinación de lenguaje de programa y lenguaje natural (PL-NL). También introduce el problema de convertir el código en lenguaje natural (generación de documentación 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 CodeBert para crear un modelo que genera un mensaje de confirmación cuando se agrega código. Sin embargo, la mayoría de los cambios en el código no se realizan solo con ADD del código, y algunas partes del código se eliminan.
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 este problema, use una nueva incrustación llamada patch_type_embeddings que puede distinguir la incrustación agregada y eliminada, al igual que el XLM (Lampra et al, 2019) utilizó el lenguaje incrustado. (1 para agregar, 2 para eliminar).
| Idioma | Agregado | Diferencia | Datos (solo diff) | Pesas |
|---|---|---|---|---|
| Pitón | ✅ | ✅ | 423k | Enlace |
| Javascript | ✅ | ✅ | 514K | Enlace |
| Ir | ⬜ | ⬜ | ⬜ | ⬜ |
| JAVA | ⬜ | ⬜ | ⬜ | ⬜ |
| Rubí | ⬜ | ⬜ | ⬜ | ⬜ |
| Php | ⬜ | ⬜ | ⬜ | ⬜ |
Planeamos conquistar lentamente los idiomas que actualmente no son compatibles. Sin embargo, también necesito usar costosas instancias de GPU de AWS o GCP para entrenar sobre los idiomas anteriores. ¡Por favor, haga un patrocinador simple para esto! Agregar datos es el conjunto de datos de CodeSearchNet.
Para ejecutar este proyecto, necesita un servidor de inferencia basado en frascos (GPU) y un cliente (módulo de confirmación). Si no tiene una GPU, no se preocupe, puede usarla a través de Google Colab.
Prepare Docker y Nvidia-Docker antes de ejecutar el servidor.
Servir el servidor Flask con Nvidia Docker. Consulte la etiqueta Docker para el lenguaje de programación aquí.
| Idioma | Etiqueta |
|---|---|
| Pitón | py |
| Javascript | js |
| Ir | ir |
| JAVA | Java |
| Rubí | rubí |
| Php | php |
$ docker run -it -d --gpus 0 -p 5000:5000 graykode/commit-autosuggestions:{language}Incluso si no tiene una GPU, aún puede servir al servidor Flask utilizando la configuración NGROK en commit_autosuggestions.ipynb.
commit .Primero, instale el paquete a través de PIP.
$ pip install commit Establezca el punto final para el servidor Flask configurado en el Paso 1 a través del comando Conjunto Configurar. (Por ejemplo, si el punto final es http://127.0.0.1:5000, configúrelo de la siguiente manera: 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 la configuración está lista! Ahora, puede recibir un mensaje de confirmación de la IA con la confirmación 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 cómo entrenar para su estilo de pelusa. Esto le permite volver a financiar el ajuste de su repositorio.
Puede contribuir con cualquier cosa, incluso un error tipográfico o código en el artículo. ¡No lo dudes! Las versiones se administran solo dentro de la rama con el nombre de cada versión. Después de ser lanzado en PYPI, se fusiona con la rama maestra y los nuevos ingresos de desarrollo en la rama de la versión mejorada.
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}
}