Primera LLM paraguaya con arquitectura propia entrenada desde cero.
105.86M parametros, 891,135,906 tokens de español.
No es un fine-tune ni una reimplementacion de otra arquitectura: el tokenizer, el
corpus, el bloque de deliberacion recurrente y los pesos se construyeron para este
proyecto.
Alcance exacto de esa afirmacion. Se refiere a la ARQUITECTURA y al
entrenamiento desde cero hechos en Paraguay. No significa que el modelo este
entrenado con datos paraguayos: el corpus es español general y las fuentes
paraguayas son apenas el 0.066% de los documentos (ver la tabla de
composicion mas abajo). Un modelo entrenado sobre corpus paraguayo es un
objetivo distinto y posterior.
Que tiene de distinto
Ademas de las 12 capas del backbone, el modelo tiene un bloque de
deliberacion recurrente: un unico bloque transformer que se aplica hasta
8 veces sobre el estado, con
halting aprendido (el modelo decide cuando dejar de iterar),
re-inyeccion de la entrada en cada paso (concat + adaptador),
cabezas auxiliares de verificacion y reparacion,
una memoria latente con decaimiento.
Con 8 iteraciones, la deliberacion es el 40% del computo del modelo aunque
sea solo el 10% de los parametros.
Resultados medidos
La profundidad recurrente SI aporta
Barrido sobre el mismo checkpoint, holdout GSM8K-es, 192 ejemplos:
iteraciones
loss
perplejidad
1
4.2465
69.86
2
4.0063
54.94
4
3.9122
50.01
7
3.8975
49.28
8-16
3.8975
49.28
-8.2% de loss y -29.5% de perplejidad entre 1 y 7 iteraciones. Satura
exactamente en la profundidad entrenada: mas iteraciones en inferencia no mejoran
(pero tampoco degradan). El halting converge a ~7.4 iteraciones de 8 por su
cuenta, y su curva sigue a la forzada con <0.006 nats de diferencia.
Contra GPT-2 124M
Bits por caracter (menor es mejor). Se usa bpc y no perplejidad porque los
tokenizers son distintos (24576 vs 50257) y la perplejidad por token no seria
comparable. Los dos modelos se miden sobre el mismo texto.
conjunto
YvyrAI 100M
GPT-2 124M
Español (web, held-out)
1.3625
2.2238
YvyrAI +63.2%
Ingles (Wikipedia)
2.0078
1.0280
GPT-2 +95.3%
Cada modelo domina en su idioma. YvyrAI lo consigue con ~11x menos datos
(891M tokens contra los ~10B de WebText).
El tokenizer explica parte de la ventaja: comprime español a 4.25 caracteres por
token contra 2.92 de GPT-2, un 46% mejor.
Lo que estos numeros NO prueban: que la arquitectura sea superior. Ganar en
español es especializacion de idioma (corpus + tokenizer dedicados). La pregunta
arquitectonica se responde con un A/B contra un modelo denso iso-FLOP, que esta
en curso.
Limitaciones (leer antes de usarlo)
Inventa hechos. Son 8.4 tokens por parametro contra los ~20
del punto compute-optimo (Chinchilla): el modelo aprendio la FORMA del español
antes que los hechos. Preguntado por la capital de Paraguay contesta cosas como
"Rio del Plata". No es una fuente de informacion.
No tiene ajuste de instrucciones. Es un modelo base. Sin la plantilla de
chat correcta continua texto en vez de responder.
No razona aritmetica: "15 + 27" no da 42.
Contenido paraguayo minimo: el corpus es español general (82.5% web de
CulturaX). Las fuentes paraguayas son el 0.066% de los documentos, asi que
el modelo NO refleja el registro paraguayo (voseo, lexico local, jopara). Ver
"Proximos pasos" mas abajo: eso se corrige en la version siguiente.
Una sola semilla, sin barras de error.
Uso
La arquitectura es propia, asi que no carga con AutoModelForCausalLM. El
codigo de inferencia viene incluido en este repo (carpeta yvyrai_nano/),
asi que no hace falta nada mas:
bash
1git clone https://huggingface.co/Manuel12435/YvyrAI-100m-Nano
2cd YvyrAI-100m-Nano
3pip install -r requirements.txt
4python cargar.py # carga y genera5python chatear.py # chat por consola
python
1from yvyrai_nano import cargar_modelo, construir_prompt, generar
23modelo, tok, cfg = cargar_modelo(".", ema=True)45# La plantilla del entrenamiento es OBLIGATORIA. Sin ella el modelo continua6# texto como si fuera una pagina web, porque el 82.5% de su corpus es web.7prompt = construir_prompt("Explica que es la fotosintesis.")89# iters = profundidad de deliberacion. 7 es el optimo medido.10print(generar(modelo, tok, prompt, max_new_tokens=80, iters=7))
Tokens de control: <|bos|>=2, <|eos|>=3, <|sistema|>=4, <|usuario|>=5,
<|pensar|>=6, <|respuesta|>=7.
Sugerencia medida: temperatura entre 0.5 y 0.7. Por debajo de 0.2 el modelo
colapsa sobre plantillas memorizadas y repite la misma sin importar la pregunta.
Que codigo hay y que no. Se publica lo necesario para inferencia: la
arquitectura (model.py), el ModelConfig, el cache KV cuantizado, el muestreo
y la deteccion de hardware. El pipeline del corpus, el trainer con el curriculo
de 5 fases, las losses auxiliares y la cuantizacion QAT no forman parte de este
release.
Entrenamiento
parametros
105.86M
tokens vistos
891,135,906
corpus
4,200,085 documentos, 96.3% de pureza de español
contexto
1024 tokens
batch efectivo
262.144 tokens por optimizer step
optimizer steps
3,814
precision de entrenamiento
bf16 con autocast, master weights en fp32
precision de los pesos publicados
fp32
hardware
1x GPU de consumo, 8 GB de VRAM
Los pesos se publican en fp32, que es como los guarda el checkpoint: el
entrenamiento corre en bf16 con autocast pero mantiene los master weights en fp32.
Se dejan asi a proposito, porque las metricas de esta pagina se midieron en fp32 y
de este modo son reproducibles al digito. Para inferencia podés castear a bf16 sin
diferencia practica.
Curriculo en 5 fases que sube la profundidad de deliberacion 3 -> 5 -> 7 -> 8 y
enciende progresivamente las losses auxiliares (guidance, verify, repair,
halting, latente).
Composicion del corpus
fuente
documentos
%
culturax_es
3,465,087
82.50%
wikipedia_raw
249,219
5.93%
reasoning
182,489
4.34%
wikipedia_grounded
113,591
2.70%
books_literature
59,176
1.41%
long_context_es
40,507
0.96%
instruction_qa
35,914
0.86%
safety
24,866
0.59%
instruction_chat
17,589
0.42%
python_es
7,636
0.18%
yvyrai_identity
1,334
0.03%
scientific_es
1,042
0.02%
yvyrai_style
803
0.02%
paraguay_official
617
0.01%
news_es
215
0.01%
Proximos pasos: YvyrAI 1B, esta vez CON datos paraguayos
Se viene un modelo de 1B de parametros, y ese si va a entrenarse con un corpus
paraguayo construido a proposito.
Por que este no lo tiene, dicho sin adornos: sobreestime cuanto texto paraguayo
habia disponible. El mix del corpus le asignaba 20M de tokens a la fuente
paraguay_official y las fuentes publicas rindieron 104.080 tokens, el 0.5%
de lo pedido. De ahi sale el 0.066% de la tabla de arriba. No fue una decision de
diseño, fue un limite de datos que no medi antes de armar el mix.
Plan para el corpus paraguayo del 1B, ya con las fuentes verificadas:
~50% web .py — CulturaX filtrado por dominio paraguayo. Es donde vive el
registro real (voseo, lexico local, prensa, blogs), y la licencia ya esta
resuelta.
~25% leyes — BACN. Verificado: 7.084 leyes en el sitemap, ~98M tokens
disponibles. Se va a usar solo una parte para no sesgar el modelo al español
juridico, que es justamente el registro MENOS paraguayo del conjunto.
~15% Wikipedia sobre Paraguay.
~10% institucional — INE, datos.gov.py.
Un modelo entrenado sobre corpus paraguayo es un objetivo distinto de este, y es
el que sigue.
Que cubre el preprint y que no. El paper describe la ARQUITECTURA
(deliberacion recurrente, verificacion interna, reparacion condicional, computo
adaptativo). Los experimentos que reporta son de una configuracion de 15M
corrida como validacion de ingenieria, y el propio paper dice explicitamente
que no reclama superioridad sobre sistemas existentes y que el benchmarking a
escala queda diferido. Este modelo de 105M es posterior al preprint, asi que
los numeros de esta pagina no estan en esa version del paper todavia. Se van a
actualizar en una version siguiente.
Autores / equipo
Juan Manuel Acosta Ramírez — arquitectura y entrenamiento
Para la arquitectura, citar el preprint (es lo que esta registrado y fechado):
bibtex
1@misc{yvyrai2026,
2 title = {YvyrAI: A Spanish-First Recurrent-Deliberation Language Model
3 Architecture with Internal Verification, Conditional Repair,
4 and Adaptive Compute},
5 author = {Acosta Ramírez, Juan Manuel and Irrazábal Ruiz Díaz, Mauricio José},
6 year = {2026},
7 publisher = {Zenodo},
8 doi = {10.5281/zenodo.20533759},
9 url = {https://doi.org/10.5281/zenodo.20533759}
10}
Para estos pesos en concreto:
bibtex
1@misc{yvyrai100mnano,
2 title = {YvyrAI-100m-Nano: LLM en español con profundidad recurrente,
3 entrenada desde cero en Paraguay},
4 author = {Juan Manuel Acosta Ramírez},
5 year = {2026},
6 url = {https://huggingface.co/Manuel12435/YvyrAI-100m-Nano},
7 note = {105.86M parametros, 891,135,906 tokens}
8}
Aviso sobre los datos
El corpus incluye Wikipedia en español (CC-BY-SA) y CulturaX. Antes de elegir la
licencia de los pesos conviene revisar como afecta eso a tu caso: el proyecto
excluyo a proposito las fuentes con copyleft fuerte
(YVYRAI_ALLOW_SHARE_ALIKE_DATA desactivado) pero Wikipedia sigue presente.