피드로 돌아가기
Make LLM Fine-tuning 2x faster with Unsloth and 🤗 TRL
Hugging Face BlogHugging Face Blog
AI/ML

Unsloth가 Triton 커널 기반 최적화로 LLM 파인튜닝 속도 2배 향상 및 메모리 사용량 40% 감소

Make LLM Fine-tuning 2x faster with Unsloth and 🤗 TRL

2024년 1월 10일7intermediate

Context

LLM 파인튜닝은 계산 비용이 높고 시간이 오래 걸리는 병목 작업이다. 특히 QLoRA 기반 파인튜닝도 여전히 충분히 빠르지 않아 개발 생산성을 제한한다.

Technical Solution

  • Pytorch 모듈을 Triton 커널로 재작성: 수동으로 역전파 단계를 도출하고 최적화된 연산으로 변환하여 메모리 사용량 감소 및 연산 속도 향상
  • FastLanguageModel.from_pretrained 래퍼 제공: 모델 로딩 시 자동으로 최적화된 연산이 적용되며, 기존 transformers API와 호환
  • QLoRA 어댑터 자동 구성: FastLanguageModel.get_peft_model으로 어텐션(q_proj, k_proj, v_proj, o_proj)과 MLP(gate_proj, up_proj, down_proj) 레이어에 LoRA 적용
  • TRL 라이브러리 완전 통합: SFTTrainer, DPOTrainer, PPOTrainer와 직접 호환되어 기존 파이프라인에서 즉시 사용 가능
  • RoPE 스케일링 자동 처리: 최대 시퀀스 길이 설정 시 자동으로 위치 인코딩이 확장되어 추가 구현 불필요
  • 4비트 사전 양자화 모델 지원: Transformers 4.36+ 에서 사전 양자화된 모델을 4배 빠르게 로드하고 메모리 단편화 500MB 감소

Impact

A100 40GB에서 Code Llama 34b는 1.94배 빠르고 VRAM 22.7% 감소, Llama-2 7b는 1.87배 빠르고 39.3% 감소, Mistral 7b는 1.88배 빠르고 65.9% 감소, Tiny Llama 1.1b는 2.74배 빠르고 57.8% 감소했다. 무료 Google Colab T4 인스턴스에서 Llama-2 7b는 1.95배 빠르고 43.3% 메모리 감소, Tiny Llama 1.1b는 3.87배 빠르고 73.8% 감소했다. 전체 59회 벤치마크에서 최대 2.7배 속도 향상과 최대 74% 메모리 절감을 달성했다.

Key Takeaway

파인튜닝 성능 향상은 근사 없이 커널 수준의 정확한 최적화로 달성할 수 있으며, 기존 생태계(HF Hub, transformers, TRL)와의 완전 호환을 유지하면서 투명하게 도입 가능하다는 점이 핵심이다.


Llama, Mistral 기반 LLM을 파인튜닝하는 엔지니어는 기존 SFTTrainer 또는 DPOTrainer 코드를 FastLanguageModel.from_pretrained와 get_peft_model로 감싸기만 하면 정확도 손실 없이 파인튜닝 속도를

1.8~

3.8배 향상시키고 메모리 사용량을 40~74% 줄일 수 있다.

원문 읽기
Make LLM Fine-tuning 2x faster with Unsloth and 🤗 TRL | Devpick