Downloads · 30 days
50
13% of all-time downloads
Manuel12435/YvyrAI-100m-Nano
YvyrAI-100m-Nano is a text generation model from Manuel12435. Use it when you need the model to write or continue text. It is set up for pytorch. The card lists the license as apache-2.0.
Primera LLM paraguaya con arquitectura propia entrenada desde cero. 105.86M parametros, 891,135,906 tokens de español.
Downloads · 30 days
50
13% of all-time downloads
All-time downloads
389
Public
Parameters
106M
847 MB on disk
Likes
3
Public
Click a slice to open those files.
.safetensors847 MB · 100%
From the Hugging Face model README
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.
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
Con 8 iteraciones, la deliberacion es el 40% del computo del modelo aunque sea solo el 10% de los parametros.
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.
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.
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:
git clone https://huggingface.co/Manuel12435/YvyrAI-100m-Nano
cd YvyrAI-100m-Nano
pip install -r requirements.txt
python cargar.py # carga y genera
python chatear.py # chat por consola
from yvyrai_nano import cargar_modelo, construir_prompt, generar
modelo, tok, cfg = cargar_modelo(".", ema=True)
# La plantilla del entrenamiento es OBLIGATORIA. Sin ella el modelo continua
# texto como si fuera una pagina web, porque el 82.5% de su corpus es web.
prompt = construir_prompt("Explica que es la fotosintesis.")
# iters = profundidad de deliberacion. 7 es el optimo medido.
print(generar(modelo, tok, prompt, max_new_tokens=80, iters=7))
La plantilla exacta, si la querés armar a mano:
<|bos|><|sistema|>{sistema}<|usuario|>{pregunta}<|respuesta|>
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.
| 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).
| 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% |
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:
.py — CulturaX filtrado por dominio paraguayo. Es donde vive el
registro real (voseo, lexico local, prensa, blogs), y la licencia ya esta
resuelta.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.
Para la arquitectura, citar el preprint (es lo que esta registrado y fechado):
@misc{yvyrai2026,
title = {YvyrAI: A Spanish-First Recurrent-Deliberation Language Model
Architecture with Internal Verification, Conditional Repair,
and Adaptive Compute},
author = {Acosta Ramírez, Juan Manuel and Irrazábal Ruiz Díaz, Mauricio José},
year = {2026},
publisher = {Zenodo},
doi = {10.5281/zenodo.20533759},
url = {https://doi.org/10.5281/zenodo.20533759}
}
Para estos pesos en concreto:
@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://huggingface.co/Manuel12435/YvyrAI-100m-Nano},
note = {105.86M parametros, 891,135,906 tokens}
}
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.