DeepSeek‑R1 오픈 재현

발행: (2026년 6월 11일 PM 10:14 GMT+9)
8 분 소요

Source: Hacker News

DeepSeek‑R1을 완전히 공개한 재현본입니다. 이 저장소는 진행 중인 작업이며, 함께 만들어갑시다!

목차

모델 학습

데이터 생성

Overview

이 저장소의 목표는 R1 파이프라인의 누락된 부분을 채워서 누구나 재현하고 그 위에 확장할 수 있게 하는 것입니다. 프로젝트는 설계가 단순하며 주로 다음으로 구성됩니다.

src/open_r1: 모델을 학습하고 합성 데이터를 생성하는 스크립트를 포함합니다.

  • grpo.py: 주어진 데이터셋에 대해 GRPO로 모델을 학습합니다.

  • sft.py: 데이터셋을 이용해 모델을 간단히 SFT합니다.

  • generate.py: Distilabel을 사용해 모델로부터 합성 데이터를 생성합니다.

  • Makefile: 위 스크립트를 활용해 R1 파이프라인 각 단계별로 쉽게 실행할 수 있는 명령을 포함합니다.

Plan of attack

DeepSeek‑R1 기술 보고서를 가이드로 삼아, 크게 세 단계로 나눌 수 있습니다.

  • Step 1: DeepSeek‑R1에서 고품질 코퍼스를 증류(distill)해 R1‑Distill 모델을 재현합니다.

  • Step 2: DeepSeek가 R1‑Zero를 만들 때 사용한 순수 RL 파이프라인을 재현합니다. 이를 위해 수학, 추론, 코딩에 대한 대규모 신규 데이터셋을 구축해야 할 것입니다.

  • Step 3: 베이스 모델에서 다단계 학습을 거쳐 RL‑튜닝된 모델까지 도달할 수 있음을 보여줍니다.

News 🗞️

  • 🧑‍🍳 [2025/05/26] (Step 1 완료!)
    우리는 Mixture-of-Thoughts 데이터를 공개했습니다. 이는 R1에서 증류된 35만 개의 검증된 추론 트레이스를 모아 만든 데이터셋으로, 수학·코딩·과학 과제를 포함하며 모델에게 단계별 추론을 가르치는 데 목적이 있습니다. 또한 OpenR1‑Distill‑7B를 학습시키는 레시피를 제공하는데, 이는 deepseek‑ai/DeepSeek‑R1‑Distill‑Qwen‑7B의 추론 능력을 재현하며 Open R1 프로젝트의 Step 1이 완료되었음을 의미합니다.

  • ⚡️ [2025/03/11] (update #3):
    우리는 1만 개의 경쟁 프로그래밍 문제와 10만 개의 솔루션을 R1에서 증류한 CodeForces‑CoTs 데이터셋을 공개했습니다. 또한 국제 올림피아드에서 나온 매우 어려운 문제들로 구성된 새로운 벤치마크 IOI24를 발표했습니다. CodeForces‑CoTs로 학습된 7B Qwen 모델은 IOI24에서 Claude 3.7 Sonnet을 능가하고, 32B 모델은 R1 자체보다도 뛰어난 성능을 보입니다.

  • ∞ [2025/02/10] (update #2):
    우리는 새로운 버전의 NuminaMath에 대해 R1에서 증류된 22만 개 트레이스를 담은 OpenR1‑Math‑220k 데이터셋을 공개했습니다. 이 데이터셋으로 학습된 모델은 DeepSeek가 증류한 모델과 동등한 성능을 보입니다.

  • 🔥 [2025/02/02] (update #1):
    우리는 학습, 추론, 그리고 평가 파이프라인의 첫 번째 부분을 구현했습니다. 시작해봅시다!

Installation

주의
라이브러리는 CUDA 12.4에 의존합니다. nvcc --version을 실행해 현재 시스템에 설치된 CUDA 버전을 확인하고, 세그멘테이션 오류가 발생하면 버전을 재검토하세요.

이 프로젝트 코드를 실행하려면 먼저 uv 같은 도구로 Python 가상 환경을 만들고, 아래 절차를 따라 설치합니다. uv 설치 방법은 UV Installation Guide를 참고하세요.


make install 명령을 실행하면 아래에 명시된 개발용 라이브러리를 한 번에 설치할 수 있습니다. 설치가 정상적으로 끝나면 Open‑R1 모델을 바로 시도해볼 수 있습니다.

uv venv openr1 --python 3.11 && source openr1/bin/activate && uv pip install --upgrade pip

추가 팁
Hugging Face 클러스터를 사용하는 경우, .bashrcexport UV_LINK_MODE=copy를 추가하면 uv가 캐시 경고를 출력하지 않습니다.

다음으로 vLLM과 FlashAttention을 설치합니다.

uv pip install vllm==0.8.5.post1
uv pip install setuptools && uv pip install flash-attn --no-build-isolation

이 과정에서 PyTorch v2.6.0도 함께 설치되며, vLLM 바이너리가 이 버전에 맞게 컴파일돼 있기 때문에 반드시 해당 버전을 사용해야 합니다. 이후 프로젝트에 필요한 추가 의존성은 pip install -e .[LIST OF MODES] 형태로 설치합니다. 대부분의 기여자는 다음과 같이 하면 됩니다.

GIT_LFS_SKIP_SMUDGE=1 uv pip install -e ".[dev]"

다음으로 Hugging Face와 Weights and Biases에 로그인합니다.

huggingface-cli login
wandb login

마지막으로 Git LFS가 설치되어 있는지 확인합니다. 모델·데이터셋을 Hub에 업로드하거나 다운로드하려면 필요합니다.

git-lfs --version

설치되지 않았다면 아래 명령으로 설치합니다.

sudo apt-get install git-lfs

Training models

주의
아래 학습 명령은 8 × H100(80 GB) 노드 기준으로 설정돼 있습니다. 다른 하드웨어·구성에서는 배치 크기와 gradient accumulation step 수를 조정해야 할 수 있습니다.

우리는 DDP와 DeepSpeed(ZeRO‑2, ZeRO‑3) 중 하나를 선택해 모델을 학습할 수 있습니다. 예를 들어, open‑r1/Mixture‑of‑Thoughts와 같은 추론 트레이스를 포함한 데이터셋을 사용해 DeepSeek‑R1에서 증류한 모델에 SFT를 수행하려면 다음과 같이 실행합니다.

' \
    --learning_rate 4.0e-5 \
    --num_train_epochs 5 \
    --max_seq_length 32768 \
    --per_device_train_batch_size 2 \
    --gradient_checkpointing \
    --bf16 \
    --use_liger_kernel \
    --output_dir data/OpenR1-Distill-7B

YAML 설정 파일로 학습

accelerate launch --config_file recipes/accelerate_configs/zero3.yaml src/open_r1/sft.py \
    --config recipes/OpenR1-Distill-7B/sft/config_distill.yaml

커맨드 라인으로 학습

accelerate launch --config_file=recipes/accelerate_configs/zero3.yaml src/open_r1/sft.py \
    --model_name_or_path open-r1/Qwen2.5-Math-7B-RoPE-300k \
    --dataset_name open-r1/Mixture-of-Thoughts \
    --dataset_config all \
    --eos_token '' \
    --learning_rate 4.0e-5 \
    --num_train_epochs 5 \
    --max_seq_length 32768 \
    --per
0 조회
Back to Blog

관련 글

더 보기 »