사고 연쇄(CoT) 길이를 압축하기 위한 선호 학습 방법입니다. 단순히 짧은 답변에 보상을 주지 않으며, 모델 자체의 추론 궤적에서 '이미 정보가 충분함에도 계속 생각하는' 후보 상태를 찾아냅니다. 이 단계까지의 추론 접두사를 고정하고, 동일한 상태에서 더 짧고 검증된 답변을 생성하여 '동일 상태에서 계속 생각하기 vs 마무리하기' 선호 쌍을 구성한 후 DPO로 학습하여 모델이 언제 멈춰야 할지 배우도록 합니다. 학습 데이터는 전적으로 모델이 자체 생성한 수학 추론 궤적에서 나옵니다.
좋아요 65 · 코드 스타 수 6
이유
- 저자는 5개의 수학 벤치마크와 3개의 코드 벤치마크에서 수학 출력 길이가 41.7%–45.4% 감소하고, 코드는 23.4%–36.3% 감소했으며, 정확도는 유지되거나 향상되었고, 코드 벤치마크의 AUC는 모두 최고였다고 주장합니다. 또한 수학 데이터만으로 학습해도 코드로 전이됩니다.
- 가중치가 공개되었습니다: Hugging Face의 MuyaoYuan/LoCo-7B (DeepSeek-R1-Distill-Qwen-7B의 압축 버전, MIT 라이선스)를 vLLM으로 직접 로드할 수 있습니다. 저장소에는 데이터 생성, 학습, 평가 전체 프로세스가 포함되어 있으며 코드는 MIT 라이선스입니다.
- Hugging Face 당일 좋아요 3위 (관심도만 반영); '과잉 추론 상태에서만 선호 쌍을 만든다'는 데이터 생성 방식은 모델에 종속되지 않아 다른 추론 모델에도 적용할 수 있습니다.
사용법
- 바로 사용: vLLM으로 MuyaoYuan/LoCo-7B 로드 (모델 카드 예시: max_model_len=36864, temperature 0.6, top_p 0.95, max_tokens 32768), 프롬프트 끝에 단계별 추론을 요구하고 답변을 \boxed{} 안에 넣도록 합니다.
- 자체 데이터 생성: 기본 모델 DeepSeek-R1-Distill-Qwen-7B와 평가 모델 Qwen3-30B-A3B-Instruct-2507를 다운로드하고, 저장소에 포함된 math14k 문제 세트에서 construction/ 하위의 1_rollout부터 6_build_dpo까지 6단계 스크립트를 순차적으로 실행하여 out/6_build_dpo/dpo.jsonl을 생성합니다.
- 학습 및 평가: bash script/train/run.sh (기본값: 4 GPU, 2 에폭, DeepSpeed ZeRO-2) 실행, python train/merge.py로 LoRA를 기본 모델에 병합, bash script/eval/run.sh math500 또는 aime24 aime25으로 평가.
리스크
- 7B 체크포인트 하나만 공개되었으며, 기본 모델은 이전 버전의 R1 증류 모델입니다. 다른 추론 모델로 변경하려면 데이터 생성과 학습을 직접 다시 수행해야 하며, 데이터 생성에는 30B급 평가 모델이 필요합니다.
- 개발 환경은 NVIDIA H20, CUDA 12.8, Python 3.12이며, 의존성 버전이 엄격하게 고정되어 있습니다 (vllm 0.23.0, trl 0.29.1 등).
- 길이 및 정확도 수치는 저자가 보고한 값입니다. 논문은 수학 및 코드만 평가했으며, 오픈 엔드 대화에서 조기에 마무리하는지 여부에 대한 데이터는 없습니다.
열기 · 코드 · Hugging Face 논문 페이지