Soup은 레이어 스트리밍을 통해 4 GB 랩톱 GPU에서 8B 모델의 파인튜닝을 가능하게 합니다

개요

Soup은 LLM 파인튜닝을 간단한 워크플로우로 바꿉니다: 하나의 YAML 설정, 하나의 명령, 그리고 SSH나 인프라 번거로움 없이. 이 프로젝트는 modeste 하드웨어에서의 훈련을 목표로 하며, 구체적으로 4 GB VRAM만 있는 랩톱 GPU에서 8B 모델을 실행할 수 있게 합니다.

작동 방식

레이어 스트리밍은 동결된 기본 모델을 VRAM 외부에 유지하고 GPU에 디코더 레이어 하나씩 공급합니다. LoRA 동안 기본은 읽기 전용이므로 호스트 RAM에 거주하고 작은 사전 할당된 VRAM 버퍼로 스트리밍할 수 있으며, 전용 CUDA 스트림에서 한 레이어 앞서 프리페치됩니다.これによりピーク VRAM使用量はモデル全体ではなく単一レイヤーのサイズ程度に削減されます。

양자화는 기본 모델에 적용됩니다(기본값: 4‑bit NF4)하여 메모리 사용량을 더욱 줄입니다. 어댑터(LoRA)는 VRAM에서 정상적으로 학습됩니다.

DPO와 같은 선호도 기반 손실의 경우, 참조 모델은 두 번째 복사본이 아닙니다. Soup은 어댑터를 끈 상태에서 동일한 스트리밍된 기본 모델을 재사용하므로 스트리밍되는 가중치 세트는 하나뿐입니다. 이로 인해 참조 모델은 메모리 측면에서 "무료"가 되지만, 시간 비용이 발생합니다: DPO는 단계당 레이어 스택을 표준 지도형 파인튜닝보다 약 1.52배 더 자주 읽습니다.

시스템은 비스트리밍 상주 실행과 비트 정확성을 보장합니다: 여러 아키텍처와 정밀도에서 최대 절대 로짓 차이는 0.0이며, CI 테스트로 검증되었습니다.

주요 기능

  • Zero SSH: 원격 GPU 머신에 로그인할 필요가 없습니다.
  • One configuration: 단일 soup.yaml 파일이 훈련의 모든 측면을 제어합니다.
  • Automatic handling: 배치 크기, GPU 감지, 양자화가 자동으로 관리됩니다.
  • Local execution: 사용자 자신의 GPU에서 QLoRA로 훈련이 실행되며, 클라우드가 필요 없습니다.
  • Preference loss support: v0.72.4에서 레이어 스트리밍을 통한 DPO, ORPO, SimPO 및 KTO가 추가되었으며, 위와 같이 참조 모델이 처리됩니다.
  • Correctness focus: 프로젝트는 원시 속도보다는 비트 정확한 재현성을 강조합니다.

최근 업데이트 (v0.72.4)

  • 레이어 스트리밍이 이제 지도형 파인튜닝뿐만 아니라 DPO, ORPO, SimPO 및 KTO에도 작동합니다.
  • RTX 3050 Laptop (4 GB, Windows)에서 측정: 스트리밍 DPO의 피크 VRAM 사용량은 지도형 파인튜닝 피크의 0.914배였습니다.
  • DPO의 참조를 위해 두 번째 전체 모델을 강제하면 약 730 MB가 추가되며, 이는 가중치의 한 복사본에 해당합니다.
  • ORPO와 SimPO는 진정한 참조가 필요 없으며, KTO는 DPO와 동일한 참조 메커니즘을 재사용합니다.
  • VRAM 사전 점검은 선택된 + 거부된 쌍 손실을 행의 두 배로 고려합니다.
  • grpo와 ppo는 생성 단계에서 토큰당 모든 레이어를 다시 읽어야 하므로 스트리밍으로 상쇄할 수 없어 제외됩니다.
  • 이 릴리스는 여전히 BETA로 표시되어 있습니다.

사용 가이드

설치

# Light core (CLI, config, data tools)
pip install soup-cli
# Add training dependencies (torch, transformers, peft, trl, datasets, …)
pip install "soup-cli[train]"

구성 만들기

# Interactive wizard
soup init
# Or start from a template (e.g., chat)
soup init --template chat

일반적인 8B 모델용 soup.yaml은 다음과 같을 수 있습니다:

base: meta-llama/Llama-3.1-8B-Instruct
task: sft
data:
  train: ./data/train.jsonl
  format: alpaca
  val_split: 0.1
training:
  epochs: 3
  lr: 2e-5
  batch_size: auto
  lora:
    r: 64
    alpha: 16
  quantization: 4bit
  stream_layers: true
  stream_source: auto
output: ./output

훈련, 테스트, 배포

soup train --config soup.yaml          # LoRA, 양자화, 배치 처리 자동
soup chat  --model ./output            # 모델과 대화
soup push  --model ./output --repo you/my-model

추가 명령에는 soup merge, soup export (GGUF, ONNX, TensorRT 등으로), soup eval benchmark, soup data inspect, soup recipes list, soup autopilot, 그리고 환경 점검을 위한 soup doctor가 포함됩니다.

성능 측정 (저자 보고)

  • RTX 3050 Laptop (4 GB, Windows)에서: NF4에서의 Llama‑3.1‑8B와 레이어 스트리밍은 119.6 tok/s를 달성했으며, 피크 VRAM 사용량은 3.32 GB, SM 점유율은 **100 %**였습니다.
  • 동일한 카드에서는 양자화되지 않은 bf16 기본 모델로 Qwen2.5‑3B를 실행하여 2.15 GB VRAM에서 143 tok/s를 달성했는데, 기본 모델을 상주 상태로 두면 CUDA‑OOM이 발생합니다.
  • 스트리밍 오버헤드는 0.5 B 모델 크기의 기준 대비 **1.43×**이며, 저자는 검증을 위해 기준을 제공합니다.
  • 이러한 수치는 Windows 전용이며, Linux에서는 약간 더 나은 성능이 예상됩니다.
  • 모든 측정 기록(폐기된 실행 포함)은 저장소의 benchmarks/ 디렉터리에서 확인할 수 있습니다.

커뮤니티 인사이트

  • Local model ROI: 코멘터들은 작은 오픈‑웨이트 모델이 대규모 호스팅 모델의 비용을 피하고 많은 기업이 LLM에서 보는 ROI 위기를 해결한다고 언급했습니다.
  • 실용적 사용: 한 사용자는 커뮤니티 은행의 AML 준수를 위해 파인튜닝된 4B 모델을 실행하며 동일한 ROI 근거를 제시했습니다.
  • VRAM 질문: 한 댓글에서 여전히 하드 VRAM 요구가 존재하는 이유를 물었고, 저자는 동결된 기본 행렬 곱셈 전에 도착해야 하므로 스트리밍이 필요하며, 이로 인해 요구 사항이 단일 레이어 크기로 감소한다고 설명했습니다.
  • 하이퍼‑파라미터 튜닝: 또 다른 댓글에서는 Soup이 하이퍼‑파라미터를 자동 튜닝하고 복잡한 훈련 결정을 어떻게 내리는지 물었습니다. 소스는 자동 하이퍼‑파라미터 검색을 설명하지 않으며, CLI는 배치 크기, GPU 감지, 양자화를 자동으로 처리하고 학습률, LoRA 순위 등은 구성 파일에 설정됩니다.
  • 데이터 양: 파인튜닝에 필요한 데이터 양에 대한 질문이 제기되었습니다. 저장소에는 짧은 예시 데이터셋만 제공되며, 필요한 데이터 크기에 대한 구체적인 지침은 소스에 없습니다.
  • 하드웨어 추천: 4 GB GPU 랩톱에 대한 구체적인 추천 요청이 있었는데, 소스는 특정 모델을 지지하지 않습니다.
  • 웹사이트 비용 및 가독성: 사용자는 "Get Started for Free" 라벨이 변경될 수 있는지와 사이트의 회색‑on‑black 가독성에 대해 의문을 제기했습니다. 프로젝트의 라이선스는 Apache‑2.0이며 무료로 유지됩니다.
  • 댓글 품질: 관찰자는 스레드의 댓글 거의 절반이 죽은 것처럼 보이거나 LLM 생성되었으며, 게시물 점수 대비 저신호 댓글 비율이 높다고 언급했습니다.

제한 사항 및 자주 묻는 질문

  • VRAM 상한: 저자는 4 GB 카드에서 8B보다 큰 모델 지원을 주장하지 않습니다; 14B NF4는 약 7.5 GB의 페이지‑락 호스트 메모리가 필요하며, 테스트 랩톱에서 측정한 약 7.12 GB 상한을 초과합니다.
  • 선호도 손실 오버헤드: 참조 모델은 메모리에서 "무료"이지만, DPO는 단계당 레이어‑스택 읽기가 1.52배 증가합니다.
  • 제외된 알고리즘: GRPO와 PPO는 토큰당 생성 시 모든 레이어를 다시 읽어야 하므로 스트리밍의 이점을 무효화하기 때문에 의도적으로 제외되었습니다.
  • 자동 하이퍼‑파라미터 튜닝: 소스는 학습률, LoRA 순위 등 기타 하이퍼‑파라미터의 자동 튜닝에 대한 세부 정보를 제공하지 않으며,これらは soup.yaml에 명시해야 합니다.
  • 데이터 크기 지침: 파인튜닝에 필요한 데이터 세트 크기에 대한 보편적인 규칙은 제공되지 않으며, 사용자는 자신의 데이터로 실험해야 합니다.

결론

Soup은 레이어 스트리밍과 4‑bit 양자화를 통해 4 GB VRAM만을 갖춘 소비자용 랩톱 GPU에서도 8B 매개변수 LLM을 파인튜닝할 수 있음을 보여줍니다. 이 방법은 비트 정확성(상주 훈련과의 일치)을 유지하면서 인프라 요구를 최소화합니다—SSH不要, 단일 구성 파일, 배치 크기 및 양자화의 자동 처리. 프로젝트는 Apache‑2.0 라이선스의 오픈 소스로 남아 있으며, 특히 단일 4 GB 랩톱으로는 수행할 수 없는 하드웨어‑집약적 검증을 위한 커뮤니티 기여를 장려합니다.

Sources

관련

  • 프로젝트
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch