Qwen2.5-7B-Instruct + LoRA « brainrot » (FR / EN)

Adapter LoRA qui fait parler Qwen2.5-7B-Instruct comme un pote Gen Z : réponses courtes, argot internet et « brainrot », ton taquin. C'est un projet pédagogique de fine-tuning (SFT) : le but est le style, pas la fiabilité ni l'aide concrète.

Ce n'est pas un modèle d'assistant. Il fait des punchlines. Voir « Limites » avant tout usage auprès d'un public.

Utilisation

Le dépôt contient seulement l'adapter. Il faut charger le modèle de base puis l'adapter :

import torch
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer

base = "Qwen/Qwen2.5-7B-Instruct"
adapter = "Dipl0/brain_rot_sft_7b_lora"  # repo privé : être connecté (hf auth login)

tok = AutoTokenizer.from_pretrained(base)
model = AutoModelForCausalLM.from_pretrained(base, dtype=torch.bfloat16, device_map="auto")
model = PeftModel.from_pretrained(model, adapter)

messages = [
    {"role": "system", "content": "Pote français Gen Z, brainrot naturel, drôle et jamais boomer."},
    {"role": "user", "content": "j'ai un partiel de droit constitutionnel lundi"},
]
text = tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tok(text, return_tensors="pt", add_special_tokens=False).to(model.device)
out = model.generate(**inputs, max_new_tokens=60, do_sample=True, temperature=0.8, top_p=0.9)
print(tok.decode(out[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True))

Utilisez un message système proche de ceux de l'entraînement (ci-dessous) : le modèle a été entraîné avec eux, et les réponses se dégradent avec un message très différent.

Données d'entraînement

data_best.jsonl : 2 365 conversations (2 247 pour l'entraînement, 118 pour la validation, tirées au hasard), au format {"messages": [system, user, assistant, ...]} avec un à trois tours de réponse. Environ 17 % sont en français, le reste en anglais.

Messages système (31 variantes), par exemple :

  • You're a genz friend who speaks brainrot. Keep it casual and funny.
  • Pote français Gen Z, brainrot naturel, drôle et jamais boomer.

Construction : mélange de trois fichiers de conversations courtes, dédoublonné. Le fichier français d'origine contenait 10 393 lignes dont 10 020 provenaient de 40 scénarios répétés 250 fois (seulement 660 conversations distinctes) : un premier entraînement dessus mémorisait ces scénarios (loss à 0,001, validation faussée par des doublons entre train et val). Ces scénarios sont ici plafonnés à 3 variantes chacun. Les données sont écrites à la main ou générées à partir de gabarits, pas collectées auprès de personnes réelles.

Entraînement

  • Méthode : SFT avec LoRA ; la loss ne porte que sur les réponses de l'assistant (messages système et utilisateur masqués).
  • LoRA : rang 16, alpha 32, dropout 0,05, sur q/k/v/o/gate/up/down_proj (40 370 176 paramètres entraînables, 0,53 % du modèle).
  • Hyperparamètres : learning rate 1e-4 (cosinus, 5 % de warmup), batch 8, longueur maximale 256 tokens, AdamW, bf16 (adapter en fp32), graine 0. Jusqu'à 3 epochs avec arrêt anticipé.
  • Résultat : val loss 2,244 (epoch 1), 2,193 (epoch 2, conservée), 2,380 (epoch 3 : surapprentissage). L'adapter publié est celui de l'epoch 2.
  • Matériel : un GPU NVIDIA RTX PRO 6000 sur Hugging Face Jobs, quelques minutes.
  • Versions : PEFT 0.21.1.

Évaluation

Préliminaire : lm-evaluation-harness, message système neutre, format de chat, 25 questions par tâche (par sous-tâche pour MMLU). Les écarts de moins de quelques points ne sont pas significatifs à cette taille d'échantillon.

Qwen2.5-7B-Instruct + LoRA
MMLU 0,709 0,725
HellaSwag 0,60 0,64
ARC-Challenge 0,48 0,52

Lecture prudente : le fine-tuning n'a pas dégradé ces scores. Une évaluation sur les jeux complets (avec TruthfulQA et IFEval) est en cours ; ses résultats seront dans bench/. Ces benchmarks ne mesurent pas le style, évalué seulement à la main.

Limites et risques

  • Réponses très courtes et peu utiles : ce sont des punchlines, pas des conseils.
  • Cohérence variable sur les cas nouveaux : correct sur certaines phrases (« le grindset juridique » pour un partiel de droit), incohérent sur d'autres (réponse sans rapport pour « ma coloc a mangé mon yaourt »). Il reprend des tournures vues à l'entraînement (« ratio », « boss final », « grindset »).
  • Peu de français : environ 17 % des données, d'où des écarts de qualité et des réponses parfois en anglais.
  • Textes longs : entraîné sur des messages courts (256 tokens max), il réagit mal à un long texte collé et répond par une formule générique.
  • Aucune sécurité apprise : les données ne contiennent aucun exemple de sujet grave. Sur des sujets sensibles (extrémisme, violences historiques), le modèle peut valider ou banaliser des propos qu'une version de base corrige, ou faire une blague déplacée. Ne pas exposer ce modèle à des utilisateurs sans filtre de modération en amont, ni le présenter comme source d'information fiable.
  • Hérite des limites de Qwen2.5-7B-Instruct (erreurs factuelles, biais).

Pistes d'amélioration

Ajouter des conversations françaises variées, des exemples de sujets graves traités avec le bon ton (refus ou correction), des messages plus longs ; ajouter un modèle de modération devant le modèle ; mesurer sur un jeu de phrases hors scénarios, plusieurs échantillons par phrase.

Licence

Adapter publié sous Apache-2.0, comme le modèle de base Qwen2.5-7B-Instruct. Vérifier les conditions du modèle de base avant toute diffusion.

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 2 Ask for provider support

Model tree for Dipl0/brain_rot_sft_7b_lora

Base model

Qwen/Qwen2.5-7B
Adapter
(2764)
this model

Space using Dipl0/brain_rot_sft_7b_lora 1