--- base_model: unsloth/Qwen3-4B-Instruct-2507-unsloth-bnb-4bit library_name: peft license: apache-2.0 language: - fr - en pipeline_tag: text-generation tags: - lora - transformers - qwen3 - pokemon - dasd - distillation - reasoning datasets: - pokemon-dasd-dataset --- # Pokemon DASD LoRA Adapter Adaptateur LoRA pour Qwen3-4B fine-tuné sur un dataset de questions/réponses Pokémon avec raisonnement structuré, utilisant la méthode **DASD** (Distribution-Aligned Sequence Distillation). ## Description du modèle Ce modèle est un adaptateur LoRA entraîné en 2 stages selon la méthodologie DASD : - **Stage 1** : Entraînement sur des données générées à basse température (tau=0.3) pour la stabilité - **Stage 2** : Entraînement sur des données générées à haute température (tau=0.9) pour la diversité Le modèle génère des réponses avec un raisonnement structuré dans des balises `...`. ## Détails techniques | Paramètre | Valeur | |-----------|--------| | Modèle de base | `unsloth/Qwen3-4B-Instruct-2507-unsloth-bnb-4bit` | | Type de fine-tuning | LoRA | | LoRA rank (r) | 8 | | LoRA alpha | 16 | | Modules ciblés | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj | | Framework | LLaMA-Factory + PEFT 0.18.1 | ### Hyperparamètres d'entraînement | Stage | Epochs | Learning Rate | Batch Size | Loss finale | |-------|--------|---------------|------------|-------------| | Stage 1 (tau=0.3) | 5 | 1e-4 | 1 (grad_accum=4) | 0.772 | | Stage 2 (tau=0.9) | 3 | 5e-5 | 1 (grad_accum=4) | 0.882 | ## Utilisation ```python from transformers import AutoModelForCausalLM, AutoTokenizer from peft import PeftModel # Charger le modèle de base base_model = AutoModelForCausalLM.from_pretrained( "unsloth/Qwen3-4B-Instruct-2507-unsloth-bnb-4bit", device_map="auto", trust_remote_code=True ) tokenizer = AutoTokenizer.from_pretrained( "unsloth/Qwen3-4B-Instruct-2507-unsloth-bnb-4bit", trust_remote_code=True ) # Charger l'adaptateur LoRA model = PeftModel.from_pretrained(base_model, "simoncharr/pokemon-dasd-lora-adapter") # Générer une réponse messages = [ {"role": "system", "content": "Tu es un expert Pokémon. Raisonne étape par étape dans des balises ... avant de donner ta réponse finale."}, {"role": "user", "content": "Quelle est l'efficacité d'une attaque de type Feu contre un Pokémon de type Eau/Sol ?"} ] inputs = tokenizer.apply_chat_template(messages, return_tensors="pt").to(model.device) outputs = model.generate(inputs, max_new_tokens=1024, temperature=0.7) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) ``` ## Dataset d'entraînement Ce modèle a été entraîné sur le dataset [pokemon-dasd-dataset](https://huggingface.co/datasets/simoncharr/pokemon-dasd-dataset) contenant 600 exemples (300 par stage) de questions Pokémon avec réponses détaillées et raisonnement structuré. ### Catégories couvertes - Efficacité des types - STAB et calcul de dégâts - Évolutions et conditions - Analyse de statistiques - Stratégie compétitive (Little Cup, OU, VGC) ## Méthodologie DASD La méthode DASD (Distribution-Aligned Sequence Distillation) consiste à : 1. Générer des réponses avec un modèle "teacher" à différentes températures 2. Calculer les log-probabilités pour identifier les "Teacher Sentences" (où le teacher est confiant mais l'étudiant ne l'est pas) 3. Filtrer les données via Divergence-Aware Sampling (DAS) 4. Entraîner en 2 stages : stabilité (basse temp) puis diversité (haute temp) ## Limitations - Le modèle peut générer des informations incorrectes sur des Pokémon fictifs ou mal nommés - Les réponses sont optimisées pour le français - Le raisonnement peut parfois être redondant ## Citation ```bibtex @misc{pokemon-dasd-2025, title={Pokemon DASD LoRA Adapter}, author={[Votre nom]}, year={2025}, howpublished={HuggingFace Hub} } ``` ## Références - [DASD Paper - Distribution-Aligned Sequence Distillation](https://github.com/D2I-ai/dasd-thinking) - [LLaMA-Factory](https://github.com/hiyouga/LLaMA-Factory) - [Qwen3](https://huggingface.co/Qwen)