Absortio

Email → Summary → Bookmark → Email

GitHub - CodedotAl/gpt-code-clippy: Full description can be found here: https://discuss.huggingface.co/t/pretrain-gpt-neo-for-open-source-github-copilot-model/7678?u=ncoop57

Extracto

Full description can be found here: https://discuss.huggingface.co/t/pretrain-gpt-neo-for-open-source-github-copilot-model/7678?u=ncoop57 - GitHub - CodedotAl/gpt-code-clippy: Full description can ...

Resumen

Resumen Principal

El repositorio GitHub - CodedotAl/gpt-code-clippy representa un esfuerzo significativo en el desarrollo de modelos de lenguaje especializados en generación de código, inspirados en herramientas como GitHub Copilot. Este proyecto se centra en el preentrenamiento de una variante del modelo GPT-Neo con el objetivo de crear una alternativa de código abierto capaz de asistir a desarrolladores en la escritura de código mediante sugerencias contextuales. La iniciativa resalta la importancia de democratizar el acceso a tecnologías avanzadas de asistencia programática, permitiendo que comunidades más amplias puedan beneficiarse de herramientas que tradicionalmente están disponibles solo en versiones cerradas. El modelo está diseñado para comprender y generar código en múltiples lenguajes de programación, aprovechando grandes volúmenes de datos provenientes de repositorios públicos en GitHub. Este enfoque no solo impulsa la investigación en inteligencia artificial aplicada al desarrollo de software, sino que también fomenta la colaboración y transparencia dentro de la comunidad de código abierto. El proyecto se presenta como un recurso valioso para investigadores, desarrolladores y entusiastas interesados en explorar y mejorar las capacidades de los asistentes de programación automatizados.

Elementos Clave

  • Modelo GPT-Neo: El proyecto utiliza una versión modificada de GPT-Neo, un modelo de lenguaje de código abierto, como base para entrenar el asistente de código. Esto permite aprovechar una arquitectura ya probada y optimizada para tareas de generación de texto, adaptándola específicamente para comprender y producir código fuente.

  • Objetivo de código abierto: A diferencia de herramientas como GitHub Copilot, que son propietarias, este proyecto busca ofrecer una alternativa transparente y accesible, permitiendo que cualquier persona pueda revisar, modificar y mejorar el modelo, promoviendo así la innovación colaborativa.

  • Preentrenamiento especializado: El modelo se preentrena con datos específicos de código fuente disponible en GitHub, lo que le permite aprender patrones, sintaxis y estructuras comunes en múltiples lenguajes de programación, mejorando su capacidad de generar sugerencias útiles y contextualmente relevantes.

  • Integración con Hugging Face: El proyecto está vinculado a una discusión en la plataforma Hugging Face, lo que indica una fuerte integración con ecosistemas de IA comunitarios, facilitando el acceso a recursos, modelos y herramientas complementarias para desarrolladores e investigadores.

Análisis e Implicaciones

Este proyecto tiene el potencial de transformar la manera en que los desarrolladores interactúan con herramientas de asistencia de código, al ofrecer una alternativa viable y abierta a soluciones comerciales. Además, al ser de código abierto, puede acelerar la investigación en modelos de lenguaje especializados en programación, permitiendo avances más rápidos y colaborativos. También representa un paso importante hacia la inclusión y accesibilidad en el desarrollo de software, al eliminar barreras económicas y técnicas para acceder a tecnologías avanzadas.

Contexto Adicional

El repositorio forma parte de una tendencia creciente en la que la comunidad de inteligencia artificial busca replicar y mejorar funcionalidades de herramientas comerciales mediante enfoques abiertos y colaborativos. Esto no solo impulsa la innovación, sino que también permite una mayor personalización y adaptación a necesidades específicas dentro del desarrollo de software.

Contenido

Please refer to our new GitHub Wiki which documents our efforts in detail in creating the open source version of GitHub Copilot



Courtesy of the awesome Aimee Trevett!

Introduction

GPT-Code-Clippy (GPT-CC) is an open source version of GitHub Copilot, a language model -- based on GPT-3, called GPT-Codex -- that is fine-tuned on publicly available code from GitHub.

Datasets

The dataset used to train GPT-CC is obtained from SEART GitHub Search using the following criteria:

  • >10 GitHub stars
  • >2 commits
  • Must have a licence
  • Exclude forks
  • Size < 70708 bytes

These repositories are then combined with all of the GitHub repositories contain in The Pile.

The repositories are then filtered for duplicate files. Filtering is performed by regexing each file in each repository to obtain a list of "variables" (the tokens which only contain alphanumeric characters) and then filtering out any files which contain the same sequence of "variables. The deduplication script is available here.

The final dataset is available here. The dataset without the duplicates filtered out is also available here.

The datasheet discussing in more detail the construction, usage, and limitation of the dataset can be found here. We hope to get it officially into Huggingface's datasets library soon!

Models

The GPT-CC models are fine-tuned versions of GPT-2 and GPT-Neo.

The available models can be found here

The ones that perform relatively well (None improve on the standard GPT-Neo 125M model except for APPs specific models and only for the APPs task):

TODO: which is the recommended model?

Training

Training is done using the training scripts available here.

For fine-tuning GPTNeo-125M on CodeClippy dataset we used AdamW optimizer (beta1=0.9, beta2=0.95) with GPT3-like learning rate schedule (4k warmup steps from 0 to 5e-5 followed by 50k cosine decay steps to 5e-6), weight decay 0.1 and batch size 1024, sequence length 2048. The choice of relatively large batch size and low LR with long warmup are made to avoid agressive updates and preserve the knowledge contained in pretrained GPTNeo weights.

For fine-tuning GPTNe0-125M on APPS dataset we used AdamW optimizer (beta1=0.9, beta2=0.98) with linear learning rate schedule (800 warmup steps from 0 to peak LR followed by linear decay to 0, a range of value for peak LR was [1e-5; 1e-4]), weight decay 0.1 and batch size 256, sequence length 1024. We trained model for 5 epochs selecting best checkpoint judging by validation loss. The language modelling objective for APPS dataset is modified to backpropagate loss only for the tokens corresponding to code solution (refer to Hendrycks et al for more details).

For fine-tuning GPTNe0-1.3B on APPS dataset we used Adafactor optimizer with linear learning rate schedule (5k warmup steps from 0 to 2e-5 followed by linear decay to 0), weight decay 0.1 and batch size 24, sequence length 1024. The choice of hyperparameters for 1.3B model is in part determined by hardware limitations. We trained model for 5 epochs selecting best checkpoint judging by validation loss.

TODO: which is the recommended way to train GPT-CC?

Evaluation

The models are also evaluated on the APPS and HumanEval datasets.

Human Eval Results

Model pass@1 pass@2 pass@5 pass@10
EleutherAI/gpt-neo 0.12% 0.24% 0.61% 1.22%
gpt-neo-125M-apps 0.06% 0.12% 0.30% 0.61%
dedup-filtered-no-resize-2048bs 0.00% 0.00% 0.00% 0.00%
1024-filtered 0.00% 0.00% 0.00% 0.00%
dedup-2048 0.00% 0.00% 0.00% 0.00%

APPS Eval Results

Coming soon...

Demo

A Visual Studio Code which uses the HuggingFace Inference API is available and can be found here.

We also have Huggingface's Space demo where you can specify and problem in the format of a programming competition question.

TODO: more information about this when complete.

Further Reading

For more information about GPT-CC, GitHub Copilot, etc, see:

TODO: add more further reading.

Acknowledgements

Special thanks to our contributors!!

Fuente: GitHub