Downloads · 30 days
3.2K
16% of all-time downloads
KristianS7/Ouro-1.4B
Ouro-1.4B is a text generation model from KristianS7. Use it when you need the model to write or continue text. It is set up for transformers. The card lists the license as apache-2.0.
Downloads · 30 days
3.2K
16% of all-time downloads
All-time downloads
19.8K
Public
Parameters
1.4B
2.9 GB on disk
Likes
2
Public
Click a slice to open those files.
.safetensors2.9 GB · 100%
How the weights are stored.
BF161.4B · 100%
From the Hugging Face model README
model.lookahead_exit_gate of the CDB paper, which predicts the exit one step in advance.📚 Paper • 🏠 Project Page

⚠️ IMPORTANT: This model is intended for research purposes only. It is provided as-is without warranties for production use.
Ouro-1.4B is a 1.4 billion parameter Looped Language Model (LoopLM) that achieves exceptional parameter efficiency through iterative shared-weight computation.

The model's computational behavior can be configured through the config.json file:
{
"total_ut_steps": 4,
"early_exit_threshold": 1.0
}
total_ut_steps: Controls the number of recurrent steps (default: 4). You can adjust this value to trade off between performance and computation time.early_exit_threshold: Controls the adaptive exit mechanism (default: 1.0). Lower values encourage earlier exit, while 1.0 means always use all steps.
When using the Transformers library, the model will always execute the full number of total_ut_steps and select the exited loop state afterwards. Later tokens can therefore attend to KV entries from recurrent depths that earlier tokens would not have reached under actual early exit. Use Loop-SGLang for last-exited KV and early-exit compute savings.Example: Modify recurrent steps
from transformers import AutoConfig, AutoModelForCausalLM
config = AutoConfig.from_pretrained("KristianS7/Ouro-1.4B", trust_remote_code=True)
config.total_ut_steps = 3 # Use 3 recurrent steps instead of 4
model = AutoModelForCausalLM.from_pretrained(
"KristianS7/Ouro-1.4B",
config=config,
device_map="auto",
trust_remote_code=True
)
Note: vLLM does not currently support the adaptive exit feature due to its inference optimization characteristics. When using vLLM, the model will always execute the full number of
total_ut_steps. For adaptive exit use, Loop-SGLang instead.
Ouro-1.4B is based on the decoder-only Transformer architecture with parameter sharing across recurrent steps:
| Configuration | Value |
|---|---|
| Parameters | 1.4B |
| Layers | 24 |
| Recurrent Steps | 4 |
| Hidden Size | 2048 |
| Attention Heads | Multi-Head Attention (MHA) |
| FFN Activation | SwiGLU |
| Position Embedding | RoPE |
| Vocabulary Size | 49,152 |
| Context Length | 4K (training), extendable to 64K |
| Normalization | Sandwich RMSNorm |
⚠️ IMPORTANT: Works with transformers==5.9.0.
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "KristianS7/Ouro-1.4B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
device_map="auto",
torch_dtype="auto",
trust_remote_code=True
)
# Generate text
inputs = tokenizer("The future of AI is", return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
We thank @Antizana for the KV cache fix merged from ouro-cache-fix, which resolved a critical compatibility issue with transformers>=4.56.0.
@article{zhu2025scaling,
title={Scaling Latent Reasoning via Looped Language Models},
author={Zhu, Rui-Jie and Wang, Zixuan and Hua, Kai and Zhang, Tianyu and Li, Ziniu and Que, Haoran and Wei, Boyi and Wen, Zixin and Yin, Fan and Xing, He and others},
journal={arXiv preprint arXiv:2510.25741},
year={2025}
}
This model is licensed under Apache-2.0. See the LICENSE file for details.