Pantagruel: Unified Self-Supervised Encoders for French Text and Speech

Summary

Pantagruel is a family of self-supervised encoder models for French text and speech, with separate models trained for each modality. Rather than relying only on masked input-level reconstruction, Pantagruel encoders learn contextualized representations in feature space following the data2vec 2.0 / JEPA (Joint-Embedding Predictive Architecture) paradigm.

Pantagruel adopts data2vec 2.0-style teacher–student setup: a student encoder processes partially visible inputs and is trained to predict latent representations produced by a teacher encoder that observes the full, unmasked inputs. The teacher is implemented as an exponential moving average (EMA) of the student. This feature-space prediction objective is used for both speech and text models. For text, it is combined with an additional masked language modeling (MLM) loss to better capture fine-grained syntactic and semantic information.

The models were pre-trained using fairseq library (v0.12.2) and converted to HuggingFace's transformers format. For best compatibility, we recommend using transformers==4.57.0 or 4.56.2, together with tokenizers==0.22.1 and sentencepiece==0.1.99.

Text-only models

Pantagruel text encoders are trained on large-scale French text corpora, including Wikipedia 2019, OSCAR 2019, and CroissantLLM. In addition to feature-space prediction, text models incorporate masked language modeling (MLM) to better capture fine-grained syntactic and semantic information. These models produce strong sentence and token-level representations for downstream NLP tasks.

Note on model naming convention: Models that include camtok in their name use CamemBERT's tokenizer, which is used for comparison our models to a BERT-based counterpart. If no tokenizer is specified, the model uses our custom tokenizer. All text-based models are trained using the data2vec 2.0 masked feature prediction objective. Models with an MLM suffix additionally incorporate the masked language modeling (MLM) objective alongside the main data2vec 2.0 objective. The table below presents the accuracy of the natural language inference task on the French XNLI dataset.

HuggingFace name Model name (paper) Arch/ Params Pretrained dataset Accuracy on XNLI (FR) (dev / test)
text-base-camtok-wiki Pantagruel-B-camtok-Wk Base / 110M French Wikipedia 2019 (4GB) 76.94% / 77.43%
text-base-wiki Pantagruel-B-Wk Base / 125M French Wikipedia 2019 (4GB) 77.40% / 78.41%
text-base-wiki-mlm Pantagruel-B-Wk-MLM Base / 125M French Wikipedia 2019 (4GB) 78.25% / 78.41%
text-base-camtok-oscar Pantagruel-B-camtok-Osc Base / 110M OSCAR 2019 (138GB) 80.40% / 80.53%
text-base-oscar-mlm Pantagruel-B-Osc-MLM Base / 125M OSCAR 2019 (138GB) 81.11% / 81.52%
text-base-croissant-mlm Pantagruel-B-Crs-MLM Base / 125M croissantLLM (1.5GB) 81.05% / 80.69%

For more downstream tasks and evaluation datasets, please refer to our paper.

Usage

Our models can be used with AutoModel and AutoConfig classes to extract features as below. Other common classes for text-related downstream tasks, including AutoModelForMaskedLM, AutoModelForSequenceClassification, AutoModelForMultipleChoice, AutoModelForTokenClassification, and AutoModelForQuestionAnswering are also supported. We are currently working to merge the modeling files into the official Hugging Face repository, which will enable native use of the Pantagruel classes.

import torch
from transformers import AutoTokenizer, AutoModel

# Load the tokenizer and model
model_name = "PantagrueLLM/text-base-wiki-mlm"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModel.from_pretrained(model_name, trust_remote_code=True)
model.eval()

# Example input
sentences = [
    "Bonjour, comment allez-vous ?",
    "Le chat dort sur le tapis."
]

# Tokenize input
inputs = tokenizer(
    sentences,
    padding=True,
    truncation=True,
    return_tensors="pt"
)

# Forward pass to get hidden states
with torch.no_grad():
    outputs = model(**inputs)

# Token-level embeddings
token_embeddings = outputs.last_hidden_state
print(token_embeddings.shape)
# Shape: (batch_size, sequence_length, hidden_size)

Speech-only models

If you want to check out our speech-only models, please visit our speech-only collection for more details.

Citation

If you use these models or find them useful in your research, publications, or applications, please cite the following work:

@article{le2026pantagruel,
  title={Pantagruel: Unified Self-Supervised Encoders for French Text and Speech},
  author={Le, Phuong-Hang and Pelloin, Valentin and Chatelain, Arnault and Bouziane, Maryem and Ghennai, Mohammed and Guan, Qianwen and Milintsevich, Kirill and Mdhaffar, Salima and Mannion, Aidan and Defauw, Nils and others},
  journal={arXiv preprint arXiv:2601.05911},
  year={2026}
}

For more information, see the full paper: https://arxiv.org/abs/2601.05911.

Downloads last month
12
Safetensors
Model size
0.2B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train PantagrueLLM/text-base-wiki-mlm

Collection including PantagrueLLM/text-base-wiki-mlm

Papers for PantagrueLLM/text-base-wiki-mlm