Model variants
Table with columns: Model, Description| Model | Description |
|---|
| Luth-2-2B | Original checkpoint in native format. Best for fine-tuning or inference with Transformers, vLLM and SGLang. |
| Luth-2-2B-GGUF | Quantized format for llama.cpp and compatible tools. Optimized for CPU inference and reduced memory usage. |
Training
Luth-2-2B is post-trained from Qwen3.5-2B in two stages:
- Supervised fine-tuning on Luth-2-Post-Training-SFT, a 3B-token French mixture spanning math (37.2%), knowledge (27.9%), code (22.2%), instruction following (6.5%) and tool calling (6.3%). Prompts were translated from English SFT datasets and answers regenerated with strong open-source teachers.
- Multi-domain on-policy distillation (MOPD). Three specialists (math, code, instruction following) are trained separately with GRPO on Luth-2-Post-Training-RL, then distilled back into the SFT student.
Inference
Luth-2-2B is supported by Transformers, vLLM, SGLang and more.
Quick start with Transformers:
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
model_id = "kurakurai/Luth-2-2B"
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="auto",
dtype="bfloat16",
)
tokenizer = AutoTokenizer.from_pretrained(model_id)
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
prompt = "Quelle est la capitale de la France?"
input_ids = tokenizer.apply_chat_template(
[{"role": "user", "content": prompt}],
add_generation_prompt=True,
return_tensors="pt",
tokenize=True,
)["input_ids"].to(model.device)
output = model.generate(
input_ids,
do_sample=True,
temperature=0.8,
top_p=0.95,
top_k=20,
max_new_tokens=512,
streamer=streamer,
)
Evaluation
Evaluations can be reproduced using our GitHub repository. The benchmarks are French subsets or verified translations, scored with temperature=0.6, top_p=0.95, top_k=20, thinking disabled, averaged over 10 runs.
Table with columns: French Benchmarks, Luth-2-2B, Luth-1.7B-Instruct, Qwen3.5-2B| French Benchmarks | Luth-2-2B | Luth-1.7B-Instruct | Qwen3.5-2B |
|---|
| MGSM-rev2 | 86.52 | 75.72 | 64.60 |
| AIME 24 | 17.00 | 10.33 | 11.67 |
| AIME 25 | 19.00 | 7.00 | 6.67 |
| Math-500 | 81.52 | 65.26 | 65.06 |
See the French LLM Leaderboard for comparisons across models.
Questions or feedback? Reach us on LinkedIn: Maxence Lasbordes and Guillaume Pradel.
Citation
@misc{luth2,
title = {Luth-2: Pushing the French Capabilities of SLMs with MOPD},
author = {Maxence Lasbordes and Guillaume Pradel},
year = {2026},
url = {https://huggingface.co/blog/MaxLSB/luth-2}
}