Reproduire DeepSeek-R1 : Guide Complet et Ouvert pour les Modèles d'IA
DeepSeek-R1 est un modèle d'IA de pointe. Cet article vous guide à travers le projet Open R1, une initiative pour reproduire et améliorer ce modèle de manière collaborative et transparente. Découvrez comment vous pouvez contribuer et bénéficier de cette reproduction de DeepSeek-R1.
Pourquoi Open R1 est Important pour l'IA ?
Le projet Open R1 vise à rendre reproductible le pipeline complet de DeepSeek-R1. L'objectif est simple : démocratiser l'accès à cette technologie et favoriser l'innovation ouverte. Il s'agit d'un effort collaboratif pour construire sur les fondations de DeepSeek-R1 et progresser ensemble dans le domaine de l'IA.
Comment Commencer avec Open R1 : Installation Facile
Voici les étapes simples pour vous lancer dans le projet Open R1, assurant une installation sans heurts.
- Créer un environnement virtuel Python: Utilisez Conda pour isoler vos dépendances.
conda create -n openr1 python=3.11 && conda activate openr1
- Installer vLLM: Suivez ces instructions pour installer vLLM, essentiel pour le fonctionnement du projet.
pip install vllm==0.6.6.post1 # Pour HF (cluster only has CUDA 12.1) pip install vllm==0.6.6.post1 --extra-index-url https://download.pytorch.org/whl/cu121
- Installer les dépendances spécifiques: Adaptez les installations à vos besoins spécifiques.
pip install -e ".[dev]"
- Se connecter à vos comptes Hugging Face et Weights and Biases: Authentifiez-vous pour accéder aux ressources nécessaires.
huggingface-cli login wandb login
-
Vérifier l'installation de Git LFS: Assurez-vous qu'il est en place pour gérer les modèles et les ensembles de données volumineux.
git-lfs --version
Si non installé :
sudo apt-get install git-lfs
Entraînement des Modèles avec Open R1 : SFT et GRPO
Open R1 offre deux méthodes d'entraînement distinctes : SFT (Supervised Fine-Tuning) et GRPO (Generative Reward Policy Optimization). Explorez les options et choisissez celle qui correspond le mieux à vos objectifs.
Supervised Fine-Tuning (SFT)
Pour affiner avec SFT un modèle sur un ensemble de données spécifique, exécutez la commande suivante. Notez que ces commandes sont configurées pour un nœud de 8 GPU H100 (80 Go). Vous devrez peut-être ajuster la taille du lot et le nombre d'étapes d'accumulation du gradient en fonction de votre matériel.
accelerate launch --config_file=configs/zero3.yaml src/open_r1/sft.py \
--model_name_or_path Qwen/Qwen2.5-Math-1.5B-Instruct \
--dataset_name HuggingFaceH4/Bespoke-Stratos-17k \
--learning_rate 2.0e-5 \
--num_train_epochs 1 \
--packing \
--max_seq_length 4096 \
--per_device_train_batch_size 4 \
--per_device_eval_batch_size 4 \
--gradient_accumulation_steps 4 \
--gradient_checkpointing \
--bf16 \
--logging_steps 5 \
--eval_strategy steps \
--eval_steps 100 \
--output_dir data/Qwen2.5-1.5B-Open-R1-Distill
Generative Reward Policy Optimization (GRPO)
Pour exécuter l’entraînement GRPO, utilisez cette commande pour un modèle de DeepSeek-R1.
accelerate launch --config_file configs/zero3.yaml src/open_r1/grpo.py \
--output_dir DeepSeek-R1-Distill-Qwen-7B-GRPO \
--model_name_or_path deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
--dataset_name AI-MO/NuminaMath-TIR \
--max_prompt_length 256 \
--per_device_train_batch_size 1 \
--gradient_accumulation_steps 16 \
--logging_steps 10 \
--bf16
Évaluation des Modèles avec Lighteval
Évaluez vos modèles avec l'outil lighteval
et des tâches personnalisées définies dans src/open_r1/evaluate.py
. Optimisez le débit en utilisant le parallélisme de données ou de tenseurs, selon la taille de votre modèle. Voici un exemple pour les modèles qui tiennent sur un seul GPU :
MODEL=deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B
MODEL_ARGS="pretrained=$MODEL,dtype=float16,max_model_length=32768,gpu_memory_utilisation=0.8"
TASK=aime24
OUTPUT_DIR=data/evals/$MODEL
lighteval vllm $MODEL_ARGS "custom|$TASK|0|0" \
--custom-tasks src/open_r1/evaluate.py \
--use-chat-template \
--system-prompt="Please reason step by step, and put your final answer within \boxed{}." \
--output-dir $OUTPUT_DIR
Génération de Données avec Distilabel
Explorez la génération de données synthétiques en utilisant Distilabel pour améliorer et diversifier vos ensembles de données. Utilisez des modèles distillés ou DeepSeek-R1 lui-même pour créer de nouvelles données.
Distillation et Génération de données
Pour générer des données à partir d'un modèle R1 distillé, installez d'abord les dépendances :
pip install "distilabel[vllm]>=1.5.2"
Sauvegardez le snippet suivant dans un fichier nommé pipeline.py
, et exécutez-le avec python pipeline.py
:
Contribuer au Projet Open R1
Vos contributions sont essentielles au succès d'Open R1. Si vous souhaitez approfondir l'Open R1, vous pouvez consulter notre liste des 17 principaux contributeurs.
Vous pouvez également vous référer aux issues pour trouver des tâches et des axes d'amélioration.
DeepSeek R1: Une initiative Open Source pour l'Avenir de l'IA
Le projet Open R1 est une initiative passionnante qui pourrait influencer considérablement le développement futur de l'IA open source. En reproduisant et en améliorant DeepSeek-R1, la communauté peut créer des bases solides pour des avancées futures. Rejoignez ce projet pour façonner l'avenir de l'IA !