Aller au contenu principal

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​

ModuleNotebookDescription
Module 4Entraînement LoRAFine-tuning LoRA de base avec PEFT
Module 5Entraînement QLoRAEntraînement quantifié en 4 bits
Module 6Préparation des DonnéesPipelines de formatage des ensembles de données
Module 7SFTTrainerFlux de travail complet d'entraînement
Module 8Entraînement DPOOptimisation des préférences
Module 10DéploiementExportation et service du modèle

🤗 Ressources Hugging Face​

Bibliothèques Essentielles​

BibliothèqueObjectifInstallation
transformersChargement et inférence de modèlespip install transformers
peftFine-tuning efficace en paramètrespip install peft
trlEntraînement avec RL et SFTpip install trl
datasetsChargement et traitement des ensembles de donnéespip install datasets
accelerateEntraînement distribuépip install accelerate
bitsandbytesQuantificationpip install bitsandbytes

Modèles de Base Recommandés​

ModèleParamètresCas d'utilisationLien HF
Llama-3.18B/70BUsage généralmeta-llama/Llama-3.1-8B
Mistral7BPerformance efficacemistralai/Mistral-7B-v0.3
Qwen2.50.5B-72BMultilingueQwen/Qwen2.5-7B
Phi-33.8BPetit mais capablemicrosoft/Phi-3-mini-4k-instruct
Gemma 22B/9B/27BModèle ouvert de Googlegoogle/gemma-2-9b

📊 Ensembles de Données d'Entraînement​

Ensembles de Données pour l'Instruction Tuning​

Ensemble de DonnéesTailleFormatCas d'utilisation
databricks/dolly-15k15KAlpacaInstructions générales
OpenAssistant/oasst1161KConversationsModèles de chat
teknium/OpenHermes-2.51M+ShareGPTHaute qualité
HuggingFaceH4/ultrachat_200k200KConversationsChat
meta-math/MetaMathQA395KMathRaisonnement mathématique

Ensembles de Données de Préférence/DPO​

Ensemble de DonnéesPairesCas d'utilisation
Anthropic/hh-rlhf170KUtilité & Innocuité
argilla/ultrafeedback-binarized60KPréférences générales
Intel/orca_dpo_pairs12KEntraînement DPO

Ensembles de Données de Code​

Ensemble de DonnéesTailleLangages
codeparrot/github-codeLargeMultiple
sahil2801/CodeAlpaca-20k20KMultiple
iamtarun/python_code_instructions_18k18KPython

📚 Articles de Recherche​

Articles Fondamentaux​

ArticleAnnéeContribution Clé
LoRA: Low-Rank Adaptation2021Introduction de la méthode LoRA
QLoRA: Efficient Finetuning2023LoRA quantifié en 4 bits
Prefix-Tuning2021Prompts continus
P-Tuning v22021Deep prompt tuning
AdaLoRA2023Allocation de rang adaptative

Articles sur l'Alignement​

ArticleAnnéeContribution Clé
DPO: Direct Preference Optimization2023RLHF simplifié
ORPO: Monolithic Preference Optimization2024SFT+alignement combinés
Constitutional AI2022Alignement basé sur des principes
RLHF Training at Scale2022Article InstructGPT

Articles sur la Fusion de Modèles​

ArticleAnnéeMéthode
TIES-Merging2023Résolution de conflits
DARE2023Drop and rescale
Model Soups2022Moyenne des poids

🛠️ Outils & Cadres​

Outils d'Entraînement​

OutilObjectifLien
AxolotlCLI de fine-tuning facileOpenAccess-AI-Collective/axolotl
LLaMA-FactoryCadre de fine-tuning unifiéhiyouga/LLaMA-Factory
UnslothFine-tuning 2x plus rapideunslothai/unsloth
MLXEntraînement sur Apple Siliconml-explore/mlx

Inférence & Déploiement​

OutilObjectifLien
vLLMService à haut débitvllm-project/vllm
Text Generation InferenceService HuggingFacehuggingface/text-generation-inference
llama.cppInférence CPUggerganov/llama.cpp
OllamaExécution locale de modèlesollama/ollama

Fusion de Modèles​

OutilObjectif
mergekitBoîte à outils de fusion de modèles
LazyMergeKitNotebook Colab pour la fusion

Suivi d'Expériences​

OutilObjectif
Weights & BiasesSuivi d'expériences
MLflowCycle de vie ML
TensorBoardVisualisation d'entraînement

☁️ Ressources de Calcul​

Fournisseurs de GPU Infonuagiques​

FournisseurIdéal PourModèle de Tarification
Google ColabApprentissage, petites expériencesNiveau gratuit + Pro
Lambda LabsAccès A100/H100Par heure
RunPodLocation flexible de GPUPar heure
Vast.aiAccès GPU économiqueMarketplace
AWS SageMakerEntreprisePar instance

Exigences de Mémoire GPU​

Taille du ModèleFT CompletQLoRALoRA
7B~28GB~6GB~14GB
13B~52GB~10GB~26GB
70B~280GB~48GB~140GB

🌐 Communautés​

Serveurs Discord​

Forums & Discussions​

Blogs & Infolettres​


📖 Livres & Cours​

Livres Recommandés​

LivreAuteurFocus
Natural Language Processing with TransformersTunstall, von Werra, WolfNLP pratique avec HF
Build a Large Language Model (From Scratch)Sebastian RaschkaFondamentaux des LLM

Cours en Ligne​

CoursPlateformeFocus
Cours NLP Hugging FaceHFTransformers & NLP
Bootcamp Full Stack LLMFSDLLLM en production
Fast.aiFast.aiDeep learning

🧪 Référentiels & Évaluation​

Classements LLM​

Outils d'Évaluation​

OutilObjectif
lm-evaluation-harnessRéférentiels complets
HELMÉvaluation holistique
MT-BenchConversations 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()

Retour à l'Accueil du Cours