- FSDP(Fully Sharded Data Parallel) 와 QLoRA(Quantization + Low-Rank Adaptation")를 결합한 오픈 소스
- 일반 데스크톱 컴퓨터와 표준 게이밍 GPU 두 개로 70b 크기의 언어 모델을 효율적으로 미세조정 가능
배경
- 데이터 센터급 하드웨어와 데스크톱 컴퓨터에 탑재된 게이밍 GPU는 큰 성능 차이가 없음에도 불구하고, 가격 차이가 매우 큼
- 게이밍 GPU는 메모리가 적어 대규모 언어 모델을 훈련시키기 어려움
- Answer.AI는 이 문제를 해결하기 위해 저렴한 게이밍 GPU를 사용하여 최고의 오픈 소스 모델을 훈련시키는 방법을 찾고자 함
QLoRA: 단일 GPU에서 더 큰 모델 훈련하기
- QLoRA는 양자화와 LoRA의 결합으로, 모델의 가중치를 4비트로 줄여 GPU 메모리 사용량을 감소시킴.
- LoRA는 대규모 언어 모델 전체를 훈련시키지 않고, 작은 어댑터 행렬을 추가하여 훈련함으로써 메모리 제약을 피함.
- QLoRA는 65b 모델을 48GB 카드에서 훈련할 수 있게 하지만, 70b 모델을 24GB 게이밍 GPU에서 훈련하기에는 여전히 부족함.
FSDP: 여러 GPU로 훈련 규모 확장하기
- FSDP(Fully Sharded Data Parallel)는 모델의 파라미터를 여러 GPU에 분산시켜 동시에 사용할 수 있게 함.
- FSDP는 DDP(Distributed Data Parallel)의 성능을 단일 GPU로는 수용할 수 없는 큰 모델에도 적용할 수 있게 함.
- 예를 들어, 70b(700억 매개변수) 비양자화 모델은 140GB의 RAM을 사용하지만(각 매개변수가 16비트, 즉 2바이트로 저장되기 때문에) NVIDIA의 H100 카드(단일 카드당 약 $40,000의 비용!)도 부족. 80GB RAM이 필요
- 그러나 FSDP를 사용하면 4개의 H100 GPU를 결합하여 총 320GB RAM을 만들 수 있음. 그리고 $150000을 절약
FSDP와 QLoRA 결합하기
- Answer.AI는 QLoRA로 모델 크기를 줄이고, FSDP로 이를 여러 24GB 게이밍 카드에 분산시켜 효율적인 훈련을 가능하게 함.
- 이를 통해 70b 모델을 일반 게이밍 GPU 두 개로 훈련할 수 있게 됨.
- 2023년 말에 FSDP와 QLoRA를 결합하는 아이디어를 논의한후 필요한 문제들을 해결함.
- 이 과정에서 다양한 기술과 라이브러리들이 결합되어 사용됨
- 양자화된 매개변수를 모델의 "Computation Type"과 동일한 데이터 유형으로 저장
- 전체 그라디언트를 저장하지 않는 대신 모델 전체의 여러 '체크포인트'에 활성화를 저장한 다음 필요에 따라 순방향 계산 단계를 다시 실행하여 그라디언트를 다시 계산하는 그라디언트 체크포인트
- CPU 를 사용하지 않을 때 GPU가 아닌 CPU RAM에 무게를 저장하여 필요한 GPU 메모리를 대폭 줄이는 CPU 오프로딩
- Flash Attention 2 :메모리 최적화된 Cuda 커널을 사용하여 Attention을 효율적으로 계산
- HQQ(Half-Quadratic Quantization)를 발견하여 FSDP와 연동(GPTQ에 비해 50배 빠르고 정확)
FSDP/QLoRA 사용 방법
- FSDP를 사용하려면 두 개 이상의 GPU가 필요함. (Runpod 에서 시간당 $0.6에 듀얼 3090 박스 이용 가능)
- 최신 버전의 Transformers, PEFT, Bitsandbytes(및 이를 사용하는 경우 HQQ)를 설치하고, Answer.AI의 저장소를 클론한 후 README를 따라 실행함.
- 2개의 24GB 카드에서 알파카를 훈련하려면
python train.py --train_type qlora --dataset alpaca --batch_size 8 --gradient_accumulation_steps 2 --output_dir qlora_output --log_to wandb - 아직 초기 단계임(알파/프리뷰)
- 몇주 안에 벤치마킹 결과도 공개 예정
GN⁺의 의견
- 이 기사는 AI와 머신 러닝 분야에 종사하는 사람들에게 매우 흥미로울 것임. 특히, 대규모 언어 모델을 효율적으로 훈련시킬 수 있는 새로운 방법을 제시하기 때문에 주목할 만함.
- 이 기술이 성공적으로 널리 사용된다면, AI 연구와 개발에 있어서 비용 장벽을 크게 낮출 수 있을 것임. 이는 소규모 연구실이나 개인 개발자들에게도 큰 기회가 될 수 있음.
- 하지만, 이러한 접근 방식이 실제로 널리 채택되기 위해서는 안정성과 사용 편의성이 중요한 요소가 될 것임. 현재는 아직 초기 단계이므로, 커뮤니티의 테스트와 피드백을 통해 시스템이 개선되어야 함.
- 새로운 기술을 도입할 때는 항상 기존 시스템과의 호환성, 성능, 비용 등을 고려해야 함. 이 기술을 선택함으로써 얻을 수 있는 이점은 대규모 모델 훈련의 접근성 향상이지만, 아직 초기 단계이므로 안정성과 지원 측면에서 단점이 있을 수 있음.