Unsloth로 자체 DeepSeek R1 추론 모델 훈련하기

AI 뉴스7개월 전에 게시 됨 AI 공유 서클
10.1K 00

오늘, 언슬러스가 소개하는 Unsloth 딥시크의 R1 연구에서는 그룹 상대 정책을 사용하여 R1-Zero를 최적화하는 '깨달음의 순간'을 발견했습니다(GRPO) 자기 주도 학습은 수동 피드백 없이 더 많은 사고 시간을 할당합니다.

언슬러스는 전체 GRPO 프로세스를 개선하여 허깅 페이스 + FA2보다 80% 적은 VRAM을 사용함으로써 사용자가 Qwen2.5(1.5B)를 사용하여 단 7GB의 VRAM으로 R1-Zero의 '깨달음의 순간'을 재현할 수 있도록 했습니다.

Unsloth의 무료 GRPO 노트북을 사용해 보세요:Colab의 Llama 3.1 (8B)
Phi-4 등 다른 모델용 GRPO 노트북의 경우, Unsloth의 다음 문서를 참조하세요.

 

💡 주요 세부 정보

  • 15GB의 VRAM을 갖춘 Unsloth를 사용하면 최대 15B의 파라미터를 가진 모든 모델(예: Llama 3.1(8B), Phi-4(14B), Mistral(7B) 또는 Qwen2.5(7B))을 추론 모델로 변환할 수 있습니다.
  • 최소 요구 사항: 7GB의 VRAM만으로 로컬에서 자체 추론 모델을 훈련할 수 있습니다.
  • Tiny-Zero의 뛰어난 팀은 사용자가 Qwen2.5(1.5B)를 사용하여 자신만의 깨달음의 순간을 얻을 수 있다는 것을 증명했지만, 이를 위해서는 2개의 A100 GPU(160GB VRAM)가 필요했습니다. 이제 언슬러스를 통해 사용자는 단 하나의 7GB VRAM GPU로 동일한 깨달음의 순간을 경험할 수 있습니다!
  • 이전에는 GRPO가 전체 미세 조정만 지원했지만, 언슬러스는 QLoRA와 LoRA에서도 사용할 수 있도록 지원합니다.
  • 이것은 미세 조정이 아닙니다. DeepSeek 의 R1 증류 모델을 사용하지 않으며, R1 증류 데이터를 사용하여 조정하지도 않습니다(Unsloth에서 이미 지원됨). 이것은 표준 모델을 GRPO를 사용한 본격적인 추론 모델로 변환한 것입니다.
  • 사용자가 인센티브가 포함된 맞춤형 모델(예: 법률, 의료 등)을 만들고자 하는 경우 GRPO가 도움이 될 수 있습니다.
    사용자에게 입력 및 출력 데이터(예: 질문과 답변)는 있지만 사고 체인이나 추론 프로세스가 없는 경우, GRPO는 사용자를 위한 추론 프로세스를 마술처럼 생성할 수 있습니다! + 더 보기

 

🤔 GRPO + "깨달음의 순간"

딥시크 연구원들은 순수 강화 학습(RL)을 사용하여 R1-Zero를 훈련하는 동안 '깨달음의 순간'을 관찰했습니다. 이 모델은 사람의 안내나 사전 정의된 지침 없이도 초기 접근 방식을 재평가하여 사고 시간을 연장하는 방법을 배웠습니다.

테스트 예시에서 Unsloth는 GRPO만을 사용하여 Phi-4를 100단계로 훈련시켰지만 결과는 이미 분명했습니다. GRPO가 없는 모델은 토큰에 대해 생각하지 않은 반면, GRPO로 훈련된 모델은 토큰에 대해 생각했고 정답도 맞았습니다.

使用 Unsloth 训练您自己的 DeepSeek R1 推理模型
이러한 마법은 값 함수에 의존하는 근거리 정책 최적화(PPO)와 달리 값 함수 없이도 효율적으로 응답을 최적화하는 RL 알고리즘인 GRPO를 통해 재현할 수 있습니다. Unsloth의 노트북에서는 GRPO를 사용하여 모델이 자율적으로 자체 검증 및 검색 기능을 개발할 수 있도록 하는 것을 목표로 모델을 훈련시켜 작은 깨달음의 순간을 만들어냅니다.

작동 방식:

  • 모델은 응답 그룹을 생성합니다.
  • 각 응답은 빅 언어 모델 보상 모델이 아닌 일부 보상 함수에 의해 생성된 정확성 또는 기타 메트릭에 따라 점수가 매겨집니다.
  • 그룹의 평균 점수를 계산합니다.
  • 각 응답에 대한 점수를 그룹 평균과 비교했습니다.
  • 이 모델은 고득점 응답을 지원하도록 개선되었습니다.

 

예를 들어 Unsloth가 모델에서 해결하기를 원한다고 가정해 보겠습니다:
1+1이란 무엇인가요? >> 생각의 연쇄/계산 과정 >> 정답은 2입니다.
2+2란 무엇인가요? >> 생각의 연쇄/계산 과정 >> 정답은 4입니다.

처음에는 계산 프로세스/사고의 사슬을 채우기 위해 많은 데이터를 수집해야 합니다. 그러나 GRPO(DeepSeek에서 사용하는 알고리즘) 또는 기타 RL 알고리즘은 모델이 자동으로 추론 능력을 보여주고 추론 궤적을 생성하도록 유도할 수 있습니다. 대신 Unsloth는 좋은 보상 함수나 검증자를 만들어야 합니다. 예를 들어 정답을 맞히면 1점을 주는 식입니다. 철자가 틀린 단어가 있으면 0.1점을 뺀다든지 하는 식으로요! Unsloth는 이 과정을 보상하기 위해 다양한 함수를 제공할 수 있습니다.

 

🦥 Unsloth의 GRPO

Unsloth와 함께 GRPO를 로컬에서 사용하는 경우, 종속성이므로 "pip 설치 디퓨저"도 함께 설치하세요.

보상이 실제로 증가하려면 최소 300보 이상 걸으셔야 하며, 최신 버전의 vLLM을 사용하세요. Colab에서 Unsloth의 예는 1시간 동안만 훈련되었기 때문에 결과가 이상적이지 않다는 점을 명심하세요. 좋은 결과를 얻으려면 사용자가 최소 12시간 동안 훈련해야 하지만(GRPO의 작동 방식), 사용자가 언제든지 중단할 수 있으므로 필수 사항은 아니라는 점을 명심하세요.

더 작은 모델에서는 씽킹 토큰을 제대로 생성하지 못할 수 있으므로 최소 15억 개 이상의 파라미터를 가진 모델에 GRPO를 적용하는 것을 권장합니다. 사용자가 기본 모델을 사용하는 경우, 사용자에게 채팅 템플릿이 있는지 확인하세요. 이제 GRPO에 대한 학습 손실 추적이 Unsloth에 직접 구축되어 wandb와 같은 외부 도구가 필요하지 않습니다.

使用 Unsloth 训练您自己的 DeepSeek R1 推理模型
언슬러스는 GRPO 지원 추가에 이어 온라인 DPO, PPO, RLOO를 지원합니다! 언슬러스의 온라인 DPO VRAM 소비량을 표준 허깅 페이스 + FA2와 비교한 차트는 아래를 참조하세요.

使用 Unsloth 训练您自己的 DeepSeek R1 推理模型

✨ Unsloth x vLLM

처리량 20배 증가 및 50% VRAM 절감:

이제 사용자는 미세 조정 스택에서 직접 vLLM을 사용할 수 있어 처리량을 늘리고 모델을 미세 조정하고 동시에 추론할 수 있습니다! 1 A100 40GB에서 Unsloth의 Llama 3.2 3B Instruct를 사용한 동적 4비트 양자화(약 4000개) 토큰 /초 정도입니다. 16GB 테슬라 T4(무료 Colab GPU 포함)에서 사용자는 300토큰/초를 받게 됩니다.

Unsloth는 또한 마법처럼 vLLM Unsloth는 처음에 48GB GPU 1개에 Llama 3.3 70B Instruct를 미세 조정할 수 있으며, Llama 3.3 70B 웨이트는 40GB의 VRAM을 차지합니다. 이중 메모리 사용량을 제거하지 않으면 Unsloth와 vLLM을 모두 로드할 때 80GB 이상의 VRAM이 필요합니다.

하지만 Unsloth를 사용하면 최대 48GB의 VRAM에서 빠른 추론의 이점을 미세 조정하고 누릴 수 있습니다! 빠른 추론을 사용하려면 먼저 vllm을 설치하고 fast_inference로 Unsloth를 인스턴스화하세요:

pip install unsloth vllm
from unsloth import FastLanguageModel
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "unsloth/Llama-3.2-3B-Instruct",
fast_inference = True,
)
model.fast_generate(["Hello!"])

 

Unsloth의 vLLM 발견

  • vLLM은 이제 Unsloth Dynamic 4비트 양자화를 로드할 수 있습니다. Unsloth의 1.58비트 다이내믹 R1 GGUF와 마찬가지로 일부 레이어를 4비트로, 일부 레이어를 16비트로 동적 양자화하면 모델을 작게 유지하면서 정확도를 크게 향상시킬 수 있음을 보여주었습니다.
  • Unsloth는 RAM, VRAM 효율성, 최대 처리량을 고려하여 여러 매개변수를 자동으로 선택합니다(예: # 블록 사전 채워진 토큰, # 최대 시퀀스 등) Unsloth는 기본적으로 vLLM에서 -O3을 활성화하고 접두사 캐싱을 활성화합니다. Unsloth는 플래시인퍼가 구형 GPU에서 실제로 10% 느리다는 것을 발견했습니다. FP8 KV 캐시를 사용하면 10% 느려지지만 처리량 잠재력은 두 배로 증가합니다.
  • Unsloth를 사용하면 디스크에서 로드하는 대신 상태 사전을 파싱하여 vLLM에서 LoRA를 로드할 수 있으므로 GRPO 훈련이 1.5배 더 빠르게 실행될 수 있습니다. 현재 활발히 연구 중인 분야는 vLLM에서 LoRA 어댑터를 직접 편집하는 방법입니다(Unsloth는 아직 방법을 알지 못함). 이 경우 Unsloth는 현재 불필요하게 GPU 데이터를 이동하고 있기 때문에 속도가 크게 향상될 수 있습니다.
  • 특히 일괄 생성 중에 이상하게 VRAM이 무작위로 급증할 수 있습니다. unsloth는 메모리 급증을 줄이기 위해 일괄 생성 기능을 추가했습니다.
© 저작권 정책

관련 문서

댓글 없음

댓글에 참여하려면 로그인해야 합니다!
지금 로그인
없음
댓글 없음...