Ressources pour le Fine-Tuning des LLM
Une collection organisée de notebooks, ensembles de données, articles, outils et communautés pour le fine-tuning des LLM.
📓 Notebooks Officiels du Cours
Notebooks Spécifiques aux Modules
| Module | Notebook | Description |
|---|---|---|
| Module 4 | Entraînement LoRA | Fine-tuning LoRA de base avec PEFT |
| Module 5 | Entraînement QLoRA | Entraînement quantifié en 4 bits |
| Module 6 | Préparation des Données | Pipelines de formatage des ensembles de données |
| Module 7 | SFTTrainer | Flux de travail complet d'entraînement |
| Module 8 | Entraînement DPO | Optimisation des préférences |
| Module 10 | Déploiement | Exportation et service du modèle |
🤗 Ressources Hugging Face
Bibliothèques Essentielles
| Bibliothèque | Objectif | Installation |
|---|---|---|
| transformers | Chargement et inférence de modèles | pip install transformers |
| peft | Fine-tuning efficace en paramètres | pip install peft |
| trl | Entraînement avec RL et SFT | pip install trl |
| datasets | Chargement et traitement des ensembles de données | pip install datasets |
| accelerate | Entraînement distribué | pip install accelerate |
| bitsandbytes | Quantification | pip install bitsandbytes |
Modèles de Base Recommandés
| Modèle | Paramètres | Cas d'utilisation | Lien HF |
|---|---|---|---|
| Llama-3.1 | 8B/70B | Usage général | meta-llama/Llama-3.1-8B |
| Mistral | 7B | Performance efficace | mistralai/Mistral-7B-v0.3 |
| Qwen2.5 | 0.5B-72B | Multilingue | Qwen/Qwen2.5-7B |
| Phi-3 | 3.8B | Petit mais capable | microsoft/Phi-3-mini-4k-instruct |
| Gemma 2 | 2B/9B/27B | Modèle ouvert de Google | google/gemma-2-9b |
📊 Ensembles de Données d'Entraînement
Ensembles de Données pour l'Instruction Tuning
| Ensemble de Données | Taille | Format | Cas d'utilisation |
|---|---|---|---|
| databricks/dolly-15k | 15K | Alpaca | Instructions générales |
| OpenAssistant/oasst1 | 161K | Conversations | Modèles de chat |
| teknium/OpenHermes-2.5 | 1M+ | ShareGPT | Haute qualité |
| HuggingFaceH4/ultrachat_200k | 200K | Conversations | Chat |
| meta-math/MetaMathQA | 395K | Math | Raisonnement mathématique |
Ensembles de Données de Préférence/DPO
| Ensemble de Données | Paires | Cas d'utilisation |
|---|---|---|
| Anthropic/hh-rlhf | 170K | Utilité & Innocuité |
| argilla/ultrafeedback-binarized | 60K | Préférences générales |
| Intel/orca_dpo_pairs | 12K | Entraînement DPO |
Ensembles de Données de Code
| Ensemble de Données | Taille | Langages |
|---|---|---|
| codeparrot/github-code | Large | Multiple |
| sahil2801/CodeAlpaca-20k | 20K | Multiple |
| iamtarun/python_code_instructions_18k | 18K | Python |
📚 Articles de Recherche
Articles Fondamentaux
| Article | Année | Contribution Clé |
|---|---|---|
| LoRA: Low-Rank Adaptation | 2021 | Introduction de la méthode LoRA |
| QLoRA: Efficient Finetuning | 2023 | LoRA quantifié en 4 bits |
| Prefix-Tuning | 2021 | Prompts continus |
| P-Tuning v2 | 2021 | Deep prompt tuning |
| AdaLoRA | 2023 | Allocation de rang adaptative |
Articles sur l'Alignement
| Article | Année | Contribution Clé |
|---|---|---|
| DPO: Direct Preference Optimization | 2023 | RLHF simplifié |
| ORPO: Monolithic Preference Optimization | 2024 | SFT+alignement combinés |
| Constitutional AI | 2022 | Alignement basé sur des principes |
| RLHF Training at Scale | 2022 | Article InstructGPT |
Articles sur la Fusion de Modèles
| Article | Année | Méthode |
|---|---|---|
| TIES-Merging | 2023 | Résolution de conflits |
| DARE | 2023 | Drop and rescale |
| Model Soups | 2022 | Moyenne des poids |
🛠️ Outils & Cadres
Outils d'Entraînement
| Outil | Objectif | Lien |
|---|---|---|
| Axolotl | CLI de fine-tuning facile | OpenAccess-AI-Collective/axolotl |
| LLaMA-Factory | Cadre de fine-tuning unifié | hiyouga/LLaMA-Factory |
| Unsloth | Fine-tuning 2x plus rapide | unslothai/unsloth |
| MLX | Entraînement sur Apple Silicon | ml-explore/mlx |
Inférence & Déploiement
| Outil | Objectif | Lien |
|---|---|---|
| vLLM | Service à haut débit | vllm-project/vllm |
| Text Generation Inference | Service HuggingFace | huggingface/text-generation-inference |
| llama.cpp | Inférence CPU | ggerganov/llama.cpp |
| Ollama | Exécution locale de modèles | ollama/ollama |
Fusion de Modèles
| Outil | Objectif |
|---|---|
| mergekit | Boîte à outils de fusion de modèles |
| LazyMergeKit | Notebook Colab pour la fusion |
Suivi d'Expériences
| Outil | Objectif |
|---|---|
| Weights & Biases | Suivi d'expériences |
| MLflow | Cycle de vie ML |
| TensorBoard | Visualisation d'entraînement |
☁️ Ressources de Calcul
Fournisseurs de GPU Infonuagiques
| Fournisseur | Idéal Pour | Modèle de Tarification |
|---|---|---|
| Google Colab | Apprentissage, petites expériences | Niveau gratuit + Pro |
| Lambda Labs | Accès A100/H100 | Par heure |
| RunPod | Location flexible de GPU | Par heure |
| Vast.ai | Accès GPU économique | Marketplace |
| AWS SageMaker | Entreprise | Par instance |
Exigences de Mémoire GPU
| Taille du Modèle | FT Complet | QLoRA | LoRA |
|---|---|---|---|
| 7B | ~28GB | ~6GB | ~14GB |
| 13B | ~52GB | ~10GB | ~26GB |
| 70B | ~280GB | ~48GB | ~140GB |
🌐 Communautés
Serveurs Discord
- Hugging Face - Communauté officielle HF
- EleutherAI - Recherche IA open source
- Unsloth - Discussions sur le fine-tuning rapide
Forums & Discussions
- Forums Hugging Face - Discussions techniques
- r/LocalLLaMA - Exécution locale de modèles
- r/MachineLearning - Recherche en ML
Blogs & Infolettres
- Blog Hugging Face - Tutoriels officiels
- Infolettre de Sebastian Raschka - Perspectives en deep learning
- The Batch - Nouvelles IA par Andrew Ng
📖 Livres & Cours
Livres Recommandés
| Livre | Auteur | Focus |
|---|---|---|
| Natural Language Processing with Transformers | Tunstall, von Werra, Wolf | NLP pratique avec HF |
| Build a Large Language Model (From Scratch) | Sebastian Raschka | Fondamentaux des LLM |
Cours en Ligne
| Cours | Plateforme | Focus |
|---|---|---|
| Cours NLP Hugging Face | HF | Transformers & NLP |
| Bootcamp Full Stack LLM | FSDL | LLM en production |
| Fast.ai | Fast.ai | Deep learning |
🧪 Référentiels & Évaluation
Classements LLM
- Classement Ouvert LLM - Comparaison de modèles
- LMSYS Chatbot Arena - Évaluation humaine
- AlpacaEval - Suivi d'instructions
Outils d'Évaluation
| Outil | Objectif |
|---|---|
| lm-evaluation-harness | Référentiels complets |
| HELM | Évaluation holistique |
| MT-Bench | Conversations multi-tours |
💡 Modèles de Démarrage Rapide
Entraînement QLoRA de Base
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training
from trl import SFTTrainer
# Configuration de quantification en 4 bits
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
)
# Charger le modèle
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.1-8B",
quantization_config=bnb_config,
)
# Configuration LoRA
lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05,
task_type="CAUSAL_LM",
)
# Préparer et entraîner
model = prepare_model_for_kbit_training(model)
model = get_peft_model(model, lora_config)
trainer = SFTTrainer(
model=model,
train_dataset=dataset,
# ... arguments d'entraînement
)
trainer.train()