PyTorchKR
- 3월 말 소개드렸던 TorchTune이 정식 출시되었습니다. PyTorch 팀이 새롭게 공개한
torchtune
라이브러리는 대형 언어 모델을 쉽게 파인 튜닝할 수 있는 PyTorch 네이티브 도구입니다. 이 도구는 사용자가 다양한 GPU에서 인기있는 LLM들을 파인튜닝할 수 있도록 지원합니다.torchtune
은 공개된 모델 가중치 준비부터 학습 상태 로깅, 모델 양자화 후 평가에 이르기까지 전체 파인튜닝 과정(workflow)를 한꺼번에 지원합니다..
- 파이토치 한국 사용자 모임에서는 torchtune의 한국어 리소스들을 준비 중입니다.
torchtune, PyTorch 팀이 공개한 LLM 파인튜닝 도구
소개
torchtune
은 대규모 언어 모델을 파인 튜닝하는 과정에서 필요한 다양한 사용자 정의 요구 사항을 충족하기 위해 설계되었습니다. torchtune
은 파이토치의 설계 원칙을 그대로 반영하고 있습니다. 즉, 모듈식 구성 요소를 통해 다양한 LLM의 구현을 지원하며, 프레임워크나 별도의 학습 라이브러리 없이 PyTorch만을 사용하여 파인 튜닝할 수 있는 간단하고 변경하여 사용 가능한 레시피들을 함께 제공합니다.
torchtune
은 기존의 다른 LLM 파인 튜닝 도구들과 비교하여 더욱 모듈식이며 확장 가능한 접근 방식을 제공합니다. 사용자는 더 많은 제어 권한과 가시성을 가지고 특정 사용 사례에 맞게 모델을 조정할 수 있습니다. 또한, torchtune
은 Hugging Face Hub, PyTorch FSDP, Weights & Biases 등 인기 있는 도구들과의 통합을 제공하여 사용자가 더 쉽게 LLM을 파인 튜닝하고 활용할 수 있도록 합니다.
주요 특징
-
다양한 모델 지원: 현재
torchtune
은 Llama2, Mistral, Gemma 등 다양한 모델 크기를 지원합니다. 향후 70B 버전과 MoE를 포함한 새로운 모델 지원이 추가될 예정입니다. -
모듈식 구성 요소:
torchtune
은 다양한 모델 아키텍처와 파라미터 효율적인 파인 튜닝 기술을 지원하는 구성 요소를 제공합니다. -
학습 로깅 및 지표(metric): 교육 과정에서 발생하는 로그와 메트릭을 추적하여 교육 프로세스에 대한 통찰력을 제공합니다.
-
튜닝 후 양자화: 튜닝이 완료된 모델을 양자화하여 모델의 효율성을 높일 수 있습니다.
-
벤치마크 평가: 파인 튜닝된 모델을 인기 있는 벤치마크에서 평가할 수 있습니다.
-
지역 추론 실행: 테스트 목적으로 파인 튜닝된 모델을 로컬에서 실행할 수 있습니다.
-
메모리 효율성: 모든 레시피는 24GB VRAM을 갖춘 일반 GPU부터 데이터 센터에서 찾을 수 있는 더 큰 옵션에 이르기까지 다양한 설정에서 테스트되었습니다.
-
다양한 도구 지원: Hugging Face Hub, EleutherAI's LM Eval Harness, PyTorch FSDP 등과 같은 인기 있는 도구 및 라이브러리와의 통합을 통해 사용자가 훈련을 빠르게 시작할 수 있도록 지원합니다.
지원 도구
Hugging Face Hub
Hugging Face Hub는 오픈 소스 모델과 데이터셋의 광범위한 저장소를 제공하며, torchtune
은 tune download
CLI 명령을 통해 이 플랫폼과 원활하게 통합됩니다. 이를 통해 사용자는 손쉽게 첫 번째 모델 파인 튜닝을 시작할 수 있습니다.
PyTorch FSDP
PyTorch FSDP는 학습을 확장하는 데 사용됩니다. 특히, 여러 소비자급 카드(예: NVIDIA의 3090/4090)가 장착된 머신에서 훈련할 때 유용합니다. torchtune
은 FSDP를 활용한 분산 레시피를 제공하여 이러한 설정의 이점을 취할 수 있도록 합니다.
Weights & Biases
Weights & Biases 플랫폼은 학습 중에 메트릭과 모델 체크포인트를 로깅하는 데 사용됩니다. 이를 통해 사용자는 파인 튜닝 실행의 모든 설정, 메트릭 및 모델을 한 곳에서 추적할 수 있습니다.
EleutherAI의 LM Evaluation Harness
파인 튜닝된 모델을 평가하는 것은 파인 튜닝이 원하는 결과를 제공하는지 이해하는 데 중요합니다. torchtune
은 EleutherAI의 LM Evaluation Harness를 활용한 간단한 평가 레시피를 포함하여 표준 LLM 벤치마크에 쉽게 접근할 수 있습니다.
ExecuTorch
torchtune
으로 파인 튜닝된 모델은 ExecuTorch로 쉽게 내보낼 수 있으며, 이를 통해 모바일 및 엣지 장치에서 효율적인 추론을 실행할 수 있습니다.
torchao
torchtune
은 torchao의 양자화 API를 사용하여 파인 튜닝된 모델을 4비트 또는 8비트로 간단하게 양자화할 수 있는 포스트-트레이닝 레시피를 제공합니다.
사용 방법
먼저 PyTorch 환경을 준비한 뒤, torchtune
을 설치해야 합니다:
pip install torchtune
torchtune
을 사용하여 첫 번째 대형 언어 모델(LLM)을 파인 튜닝하는 방법을 소개합니다. 이 가이드는 Llama2 7B 모델을 예로 들어 모델 다운로드부터 평가, 양자화, 추론까지의 전체 워크플로를 단계별로 설명합니다.
모델 다운로드
- 모델 가중치 접근 확인: 먼저,
meta-llama
리포지토리 지침을 따라 Llama2 모델 가중치에 접근할 수 있는지 확인합니다. - 가중치 다운로드 명령어:
tune download meta-llama/Llama-2-7b-hf --output-dir /tmp/Llama-2-7b-hf --hf-token <HF_TOKEN>
- 위 환경 변수
HF_TOKEN
을 설정하거나 명령에--hf-token
을 추가하여 접근을 검증하세요. 토큰은 HuggingFace 설정에서 발급받을 수 있습니다.
파인 튜닝 레시피 실행
-
단일 GPU에서 Llama2 7B + LoRA 실행:
tune run lora_finetune_single_device --config llama2/7B_lora_single_device
-
분산 트레이닝 (2개의 GPU 사용):
tune run --nproc_per_node 2 full_finetune_distributed --config llama2/7B_full
-
torchrun
명령어는 레시피 지정 이전에 위치해야 합니다. 이후의 CLI 인자는 설정에 영향을 주지 않고 명령어를 덮어씁니다.
설정 수정 방법
-
CLI로 실행 시 설정 덮어쓰기:
tune run lora_finetune_single_device --config llama2/7B_lora_single_device batch_size=8 enable_activation_checkpointing=True max_steps_per_epoch=128
-
로컬 설정 복사 및 수정:
tune cp llama2/7B_full ./my_custom_config.yaml
- 위에서 복사 및 수정한 설정을 사용하여 사용자 정의 레시피를 실행:
tune run full_finetune_distributed --config ./my_custom_config.yaml
위의 단계를 통해 torchtune
을 사용하여 LLM을 효과적으로 파인 튜닝할 수 있습니다. 추가적인 CLI 명령어와 옵션에 대해서는 tune --help
를 확인하고, 설정 사용 및 업데이트에 대한 자세한 정보는 config deep-dive를 참고하세요.
더 읽어보기
torchtune 출시 공지
torchtune GitHub 저장소
torchtune 튜토리얼
https://pytorch.org/torchtune/main/
https://pytorch.org/torchtune/stable/tutorials/first_finetune_tutorial.html
https://pytorch.org/torchtune/stable/tutorials/e2e_flow.html
TorchTune 소개 글 (공식 출시 전)
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래쪽에 좋아요를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~