CoolFace
Modelpublic

rodin-llm/rodin-1b

sourceHugging Faceapache-2.0updated 3mo agoView on Hugging Face
2likes299downloads
Model Card

<!-- NOTE DE MAINTENANCE / MAINTENANCE NOTE Ce document est bilingue (EN + FR). Si tu modifies une section, pense a repercuter le changement dans les DEUX langues. This document is bilingual (EN + FR). If you edit a section, remember to update BOTH language blocks. -->

RODIN-1B (base)

A French language model trained from scratch — solo, on consumer-grade hardware. Un modele de langage francais entraine de zero — en solo, sur du materiel grand public.

[🇬🇧 English](#english) · [🇫🇷 Français](#français)

This is the base pretrained model. For the conversational, instruction-tuned variant, see `rodin-llm/rodin-1b-instruct`. Ceci est le modele de base pre-entraine. Pour la variante conversationnelle, voir `rodin-llm/rodin-1b-instruct`.

💻 Full source code / Code source complet : github.com/rodin-llm/rodin The complete pipeline — data, tokenizer, pretraining, SFT, export, spot orchestration. Le pipeline complet — données, tokenizer, pré-entraînement, SFT, export, orchestration spot.

<a name="english"></a>

🇬🇧 English

Overview

RODIN-1B is a 1.24-billion-parameter, French-only causal language model trained from scratch by a single person, as an open and reproducible research project. RODIN stands for Research Open Deep Intelligence Natively-french.

This is not a fine-tune or a derivative of an existing model. Every stage was built end to end: dataset collection and cleaning, a custom French BPE tokenizer, and pretraining.

This repository hosts the base pretrained model: a foundation model, suitable for further fine-tuning or for research on what a from-scratch 1B French model learns. It is not instruction-tuned and will not behave as a chat assistant — for that, use `rodin-1b-instruct`.

Why this model exists

The goal was never to compete with large, well-funded French models on raw benchmark scores — that would be a losing game by design. For scale: comparable French open-source efforts were trained on 3,000 billion tokens using hundreds of H100 GPUs on national supercomputers. RODIN-1B was trained on 32 billion tokens, by one person, on a rented spot B200 instance plus a single RTX 3090 for local iteration.

The value of RODIN is pedagogical and demonstrative: it shows what one motivated individual can build from scratch, end to end, with a small budget — and it documents every decision honestly, including the limitations.

Model description

PropertyValue
Parameters1.238 B
ArchitectureLLaMA-style (RoPE, RMSNorm, SwiGLU, causal SDPA attention)
Hidden size2048
Layers22
Attention heads16 (no GQA, n_kv_heads = n_heads)
FFN intermediate size5461
Vocabulary64,000 (custom SentencePiece BPE, trained on French)
Context length2048 tokens
RoPE theta10,000
RMSNorm eps1e-5
Weight tyingyes (input/output embeddings tied)
Training dtypebfloat16

Training data

RODIN-1B was pretrained exclusively on open or public-domain French data. Sources:

SourceNatureLicense
HPLTWeb-crawl corpusCC0 (packaging)
CC100Web-crawl corpus (Common Crawl derived)Permissive
Wikipedia (FR)EncyclopediaCC BY-SA
Wikisource (FR)Public-domain textsCC BY-SA / public domain
Pleias — booksPublic-domain / open booksOpen / public domain
Pleias — newsOpen newspapersOpen / public domain
LégifranceFrench legal/public documentsOpen license

Honest note on provenance. For web-crawl sources (HPLT, CC100), the open license covers the packaging of the dataset, not an individual guarantee on every underlying document. The Pleias corpora are specifically curated to be uncopyrighted or freely licensed and are the most provenance-safe part of the corpus. Wikipedia and Wikisource are credited here in accordance with their attribution (BY) terms.

Evaluation — FrenchBench

Evaluated with EleutherAI's lm-evaluation-harness, task group french_bench, 3-shot, full test sets (OrangeSum excluded due to a datasets library incompatibility).

TaskMetricScore
Vocabularyacc0.773
Grammaracc0.765
Reading comprehensionacc0.606
BoolQAacc0.573
Topic-based NLIacc_norm0.498
HellaSwagacc_norm0.424
FQuAD v2 (bool)acc0.500
XNLIacc0.333
ARC challengeacc_norm0.265
Triviaf10.245
FQuAD v2 (genq)f10.165
FQuAD v2f10.095

By category: Linguistic competence 0.68 · Reasoning (MCQ) 0.40 · Generative QA 0.16

[image]

[image]

How to read these results. The standout results are grammar (0.77) and vocabulary (0.77) — the direct payoff of a French-only, quality corpus with a dedicated French tokenizer. Reasoning (ARC, HellaSwag) and exact-match QA are low, which is expected for a 1B model trained on 32B tokens. RODIN's value is not its raw score but its demonstration of from-scratch training under tight constraints.

Intended use & limitations

Intended use. Research, education, a foundation for further fine-tuning, and study of from-scratch French LM training. This is a base model, not a chat assistant.

Limitations.

  • Size. At 1.24B parameters, world knowledge and reasoning are limited; the model hallucinates on precise facts.
  • Base model. Not instruction-tuned. It completes text, it does not follow instructions or hold a conversation.
  • No safety tuning. No refusal or safety data was used. The model may produce harmful, biased, or inappropriate content. Not suitable for unsupervised or public-facing deployment.
  • French only, context limited to 2048 tokens.

Usage

python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_id = "rodin-llm/rodin-1b"
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16).cuda()

prompt = "La photosynthèse est"
ids = tok(prompt, return_tensors="pt").to("cuda")
out = model.generate(**ids, max_new_tokens=80, temperature=0.7, top_p=0.9)
print(tok.decode(out[0], skip_special_tokens=True))

Training procedure (summary)

  • Pretraining: 478,000 steps, ~32B French tokens, on a rented spot B200 instance (bfloat16).
  • Tokenizer: custom 64K SentencePiece BPE trained on French data.

License

Released under the Apache 2.0 license.

Acknowledgements & transparency

Carried out by one person, with AI assistance openly acknowledged throughout. Thanks to EleutherAI (evaluation), the HPLT and Pleias teams (data), Wikimedia, and the llama.cpp / Ollama / LM Studio projects.

bibtex
@misc{rodin1b2026,
  title  = {RODIN-1B: A French Language Model Trained From Scratch},
  author = {RODIN},
  year   = {2026},
  howpublished = {\url{https://huggingface.co/rodin-llm/rodin-1b}}
}

<a name="français"></a>

🇫🇷 Français

Présentation

RODIN-1B est un modèle de langage causal uniquement francophone, de 1,24 milliard de paramètres, entraîné de zéro par une seule personne, dans le cadre d'un projet de recherche ouvert et reproductible. RODIN signifie Research Open Deep Intelligence Natively-french.

Ce n'est ni un fine-tune ni un dérivé d'un modèle existant. Chaque étape a été construite de bout en bout : collecte et nettoyage des données, tokenizer BPE français maison, et pré-entraînement.

Ce dépôt héberge le modèle de base pré-entraîné : un modèle de fondation, adapté à un fine-tuning ultérieur ou à l'étude de ce qu'un modèle français de 1B apprend from scratch. Il n'est pas instruction-tuné et ne se comporte pas comme un assistant — pour cela, utilisez `rodin-1b-instruct`.

Pourquoi ce modèle existe

L'objectif n'a jamais été de rivaliser en score brut avec les gros modèles français bien financés — ce serait perdu d'avance, par construction. Pour situer : des projets français open source comparables ont été entraînés sur 3 000 milliards de tokens avec des centaines de GPU H100 sur des supercalculateurs nationaux. RODIN-1B a été entraîné sur 32 milliards de tokens, par une seule personne, sur une instance B200 spot louée à l'heure et une seule RTX 3090 pour l'itération locale.

La valeur de RODIN est pédagogique et démonstrative : il montre ce qu'une personne motivée peut construire de zéro, de bout en bout, avec un petit budget — et il documente honnêtement chaque décision, limites comprises.

Description du modèle

PropriétéValeur
Paramètres1,238 milliard
ArchitectureStyle LLaMA (RoPE, RMSNorm, SwiGLU, attention causale SDPA)
Dimension cachée2048
Couches22
Têtes d'attention16 (pas de GQA, n_kv_heads = n_heads)
Dimension FFN5461
Vocabulaire64 000 (BPE SentencePiece maison, entraîné sur du français)
Longueur de contexte2048 tokens
RoPE theta10 000
RMSNorm eps1e-5
Weight tyingoui (embeddings entrée/sortie liés)
Précision d'entraînementbfloat16

Données d'entraînement

RODIN-1B a été pré-entraîné exclusivement sur des données françaises ouvertes ou du domaine public. Sources :

SourceNatureLicence
HPLTCorpus web-crawlCC0 (packaging)
CC100Corpus web-crawl (dérivé de Common Crawl)Permissive
Wikipédia (FR)EncyclopédieCC BY-SA
Wikisource (FR)Textes du domaine publicCC BY-SA / domaine public
Pleias — livresLivres libres / domaine publicLibre / domaine public
Pleias — presseJournaux ouvertsLibre / domaine public
LégifranceDocuments juridiques et publics françaisLicence ouverte

Note honnête sur la provenance. Pour les sources web-crawl (HPLT, CC100), la licence ouverte couvre le packaging du dataset, pas une garantie individuelle sur chaque document. Les corpus Pleias sont spécifiquement constitués de données non soumises au droit d'auteur ou librement licenciées : c'est la partie la plus sûre du corpus en matière de provenance. Wikipédia et Wikisource sont crédités conformément à leurs clauses d'attribution (BY).

Évaluation — FrenchBench

Évalué avec lm-evaluation-harness d'EleutherAI, groupe french_bench, 3-shot, jeux de test complets (OrangeSum exclu pour incompatibilité de la librairie datasets).

TâcheMétriqueScore
Vocabulaireacc0,773
Grammaireacc0,765
Compréhension écriteacc0,606
BoolQAacc0,573
NLI thématiqueacc_norm0,498
HellaSwagacc_norm0,424
FQuAD v2 (bool)acc0,500
XNLIacc0,333
ARC challengeacc_norm0,265
Triviaf10,245
FQuAD v2 (genq)f10,165
FQuAD v2f10,095

Par catégorie : Compétence linguistique 0,68 · Raisonnement (QCM) 0,40 · QA génératif 0,16

[image]

[image]

Comment lire ces résultats. Les meilleurs résultats sont la grammaire (0,77) et le vocabulaire (0,77) — le bénéfice direct d'un corpus français de qualité avec un tokenizer dédié. Le raisonnement (ARC, HellaSwag) et le QA en correspondance exacte sont faibles, ce qui est attendu pour un 1B entraîné sur 32B tokens. La valeur de RODIN n'est pas son score brut mais sa démonstration d'un entraînement from scratch sous fortes contraintes.

Usage prévu & limites

Usage prévu. Recherche, éducation, base pour un fine-tuning ultérieur, étude de l'entraînement de LM français from scratch. C'est un modèle de base, pas un assistant.

Limites.

  • Taille. À 1,24B paramètres, connaissances et raisonnement limités ; hallucine sur les faits précis.
  • Modèle de base. Non instruction-tuné. Il complète du texte, il ne suit pas d'instructions et ne tient pas de conversation.
  • Aucun safety tuning. Aucune donnée de refus ou de sécurité. Le modèle peut produire des contenus nuisibles, biaisés ou inappropriés. Non adapté à un déploiement public ou non supervisé.
  • Français uniquement, contexte limité à 2048 tokens.

Utilisation

python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_id = "rodin-llm/rodin-1b"
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16).cuda()

prompt = "La photosynthèse est"
ids = tok(prompt, return_tensors="pt").to("cuda")
out = model.generate(**ids, max_new_tokens=80, temperature=0.7, top_p=0.9)
print(tok.decode(out[0], skip_special_tokens=True))

Procédure d'entraînement (résumé)

  • Pré-entraînement : 478 000 steps, ~32B tokens français, sur une instance B200 spot louée (bfloat16).
  • Tokenizer : BPE SentencePiece 64K maison, entraîné sur des données françaises.

Licence

Publié sous licence Apache 2.0.

Remerciements & transparence

Mené par une seule personne, avec une assistance IA assumée et transparente tout du long. Merci à EleutherAI (évaluation), aux équipes HPLT et Pleias (données), à Wikimedia, et aux projets llama.cpp / Ollama / LM Studio.

bibtex
@misc{rodin1b2026,
  title  = {RODIN-1B: A French Language Model Trained From Scratch},
  author = {RODIN},
  year   = {2026},
  howpublished = {\url{https://huggingface.co/rodin-llm/rodin-1b}}
}