Un modelo de lenguaje Transformer (Decoder-only) entrenado desde cero para la generación de código Python.
graph TD
HF[("HuggingFace Datasets<br/>CodeAlpaca • CodeSearchNet")] -->|download| PP[Preprocesamiento]
PP -->|clean & filter| TK[Tokenizador BPE]
TK -->|vocab encode| DS[(Dataset Tokenizado)]
DS -->|batch| TR[Entrenamiento<br/>Transformer Decoder]
TR -->|weights| M[Modelo .pt]
M -->|load| INF[Inferencia]
INF -->|generate| OUT[Código Python]
- ✅ Arquitectura Transformer personalizada - Implementación from-scratch del decoder-only
- ✅ Tokenizador BPE - Byte-Pair Encoding entrenado específicamente para código
- ✅ Pipeline de datos automático - Descarga y procesa datasets de HuggingFace al vuelo
- ✅ Compatible GPU/CPU - Soporte nativo para entrenamiento con CUDA
- ✅ Código legible - Implementación educativa y fácil de modificar
code-gpt-nano/
├── main.ipynb # Notebook principal: pipeline completo de entrenamiento
├── requirements.txt # Dependencias del proyecto
├── README.md # Documentación
├── .gitignore # Archivos excluidos
├── datacodegpt/ # Datos procesados (generado automáticamente)
│ ├── train.jsonl
│ └── val.jsonl
└── *.pt # Pesos del modelo (generado automáticamente)
| Archivo/Directorio | Descripción |
|---|---|
main.ipynb |
Notebook con todo el pipeline: descarga, preprocesamiento, entrenamiento e inferencia |
requirements.txt |
Librerías necesarias: torch, transformers, datasets, pandas, numpy |
datacodegpt/ |
Datos procesdos en formato JSONL (ignorado en Git) |
*.pt |
Pesos del modelo (ignorado en Git por tamaño) |
git clone https://github.com/elisbanpaco/NanoCode-GPT.git
cd code-gpt-nanopython -m venv venv
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windowspip install -r requirements.txtjupyter notebook main.ipynbNota: La primera ejecución tardará unos minutos descargando los datasets de HuggingFace (CodeAlpaca, CodeSearchNet) y durante el entrenamiento dependera mucho de la potencia del hadware o internet. Los archivos se cachean localmente para ejecuciones posteriores.
- Añadir interfaz web con Gradio
- Exportar modelo a ONNX para inferencia optimizada
- Soporte para generación de código JavaScript
- Fine-tuning con datasets adicionales
- Implementar RLHF (Reinforcement Learning from Human Feedback)
- Añadir benchmarks de generación vs otros modelos
¡Las contribuciones son bienvenidas! Si deseas mejorar este proyecto:
- Haz un fork del repositorio
- Crea una rama (
git checkout -b feature/nueva-caracteristica) - Commitea tus cambios (
git commit -m 'Añadir nueva característica') - Push a la rama (
git push origin feature/nueva-caracteristica) - Abre un Pull Request
Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más información.