-
Unsloth: Cheeper LLM Trainingmachine learning 2024. 9. 21. 21:34
* Unsloth이 왜 좋은지, 어떻게 좋은지를 설명합니다.
Unsloth 소개
개요
- Danial / Micheal Han 두 명의 개발자가 공개한 Open Source LLM Fine-Tuning Framework입니다.
- “가난한 자의 finetune 솔루션”이라고 불리우며, 이름에 걸맞게 적은 자원(심지어 GTX와 같은 소비자용 그래픽카드)에서도 LLM을 finetune 할 수 있는 방법을 제공합니다.
강점
- 학습 속도의 향상
- Unsloth는 전통적인 학습 기법에 비해 현저한 학습 속도 향상을 제공합니다.
- 사용하는 LLM 모델과 GPU 종류에 따라 성능 차이가 있을 수 있지만, 대부분의 조합에서 기존 학습 기법을 능가하는 성능을 발휘합니다.
- 메모리 사용량 감소
- Unsloth는 메모리 효율화 기술을 적극 활용하여 학습에 필요한 메모리 사용량을 최소화합니다.
- 이를 통해 멀티 GPU를 요구하는 대형 모델도 단일 GPU에서 파인튜닝할 수 있도록 지원합니다.
- 다양한 하드웨어 및 허깅페이스 생태계와의 호환성
- Unsloth는 GTX 1070부터 최신 H100까지 대부분의 NVIDIA GPU를 지원하며, Datasets, SFTTrainer, DPOTrainer, PPOTrainer 등 허깅페이 스 라이브러리와의 호환성을 갖습니다.
- 이를 통해 사용자는 기존에 익숙한 개발 환경을 그대로 활용할 수 있습니다.
How to work
- Intelligent Weight Upcasting (지능형 가중치 업케스팅)
- 일반적으로 QLoRA를 사용할 때 학습 안정화를 위해 모델의 일부 계층을 FP32로 업캐스팅합니다.
- 허깅페이스의 Transformers는 범용적인 모델 아키텍처에 맞춰 업캐스팅을 수행하지만, Unsloth는 Mistral, LLaMA 등 개별 모델에 최적 화하여 메모리 및 연산 효율성을 극대화합니다.
- Manual Autograd (수동 그래디언트 계산)
- Pytorch의 Autograd는 그래디언트를 자동으로 계산하는 핵심 구성 요소이지만, LoRA와 같은 파인튜닝 학습에서는 최적화가 덜 되어 있습니다.
- Unsloth는 이러한 자동 미분 계산을 더 작은 연산으로 최적화하여 수동으로 계산함으로써 연산 비용을 줄입니다.
- Triton 커널
- Unsloth는 OpenAI가 개발한 고성능 컴퓨팅 언어인 Triton을 사용하여 학습 코드의 핵심 부분을 재작성해 성능을 향상시켰습니다.
- Triton은 고성능 GPU 코드를 간단하게 작성할 수 있게 해주며, 이를 통해 Unsloth는 파인튜닝의 효율성을 높였습니다.
- xFormers 프레임워크 사용
- Unsloth는 커스텀 Triton 커널로 트랜스포머 모델의 여러 구성 요소를 최적화합니다.
- 특히 Flash-Attention을 기본적으로 사용하여 가속화를 도모합니다. 이를 통해 메모리 사용량을 줄이고 연산 속도를 높입니다.
'machine learning' 카테고리의 다른 글
딥러닝 하드웨어 담론 (1) (4) 2024.11.15 Personalized LLMs: 개인화된 LLM 만들기 (0) 2024.11.11 LIMA: Less Is More for Alignment 리뷰 (0) 2024.11.02 ai가 오픈소스여할 이유 (2) 2024.10.20 Character-LLM: A Trainable Agent for Role-Playing 리뷰 (2) 2024.09.21