An open API service indexing awesome lists of open source software.

https://github.com/aayes89/pyllm

Entrena tu propio LLM desde cero
https://github.com/aayes89/pyllm

cpu cuda llm llm-training pip python3

Last synced: about 1 month ago
JSON representation

Entrena tu propio LLM desde cero

Awesome Lists containing this project

README

          

# PyLLM
Genera y entrena un LLM desde cero con tus propios datos.

El código implementa un LLM utilizando las siguientes dependencias:
- os, math, random, pathlib - para funciones de sistema y aritmética
- torch - para entrenamiento con CPU o GPU (cuda)
- sentencepiece - para tokenización

# Estructura del proyecto
- run.sh: script batch para inicializar el proceso de ejecución.
- main.py: script python que genera y entrena el LLM.
- generate_text.py: script python que permite interactuar con el modelo una vez generado, sin necesidad de entrenarlo.
- data: directorio creado por run.sh donde se encuentra el corpus a entrenar el LLM.
- corpus.txt: archivo de texto plano codificado en UTF-8 con el que entrena el LLM. (puede ser generado automáticamente por run.sh o puedo cargarlo con datos propios)
- venv: directorio creado por run.sh para el entorno de virtual de python.

# Selección de hardware
Si va a utilizar un entrenamiento con GPU, descomentar la línea:

# device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')


Comentar la siguiente en caso de utilizar sólo CPU:

device = torch.device('cpu')

# Dataset de lenguaje


El dataset devuelve pares: (input_ids, labels) donde input_ids[i] = token t_i y labels[i] = token t_{i+1}

Se recorta en bloques de `block_size`.

Se añade un token EOS (id = vocab-1) al final de cada texto.

# Modelo Transformer “desde cero por etapas”
- Las Proyecciones lineales para Q, K, V y salida final.
- Escalamiento dot‑product attention.
- Concatenamiento de cabezas y proyección final.
- Self‑attention + residual.
- FFN + residual.
- Tensor: input_ids : (B, T) dtype=torch.long returns logits : (B, T, vocab)

# Entrenamiento / Evaluación
# Generación de texto

# Ficheros generados

El script genera los siguientes archivos:

- llm_es.pth: el modelo generado.
- bpe_sp.model: contiene información con la que opera el modelo generado.
- bpe_sp.vocab: contiene información sobre los vocabularios con los que opera el modelo.