πŸ€— Open R1, DeepSeek-R1을 μž¬ν˜„ν•˜λŠ” 것을 λͺ©ν‘œλ‘œ ν•˜λŠ” μ˜€ν”ˆμ†ŒμŠ€ ν”„λ‘œμ νŠΈ (feat. Hugging Face)

Hugging Face R1 μ†Œκ°œ

Hugging Faceμ—μ„œ κ³΅κ°œν•œ Open R1 ν”„λ‘œμ νŠΈλŠ” DeepSeek-R1의 μ˜€ν”ˆμ†ŒμŠ€ μž¬ν˜„μ„ λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€. Open R1은 DeepSeek-R1의 κ΅¬μ„±μš”μ†Œλ₯Ό μ™„μ „νžˆ μž¬ν˜„ν•˜κΈ° μœ„ν•œ κ³ ν’ˆμ§ˆ μ½”νΌμŠ€ 증λ₯˜(Distillation), κ°•ν™”ν•™μŠ΅(RL) 기반 νŒŒμ΄ν”„λΌμΈ ꡬ좕, λŒ€κ·œλͺ¨ 데이터셋 기반 문제 ν•΄κ²° λͺ¨λΈ 개발 λ“±μ˜ 각 단계λ₯Ό 개발 및 κ³΅κ°œν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, 이λ₯Ό λ°”νƒ•μœΌλ‘œ 좔가적인 연ꡬ와 κ°œλ°œμ„ μ΄μ–΄λ‚˜κ°ˆ 수 μžˆλ„λ‘ λ•μŠ΅λ‹ˆλ‹€.

Open R1은 DeepSeek-R1 기술 λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ—¬ λ‹€μŒκ³Ό 같은 단계λ₯Ό μ£Όμš” λͺ©ν‘œλ‘œ μ„€μ •ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€:

  1. 1단계: R1-Distill λͺ¨λΈ μž¬ν˜„: DeepSeek-R1μ—μ„œ κ³ ν’ˆμ§ˆ μ½”νΌμŠ€λ₯Ό 증λ₯˜(distillation)ν•˜μ—¬ μƒˆλ‘œμš΄ R1-Distill λͺ¨λΈμ„ μž¬ν˜„ν•©λ‹ˆλ‹€.

    • λͺ©μ : μ›λž˜μ˜ DeepSeek-R1 λͺ¨λΈμ΄ 가진 데이터 증λ₯˜ 기법을 μž¬ν˜„ν•˜μ—¬ κ³ μ„±λŠ₯ λͺ¨λΈμ„ λ§Œλ“œλŠ” κ²ƒμž…λ‹ˆλ‹€.
    • ν™œμš© 방법: 증λ₯˜λœ 데이터λ₯Ό 기반으둜 κΈ°μ‘΄ λͺ¨λΈμ„ μ„Έλ°€ν•˜κ²Œ νŠœλ‹(SFT)ν•˜μ—¬ R1-Distill λͺ¨λΈμ„ μƒμ„±ν•©λ‹ˆλ‹€.
    • 예제: Bespoke-Stratos-17k와 같은 데이터셋을 ν™œμš©ν•΄ λͺ¨λΈ ν•™μŠ΅μ„ μœ„ν•΄ src/open_r1 디렉토리에 ν›ˆλ ¨ 및 평가 슀크립트λ₯Ό ν¬ν•¨ν•˜λ©°, Makefile을 톡해 μ£Όμš” νŒŒμ΄ν”„λΌμΈμ„ κ°„λ‹¨ν•˜κ²Œ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  2. 2단계: R1-Zeroλ₯Ό μƒμ„±ν•˜λŠ” 순수 RL νŒŒμ΄ν”„λΌμΈ μž¬ν˜„: DeepSeek-R1이 κ°œλ°œν•œ R1-Zero와 같은 RL(κ°•ν™”ν•™μŠ΅) 기반 λͺ¨λΈ 생성 과정을 μž¬ν˜„ν•©λ‹ˆλ‹€.

    • λͺ©μ : μƒˆλ‘œμš΄ λŒ€κ·œλͺ¨ 데이터셋을 μˆ˜ν•™, μΆ”λ‘ , μ½”λ”© μž‘μ—…μ— 맞게 νλ ˆμ΄μ…˜ν•˜κ³ , 이λ₯Ό 기반으둜 κ°•ν™”ν•™μŠ΅μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.
    • 핡심 μš”μ†Œ: κ°•ν™”ν•™μŠ΅ μ•Œκ³ λ¦¬μ¦˜κ³Ό ν•¨κ»˜ κ³ μ„±λŠ₯ ν•˜λ“œμ›¨μ–΄(예: H100 GPU)λ₯Ό ν™œμš©ν•˜μ—¬ 효율적으둜 νŒŒμ΄ν”„λΌμΈμ„ ꡬ좕.
  3. 3단계: κΈ°λ³Έ λͺ¨λΈμ—μ„œ RL νŠœλ‹λœ λͺ¨λΈλ‘œμ˜ μ „ν™˜: κΈ°λ³Έ(base) λͺ¨λΈμ—μ„œ μ‹œμž‘ν•˜μ—¬, λ©€ν‹°μŠ€ν…Œμ΄μ§€ ν•™μŠ΅ 과정을 톡해 RL νŠœλ‹λœ μ΅œμ’… λͺ¨λΈμ„ λ§Œλ“œλŠ” 것을 λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€.

    • λͺ©μ : κΈ°λ³Έ λͺ¨λΈμ„ κ°•ν™”ν•™μŠ΅κ³Ό 좔가적인 νŠœλ‹μ„ 톡해 μ„±λŠ₯을 κ·ΉλŒ€ν™”ν•˜κ³  λ‹€μ–‘ν•œ μž‘μ—…μ—μ„œ ν™œμš© κ°€λŠ₯ν•œ μ΅œμ’… λͺ¨λΈλ‘œ μ „ν™˜ν•©λ‹ˆλ‹€.
    • νŠΉμ§•: 단계별 ν•™μŠ΅ 섀계λ₯Ό 톡해 νŠœλ‹μ˜ νš¨μœ¨μ„±κ³Ό ν™•μž₯성을 증λͺ…ν•©λ‹ˆλ‹€.

Open R1의 ν”„λ‘œμ νŠΈ ꡬ쑰

Open R1은 λ‹€μŒκ³Ό 같은 핡심 ꡬ성 μš”μ†Œλ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€:

  • grpo.py: λ°μ΄ν„°μ…‹μ—μ„œ GRPO μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ λͺ¨λΈμ„ ν›ˆλ ¨ν•©λ‹ˆλ‹€.
  • sft.py: λ‹¨μˆœν•œ Supervised Fine-Tuning(SFT)을 μ‹€ν–‰ν•©λ‹ˆλ‹€.
  • evaluate.py: λͺ¨λΈμ„ ν‰κ°€ν•˜κΈ° μœ„ν•œ 슀크립트λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
  • generate.py: Distilabel을 μ‚¬μš©ν•΄ λͺ¨λΈμ—μ„œ 데이터 생성을 μ§€μ›ν•©λ‹ˆλ‹€.

λΌμ΄μ„ μŠ€

이 ν”„λ‘œμ νŠΈλŠ” Apache 2.0 License둜 배포되고 μžˆμŠ΅λ‹ˆλ‹€. 상업적 μ‚¬μš©μ— μ œν•œμ΄ μ—†μŠ΅λ‹ˆλ‹€.

:github: Hugging Face Open R1 GitHub μ €μž₯μ†Œ

https://github.com/huggingface/open-r1

더 읽어보기




이 글은 GPT λͺ¨λΈλ‘œ μ •λ¦¬ν•œ 글을 λ°”νƒ•μœΌλ‘œ ν•œ κ²ƒμœΌλ‘œ, μ›λ¬Έμ˜ λ‚΄μš© λ˜λŠ” μ˜λ„μ™€ λ‹€λ₯΄κ²Œ μ •λ¦¬λœ λ‚΄μš©μ΄ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. κ΄€μ‹¬μžˆλŠ” λ‚΄μš©μ΄μ‹œλΌλ©΄ 원문도 ν•¨κ»˜ μ°Έκ³ ν•΄μ£Όμ„Έμš”! μ½μœΌμ‹œλ©΄μ„œ μ–΄μƒ‰ν•˜κ±°λ‚˜ 잘λͺ»λœ λ‚΄μš©μ„ λ°œκ²¬ν•˜μ‹œλ©΄ λ§κΈ€λ‘œ μ•Œλ €μ£Όμ‹œκΈ°λ₯Ό λΆ€νƒλ“œλ¦½λ‹ˆλ‹€. :hugs:

:pytorch:νŒŒμ΄ν† μΉ˜ ν•œκ΅­ μ‚¬μš©μž λͺ¨μž„:kr:이 μ •λ¦¬ν•œ 이 글이 μœ μš©ν•˜μ…¨λ‚˜μš”? νšŒμ›μœΌλ‘œ κ°€μž…ν•˜μ‹œλ©΄ μ£Όμš” 글듀을 이메일:love_letter:둜 λ³΄λ‚΄λ“œλ¦½λ‹ˆλ‹€! (기본은 Weeklyμ§€λ§Œ Daily둜 변경도 κ°€λŠ₯ν•©λ‹ˆλ‹€.)

:gift: μ•„λž˜:arrow_lower_right:μͺ½μ— μ’‹μ•„μš”:+1:λ₯Ό λˆŒλŸ¬μ£Όμ‹œλ©΄ μƒˆλ‘œμš΄ μ†Œμ‹λ“€μ„ μ •λ¦¬ν•˜κ³  κ³΅μœ ν•˜λŠ”λ° 힘이 λ©λ‹ˆλ‹€~ :star_struck:

3개의 μ’‹μ•„μš”

Transformer와 GPT의 λ™μž‘ 원리λ₯Ό μ‹œκ°ν™”ν•΄μ„œ μ„€λͺ…ν•œ κΈ€λ“€λ‘œ 유λͺ…ν•œ Jay Alammarκ°€ μƒˆλ‘­κ²Œ DeepSeek-R1 λͺ¨λΈμ„ μ„€λͺ…ν•˜λŠ” 글을 κ³΅κ°œν–ˆμŠ΅λ‹ˆλ‹€. :star_struck:

(ν•œ λ²ˆμ”© ν›‘μ–΄λ³΄μ‹œλ©΄ 쒋을 것 κ°™μ•„ 여기와 DeepSeek-R1 μ†Œκ°œ 글에 λ§κΈ€λ‘œ λ‚¨κΉλ‹ˆλ‹€:smiley:)

1개의 μ’‹μ•„μš”