Il s'agit de la mise en œuvre de Commitbert: Commit Message Génération à l'aide du modèle de langage de programmation pré-formé. Commitbert est accepté dans ACL Workshop: NLP4Prog. Avez-vous déjà hésité à rédiger un message de validation? Maintenant, obtenez un message de validation de l'intelligence artificielle!
Codebert: Un modèle pré-formé pour la programmation et les langages naturels présente un modèle pré-formé dans une combinaison de langage de programme et de langage naturel (PL-NL). Il introduit également le problème de la conversion du code en langage naturel (génération de documentation du code).
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 .
Nous pouvons utiliser Codebert pour créer un modèle qui génère un message de validation lorsque le code est ajouté. Cependant, la plupart des modifications de code ne sont pas effectuées uniquement par Ajout du code et certaines parties du code sont supprimées.
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
Pour résoudre ce problème, utilisez une nouvelle intégration appelée patch_type_embeddings qui peut distinguer et supprimé ajouté, tout comme le XLM (Lample et al, 2019) a utilisé l'intégration du langage. (1 pour ajouté, 2 pour supprimé.)
| Langue | Ajouté | Difficulté | Données (seulement diff) | Poids |
|---|---|---|---|---|
| Python | ✅ | ✅ | 423K | Lien |
| Javascrip | ✅ | ✅ | 514K | Lien |
| Aller | ⬜ | ⬜ | ⬜ | ⬜ |
| JAVA | ⬜ | ⬜ | ⬜ | ⬜ |
| Rubis | ⬜ | ⬜ | ⬜ | ⬜ |
| Php | ⬜ | ⬜ | ⬜ | ⬜ |
Nous prévoyons de conquérir lentement les langues qui ne sont pas actuellement prises en charge. Cependant, j'ai également besoin d'utiliser des instances GPU coûteuses d'AWS ou de GCP pour s'entraîner sur les langues ci-dessus. Veuillez faire un simple sponsor pour cela! Ajouter des données est un ensemble de données CodesearchNet.
Pour exécuter ce projet, vous avez besoin d'un serveur d'inférence (GPU) basé sur Flask et d'un client (module de validation). Si vous n'avez pas de GPU, ne vous inquiétez pas, vous pouvez l'utiliser via Google Colab.
Préparez Docker et Nvidia-Docker avant d'exécuter le serveur.
Servir le serveur FLASK avec Nvidia Docker. Consultez la balise Docker pour le langage de programmation ici.
| Langue | Étiqueter |
|---|---|
| Python | py |
| Javascrip | js |
| Aller | aller |
| JAVA | Java |
| Rubis | rubis |
| Php | php |
$ docker run -it -d --gpus 0 -p 5000:5000 graykode/commit-autosuggestions:{language}Même si vous n'avez pas de GPU, vous pouvez toujours servir le serveur FLASK en utilisant le paramètre NGROK dans commit_autoSuggestions.ipynb.
commit .Tout d'abord, installez le package via PIP.
$ pip install commit Définissez le point de terminaison pour le serveur FLASK configuré à l'étape 1 via la commande commit Configurer. (Par exemple, si le point de terminaison est http://127.0.0.1:5000, définissez-le comme suit: 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.Toute la configuration est terminée! Maintenant, vous pouvez obtenir un message de validation de l'IA avec le commandes.
$ 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:
configureReportez-vous comment vous entraîner pour votre style de charpie. Cela vous permet de re-ficeler le réglage sur le style de charpie de votre référentiel.
Vous pouvez contribuer n'importe quoi, même une faute de frappe ou du code dans l'article. N'hésitez pas !!. Les versions ne sont gérées que dans la branche avec le nom de chaque version. Après avoir été libéré sur PYPI, il est fusionné dans la branche maître et le nouveau développement se déroule dans la branche de version améliorée.
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}
}