YvyrAI
DisponiblePesos Apache 2.0

YvyrAI Nano

105,86 millones de parámetros, entrenado desde cero en español.

Ficha de entrenamiento

Parámetros
105,86 M
Tokens vistos
891.135.906
Documentos
4.200.085
Pureza de español
96,3 %
Contexto
1.024 tokens
Tokens por paso
262.144
Pasos de optimizador
3.814
Duración
~18 h
Precisión
bf16
Hardware
1 GPU de consumo de 8 GB
Vueltas de deliberación
hasta 8
Vocabulario
24.576

Cómo se entrenó

Un currículo en cinco fases que aumenta de a poco las vueltas de deliberación (3, 5, 7 y 8) y va encendiendo los objetivos auxiliares.

Con qué se entrenó

Composición del corpus por fuente

4.200.085 documentos · porcentaje sobre el total

  1. Web82,50 % · 3.465.087 documentos
    culturax_es
  2. Wikipedia8,64 % · 362.810 documentos
    wikipedia_raw · wikipedia_grounded
  3. Razonamiento4,34 % · 182.489 documentos
    reasoning
  4. Libros1,41 % · 59.176 documentos
    books_literature
  5. Instrucciones y conversación1,27 % · 53.503 documentos
    instruction_qa · instruction_chat
  6. Otros1,83 % · 77.020 documentos
    long_context_es · safety · python_es · yvyrai_identity · scientific_es · yvyrai_style · paraguay_official · news_es
El contenido paraguayo quedó mínimo en este modelo (0,066 % de los documentos). Corregirlo es la prioridad del siguiente.Fuente: tabla «Composición del corpus» del model card de YvyrAI-100m-Nano.
Ver la tabla completa
Documentos por fuente y grupo
FuenteGrupoDocumentos%
culturax_esWeb3.465.08782,50
wikipedia_rawWikipedia249.2195,93
wikipedia_groundedWikipedia113.5912,70
reasoningRazonamiento182.4894,34
books_literatureLibros59.1761,41
instruction_qaInstrucciones y conversación35.9140,86
instruction_chatInstrucciones y conversación17.5890,42
long_context_esOtros40.5070,96
safetyOtros24.8660,59
python_esOtros7.6360,18
yvyrai_identityOtros1.3340,03
scientific_esOtros1.0420,02
yvyrai_styleOtros8030,02
paraguay_officialOtros6170,01
news_esOtros2150,01
Total4.200.085100,00

Resultados

Pensar más vueltas mejora la predicción hasta la séptima.

perplejidad50607012345678910111213141516vueltas de deliberaciónmeseta: 49,28 de 8 a 1669,86óptimo: 7 vueltasperplejidad 49,28
Perplejidad: qué tan sorprendido queda el modelo ante el texto real. Menos es mejor.Fuente: barrido de 1 a 16 vueltas sobre el mismo checkpoint, holdout GSM8K-es, 192 ejemplos (depth_sweep_reasoning.json). Una sola corrida, sin barras de error.
Ver los datos
Perplejidad por número de vueltas de deliberación (menos es mejor)
VueltasVueltas fijasParada adaptativaVueltas usadas (promedio)
169,8669,861,00
254,9454,962,00
351,3151,973,00
450,0150,814,00
549,4650,355,00
649,3050,236,00
7 · óptimo49,2850,257,00
849,2850,257,38
949,2850,257,39
1049,2850,257,40
1149,2850,257,41
1249,2850,257,41
1349,2850,257,41
1449,2850,257,41
1549,2850,257,41
1649,2850,257,41

Cada modelo gana en su idioma.

Españolweb, held-outYvyrAI Nano1,3625GPT-2 124M2,2238GPT-2 124M necesita 63,2 % más bitsInglésWikipediaYvyrAI Nano2,0078GPT-2 124M1,0280YvyrAI Nano necesita 95,3 % más bits00,511,522,5bits por carácter · menos es mejor
Bits por carácter: cuánta información necesita el modelo para predecir cada letra. Se usa en lugar de la perplejidad porque los dos modelos tienen tokenizers distintos.Mismo texto para los dos modelos: 150.341 caracteres en español y 444.665 caracteres en inglés.Fuente: comparacion_gpt2.json.
Ver los datos
Bits por carácter sobre el mismo texto (menos es mejor)
ConjuntoYvyrAI NanoGPT-2 124M
Español (web, held-out)1,36252,2238
Inglés (Wikipedia)2,00781,0280

Cómo funciona la deliberación, qué medimos y qué falta probar.

Ver la investigación

Antes de usarlo

  1. Inventa datos.

    Aprendió la forma del español antes que los hechos. No es una fuente de información.

  2. No está ajustado para conversar.

    Es un modelo base: sin la plantilla correcta, continúa el texto en lugar de responder.

  3. No hace cuentas.

    No resuelve aritmética de forma confiable.

  4. Casi no conoce Paraguay.

    El contenido local fue mínimo en su entrenamiento.

  5. Una sola corrida, sin barras de error.

Uso

La arquitectura es propia, así que no carga con las herramientas estándar de Hugging Face (AutoModelForCausalLM). El código y las instrucciones están en la página del modelo.

Python · ejemplo del model card
# clonar el repo del proyecto y desde su raiz:
from safetensors.torch import load_file
from config import ModelConfig
from model import ReasoningModel
from data import load_tokenizer
import json, torch

cfg = ModelConfig(**json.load(open("config.json"))["model_config"])
modelo = ReasoningModel(cfg)
modelo.load_state_dict(load_file("model_ema.safetensors"))
modelo.cuda().eval()
tok = load_tokenizer("tokenizer.json")

# La plantilla del entrenamiento es OBLIGATORIA. Sin esto, continua texto.
prompt = ("<|sistema|>Eres un asistente que explica paso a paso en español."
          "<|usuario|>Hola, como estas?<|respuesta|>")
ids = torch.tensor([[2] + tok.encode(prompt).ids]).cuda()   # 2 = <|bos|>
salida = modelo.generate(ids, max_new_tokens=80, temperature=0.6,
                         delib_min_iters=7, delib_max_iters=7)  # 7 = optimo
print(tok.decode(salida[0, ids.shape[1]:].tolist()))

Cita

BibTeX
@misc{yvyrai100mnano,
  title  = {YvyrAI-100m-Nano: LLM en español con profundidad recurrente,
            entrenada desde cero en Paraguay},
  author = {Juan Manuel Acosta Ramírez},
  year   = {2026},
  url    = {https://yvyrai.lat/paper},
  note   = {Primera LLM paraguaya con arquitectura propia. Entrenada en una
            GPU de consumo de 8 GB}
}