Open R1: 업데이트 #2
요약
Open R1 프로젝트는 DeepSeek R1의 누락된 부분, 특히 훈련 파이프라인과 합성 데이터 구축에 초점을 맞추고 있습니다. 이번 업데이트에서는 수학적 추론을 위한 대규모 데이터셋인 OpenR1-Math-220k를 공개했습니다. 이 데이터셋은 Numina와 협력하여 512개의 H100 클러스터에서 로컬로 생성되었으며, 자동 필터링 및 고급 평가 시스템(Math Verify)을 통해 높은 품질의 추론 트레이스를 제공합니다. 또한, 최신 LLM 기술(SGLang 등)을 활용하여 데이터 생성 속도를 획기적으로 높이는 방법론도 공유했습니다.
핵심 포인트
- OpenR1-Math-220k: 수학적 추론에 특화된 대규모 고품질 데이터셋이 공개되었습니다.
- 로컬 클러스터 기반의 합성 데이터 생성 파이프라인을 구축하여, API 의존성 없이 대량의 트레이스를 확보했습니다 (512 H100 사용).
- SGLang과 같은 최신 추론 프레임워크를 활용하여 데이터 생성 속도를 획기적으로 향상시켰습니다.
- Math Verify와 Llama-3.3-70B-Instruct 등의 고급 필터링 및 검증 시스템을 적용하여 데이터셋의 신뢰성을 극대화했습니다.
Open R1 프로젝트는 이제 2 주가 지났습니다. 이 프로젝트의 목표는 DeepSeek R1 의 누락된 부분을 복원하는 것입니다—특히 훈련 파이프라인과 합성 데이터입니다.
이번 포스트에서는 OpenR1-Math-220k 의 구축을 공유합니다: 수학적 추론을 위한 첫 번째 대규모 데이터셋!
또한 커뮤니티가 미세 조정용 작은 고품질 데이터셋 큐레이션에 대한 흥미로운 발전을 살펴보고, 추론 모델의 체인-of-thought (Chain-of-Thought) 길이를 훈련 시간과 추론 시간 모두에서 제어하는 방법에 대한 통찰도 제공합니다.
자, 시작해 보겠습니다!
DeepSeek R1 의 주요 장점 중 하나는 디스틸레이션 (Distillation) 을 통해 작은 모델로 고급 추론 능력을 이전할 수 있는 능력입니다. DeepSeek 팀은 60 만 개의 추론 트레이스를 생성하고 Qwen 및 Llama 모델 시리즈를 미세 조정하여, 강화 학습 없이 R1 에서 직접적인 디스틸레이션으로 경쟁력 있는 추론 성능을 달성할 수 있음을 보여주었습니다. 특히 DeepSeek-R1-Distill-Qwen-7B 는 AIME 2024 에서 55.5% 를 달성하여 QwQ-32B-Preview 와 같은 더 큰 모델을 능가했습니다.
그러나 디스틸레이션에 사용된 추론 트레이스는 공개되지 않았으며, 커뮤니티가 독립적으로 유사한 데이터셋을 재구성했습니다. 지금까지 커뮤니티는 OpenThoughts-114k, Bespoke-Stratos-17k, Dolphin-R1, 그리고 LIMO 를 포함한 여러 오픈 데이터셋을 출시했습니다.
🐳 OpenR1-Math-220k 를 소개합니다: 512 개의 H100 에서 로컬로 생성된 대규모 수학적 추론 데이터셋, 문제당 여러 답변 포함. OpenR1-Math-220k 를 만들기 위해 우리는 Numina 와 협력했습니다. 그들은 인기 있는 NuminaMath-CoT 데이터셋의 새로운 버전을 개발했습니다.
OpenR1 데이터셋에 비해 기존 데이터셋에서 무엇이 새로웠는지:
80 만 개의 R1 추론 트레이스: DeepSeek R1 을 사용하여 40 만 개의 문제에 대해 2 개의 답변을 생성합니다. 필터링된 데이터셋은 22 만 개의 문제를 포함하며, 올바른 추론 트레이스를 갖습니다.
512 H100 로컬 실행: API 에 의존하지 않고, vLLM 과 SGLang 을 활용하여 과학 클러스터에서 로컬로 생성을 실행합니다. 하루 18 만 개의 추론 트레이스를 생성합니다.
NuminaMath 1.5 기반: 우리는 수학적 추론 트레이스에 집중하고 NuminaMath-CoT 데이터셋의 개선된 버전인 NuminaMath 1.5 의 문제에 대한 답변을 생성합니다.
자동 필터링: 우리는 Math Verify 를 적용하여 최소 하나의 올바른 답변이 있는 문제만 유지합니다. 또한 Llama3.3-70B-Instruct 를 판별자로 활용하여 더 많은 올바른 예제를 검색합니다 (예: 규칙 기반 파서로 검증할 수 없는 형식 오류가 있는 답변의 경우).
Qwen-7B-Math-Instruct 미세 조정: 우리의 데이터셋으로 Qwen-7B-Math-Instruct 를 미세 조정하여 DeepSeek-Distill-Qwen-7B 의 성능과 맞춥니다.
확장 가능한 고품질 추론 데이터 생성을 증명함으로써, 이 파이프라인이 수학을 넘어 코드 생성과 같은 도메인으로 확장될 수 있음을 희망합니다.
OpenR1-220k 를 구축하기 위해 우리는 DeepSeek R1 을 NuminaMath 1.5 의 40 만 개의 문제에 대한 솔루션을 생성하도록 프롬프트했습니다. 모델 카드의 권장 파라미터를 따르고 사용자 프롬프트에 다음 지시를 추가했습니다:
"단계별로 추론하고, 최종 답변을 \boxed{} 안에 넣으세요."
생성당회마다 토큰 제한을 16k 로 설정했습니다. 분석 결과, 8k 토큰 미만으로 해결 가능한 문제는 75% 에 불과하며, 나머지 대부분의 문제는 전체 16k 토큰이 필요했기 때문입니다. 초기에는 vLLM 을 추론 (inference) 도구로 사용하여 H100 당 시간당 15 번의 생성을 달성했으며, 이전 업데이트와 OpenR1 저장소에서 생성 스크립트를 공유했습니다. 최근에는 SGLang 실험을 시작하여 H100 당 시간당 25 번의 생성 (약 2 배 속도 향상!) 을 가능하게 했으며, 이를 통해 512 개의 H100 으로 하루에 30 만 개의 문제 해결안을 생성할 수 있었습니다. 이는 단 몇 일 만에 80 만 개의 추론 기록을 생성하는 데 기여했습니다.
각 문제는 2 개의 해결안을 생성하며, 경우에 따라 4 개를 제공하여 필터링과 훈련의 유연성을 확보합니다. 이 접근법은 DeepSeek R1 의 방법론과 유사한 거부 샘플링 (rejection sampling) 을 가능하게 하며, DPO 와 같은 선호도 최적화 방법을 적용하기에도 적합한 데이터셋을 제공합니다.
데이터 생성 스크립트는 여기에서 이용 가능합니다: https://github.com/huggingface/open-r1/tree/main/slurm
필터링되지 않은 데이터셋은 여기에서 이용 가능합니다: https://huggingface.co/datasets/open-r1/OpenR1-Math-Raw
높은 품질의 올바른 추론 기록을 유지하기 위해, LLM 생성 답변을 평가하는 데 특화된 강력한 수식 표현 평가 시스템인 Math Verify 를 활용합니다. 모델 생성에서 최종 답변을 추출하여 데이터셋의 기준 답변과 비교합니다.
우리는 55% 의 문제에서 적어도 하나의 정답이 있음을 발견했습니다. 그러나 NuminaMath 1.5 의 일부 기준 답변은 빈칸이거나 검증 가능한 형식이 아니었기 때문에 자동화된 검증이 어려웠습니다. Math-Verify 를 이러한 덜 흔한 출력 형식을 더 정확하게 처리하도록 개선했으며 (수상 Math-Verify 개선 사항 참조), 거부된 샘플에서 유효한 해결안을 복원하는 대안 방법인 Llama-3.3-70B-Instruct 을 일부 거부된 문제에서 판사 (judge) 로 사용하는 방법도 탐구했습니다. 이 검증 단계를 실행하기 전에 불완전한 샘플이나 빈 기준 답변을 포함하는 샘플을 필터링하여, 명확히 박스 처리된 최종 답변이 포함된 잘 형성된 응답만 고려합니다. 이 과정은 이전에 거부된 28,000 개의 문제를 성공적으로 복원했습니다.
다음과 같이 Llama3.3-70B-Instruct 를 프롬프트합니다:
You are a mathematical answer validator. You will be provided with a mathematical problem and you need to compare the answer in the reference solution, and the final answer in a model's solution to determine if they are equivalent, even if formatted differently.
PROBLEM:
{problem}
...
규칙 기반 검증 (Math Verify) 과 LLM 기반 평가를 결합하여 데이터셋 품질을 개선하면서도 규모를 유지합니다. 최종 데이터셋은 검증된 추론 기록이 포함된 22 만 개의 문제로 구성되며, 추론 모델 훈련에 귀중한 자원이 됩니다. 문제당 여러 해결안을 제공하면 커뮤니티는 더 나은 생성물을 필터링하고 NuminaMath 데이터 소스 및 문제 유형에 기반하여 더 타겟팅된 정교함을 적용할 수 있습니다.
데이터셋은 두 가지 분할로 제공됩니다:
default
(94k 문제), SFT 후 가장 좋은 성능을 달성합니다.extended
(131k 문제), cn_k12와 같은 추가적인 NuminaMath 1.5 소스를 포함하여 더 많은 추론 기록을 제공합니다. 그러나 우리는 이 부분집합에서 SFT 후 성능이 기본 분할보다 낮았음을 관찰했으며, 이는 cn_k12가 다른 소스에 비해 간단한 질문을 포함하기 때문일 가능성이 높습니다.
nrehiew 는 GRPO 를 Qwen2.5-0.5B 기본 모델에 직접 적용할 때 GSM8k 벤치마크에서 약 51% 의 정확도를 얻었으며, 이는 Qwen2.5-0.5B-Instruct 모델보다 10 점의 개선입니다. 이러한 인상적인 결과는 instruct 데이터가 프리트레이닝에서의 역할에 대한 많은 논의를 불러일으켰습니다. 사람들은 아직 다른 기본 모델 (예: Llama 3) 에 GRPO 를 적용할 때 유사한 이득을 얻지 못했기 때문입니다. 특히 Sea AI Lab (SAIL) 의 연구자들은 기본 모델이 자기 반성을 쉽게 유도할 수 있으며, DeepSeek-R1 논문에서 언급된
AI 자동 생성 콘텐츠
본 콘텐츠는 Hugging Face Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기