llama-falc — Simplification de textes administratifs en FALC 🇫🇷

llama-falc est un modèle fine-tuné à partir de Llama 3.2 3B Instruct, entraîné sur des paires de textes administratifs français ↔ versions FALC (Facile À Lire et à Comprendre).

⚠️ Note honnête : les résultats de ce modèle sont décevants. Ce repository documente un projet d'apprentissage complet, incluant les échecs et les décisions prises en cours de route. Le détail est dans la section Retour d'expérience.


À propos du FALC

Le FALC est une méthode normée de simplification du langage, définie par 53 règles européennes (guide Unapei), visant à rendre l'information accessible aux personnes en situation de handicap cognitif, d'illettrisme ou non-francophones. Obligation légale pour le service public français depuis 2005.


Utilisation

from mlx_lm import load, generate

model, tokenizer = load("gpnd/llama-falc")

texte_source = "Dans le cadre de la mise en œuvre des dispositions réglementaires relatives à l'attribution des prestations sociales, il convient de constituer un dossier de demande auprès des services compétents."

prompt = f"[INST] Transforme ce texte administratif en FALC.\n\nTexte :\n{texte_source} [/INST]"
response = generate(model, tokenizer, prompt=prompt, max_tokens=512)
print(response)

Méthodologie & pipeline

1. Collecte des données (Firecrawl + scraping)

L'objectif initial était de constituer un dataset de paires alignées {texte administratif → version FALC} à partir de sites gouvernementaux français.

Un bot de scraping a été construit avec Firecrawl, en utilisant la fonction map pour identifier des sites proposant une version FALC et une version standard en HTML. 22 pages ont été détectées, chacune avec sa contrepartie.

Problème rencontré : 22 pages entières (x2) dépassent la fenêtre de contexte du LLM utilisé pour l'alignement. Le contenu a dû être fractionné en éléments plus petits avant traitement.

2. Construction du dataset (Python + Claude Sonnet 4.5)

Un script Python a été développé pour transformer les 22 pages en paires exploitables pour le fine-tuning. Claude Sonnet 4.5 a été utilisé comme modèle d'alignement.

Problème principal : la qualité des paires générées s'est révélée insuffisante. Les correspondances entre textes sources et versions FALC manquaient de précision — une correspondance thématique n'est pas une correspondance d'alignement. Même après amélioration du code Python pour affiner les paires, la qualité est restée limitée.

Insight clé : la rareté des paires gold strictement alignées sur internet est le vrai verrou du problème. La plupart des pages FALC en ligne sont des adaptations thématiques, pas des traductions directes d'un texte source identifiable.

3. Fine-tuning (MLX + Apple Silicon)

Plusieurs environnements ont été testés avant de trouver une configuration fonctionnelle :

Environnement Résultat
AutoTrain HuggingFace Fonctionnalité supprimée
Google Colab (GPU T4) Échec de configuration
VSCode + kernel GPU T4 Échec de configuration
VSCode + MLX (Apple Silicon) ✅ Fonctionnel

Le modèle retenu est Llama 3.2 3B Instruct (bf16) — choix guidé par les contraintes matérielles (Apple Silicon, MLX framework) plutôt que par une évaluation comparative.

4. Résultats

Les outputs du modèle fine-tuné sont de mauvaise qualité. Le modèle ne produit pas de textes FALC conformes aux règles européennes.

Hypothèses sur les causes d'échec :

  • Dataset insuffisant en volume (~22 paires) et en qualité d'alignement
  • Modèle de base trop petit (3B paramètres) pour une tâche de transformation stylistique aussi contrainte
  • Absence de filtre qualité sur les données d'entraînement (pas de rule checker implémenté avant entraînement)

Retour d'expérience

Ce projet est documenté tel quel, y compris l'échec, parce que le processus a de la valeur indépendamment du résultat :

  • Pipeline ML end-to-end réalisé : collecte → alignement → fine-tuning → évaluation
  • Verrou identifié sur les données FALC : le problème n'est pas le modèle, c'est la rareté des paires gold strictement alignées en français
  • Leçon sur le fine-tuning : la qualité du dataset prime sur tout le reste — entraîner sur 22 paires mal alignées produit un modèle qui apprend du bruit
  • Connaissance du stack : MLX, QLoRA, format d'instruction Llama, pipeline de scraping Firecrawl

Une V2 défendable nécessiterait : 50+ paires gold validées manuellement + filtre qualité automatique (rule checker Python) avant entraînement + modèle de base plus grand (7B minimum).


Stack technique

  • Fine-tuning : MLX (Apple Silicon), QLoRA
  • Scraping : Firecrawl (fonction map)
  • Alignement des paires : Claude Sonnet 4.5
  • Modèle de base : Llama 3.2 3B Instruct bf16

Références


Auteur

gpnd — PM IA, projet portfolio d'apprentissage du cycle ML complet.

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

Model tree for gpnd/llama-falc

Finetuned
(1)
this model

Paper for gpnd/llama-falc