TorchTune: LLM 파인튜닝을 위한 PyTorch-Native 라이브러리

TorchTune은 LLM(Large Language Model)의 파인튜닝을 위한 네이티브(PyTorch 기반) 라이브러리입니다. 이 라이브러리는 인기 있는 LLM의 네이티브-PyTorch 구현을 제공하며, 다양한 포맷의 체크포인트 지원, 파인튜닝 기법에 대한 교육 레시피와 벤치마크 제공, 훈련된 모델의 평가, HuggingFace Datasets와의 통합 등을 지원합니다.

:warning:주의:warning:: TorchTune은 아직 정식 출시 전입니다.


소개

TorchTune은 LLM을 쉽게 작성, 파인튜닝하고 실험할 수 있는 네이티브-PyTorch 라이브러리입니다. 이 라이브러리는 Llama2와 Mistral 모델을 지원하며, Full Finetuning, LoRA, QLoRA 등 다양한 파인튜닝 메소드를 지원합니다. PyTorch 사용자 또는 LLM에 관심 있는 개발자라면, TorchTune을 통해 모델의 성능을 극대화하고 연구나 프로젝트에 적용할 수 있는 방법을 알아볼 수 있습니다.

여러 인기 있는 LLM 모델의 구현을 제공하며, HuggingFace Datasets와의 통합, 분산 훈련 지원, 다양한 파인튜닝 기법에 대한 훈련 레시피 및 벤치마크 제공 등을 특징으로 합니다. 이 라이브러리는 LLM의 파인튜닝과 실험을 더 쉽고 접근하기 쉽게 만듭니다. 주요 기능들은 다음과 같습니다:

주요 기능

  • 인기 있는 LLM의 네이티브-PyTorch 구현: 사용자는 PyTorch를 기반으로 구현된 다양한 LLM 모델을 쉽게 사용하고 실험할 수 있습니다. 이는 모델의 성능을 최대화하고, 파인튜닝 과정을 통해 특정 태스크에 맞게 모델을 최적화하는 데 도움을 줍니다. 현재 지원하는 모델들과 파인튜닝 방식은 다음과 같습니다:
Model Sizes Finetuning Methods
Llama2 7B Full Finetuning [single device, distributed] LoRA [single device, distributed] QLoRA single device
Llama2 13B Full Finetuning, LoRA
Mistral 7B Full Finetuning and LoRA are WIP and will be added soon
  • 다양한 포맷의 체크포인트 지원: HF(HuggingFace) 포맷을 포함하여, 다양한 포맷의 체크포인트를 지원합니다. 이를 통해 사용자는 다양한 출처에서 모델을 가져와 TorchTune 환경에서 직접 사용할 수 있습니다.
  • 인기 있는 파인튜닝 기법에 대한 교육 레시피 제공: 참조 벤치마크와 함께, 다양한 파인튜닝 기법에 대한 훈련 레시피를 제공합니다. 이 레시피들은 파인튜닝 과정의 정확성을 체크하며, 사용자가 모델을 더 쉽게 최적화하고 실험할 수 있게 합니다.
  • 훈련된 모델의 평가 지원: EleutherAI Eval Harness를 사용하여 훈련된 모델의 성능을 평가합니다. 이를 통해 모델의 성능을 객관적으로 비교하고 검증할 수 있습니다.
  • HuggingFace Datasets와의 통합: 훈련 과정에서 HuggingFace Datasets를 쉽게 사용할 수 있도록 통합합니다. 이는 다양한 데이터셋에 대한 접근성을 높이고, 훈련 과정을 더욱 효율적으로 만듭니다.
  • 분산 훈련 지원: PyTorch Distributed의 FSDP(Fully Sharded Data Parallel)를 사용하여 분산 훈련을 지원합니다. 이는 대규모 모델 훈련 시 자원 사용을 최적화하고, 훈련 속도를 향상시키는 데 도움이 됩니다.
  • YAML 구성을 통한 훈련 실행 쉽게 설정: 훈련 실행을 쉽게 구성할 수 있는 YAML 설정을 제공합니다. 이를 통해 사용자는 훈련 과정을 더욱 유연하게 설정하고 관리할 수 있습니다.
  • [지원 예정] 낮은 정밀도 데이터 타입 및 양자화 기술 지원: TorchAO에서 제공하는 낮은 정밀도 데이터 타입 및 양자화 기술을 지원할 예정입니다. 이는 모델의 효율성을 높이고, 리소스 사용을 최소화하는 데 도움이 됩니다.
  • [지원 예정] 다양한 추론 엔진과의 상호운용성: 여러 추론 엔진과의 상호운용성을 지원할 예정으로, 이를 통해 다양한 환경에서 모델을 쉽게 배포하고 사용할 수 있게 됩니다.

사용 방법

TorchTune은 아직 :warning:공식 릴리즈 전:warning:으로, GitHub 저장소를 복제하여 설치 및 사용할 수 있습니다.

참고: TorchTune은 현재 최신 안정화 버전인 PyTorch 2.2 버전에서만 테스트되었습니다.

git clone https://github.com/pytorch/torchtune.git
cd torchtune
pip install -e .

TorchTune 패키지가 올바르게 설치되었는지 확인하기 위해 다음 명령어를 실행할 수 있습니다:

tune

그러면 다음과 같은 출력을 보게 됩니다:

usage: tune [options] <recipe> [recipe_args]
tune: error: the following arguments are required: recipe, recipe_args

이 메시지는 tune 명령어가 성공적으로 설치되었고 실행 준비가 되었음을 의미합니다. 하지만 실제로 파인튜닝 작업을 시작하려면, 필요한 reciperecipe_args 인자를 제공해야 합니다.

파인튜닝을 시작하기 위해서는 먼저 Llama2 모델 가중치를 다운로드해야 합니다. 이후, tune download 명령어를 사용하여 모델과 토크나이저, 사용 가이드를 다운로드할 수 있습니다. 파인튜닝에 사용할 수 있는 다양한 레시피가 포함되어 있으며, 이를 통해 단일 또는 다중 장치에서 Full Finetuning, LoRA, QLoRA 파인튜닝을 수행할 수 있습니다 .

TorchTune은 파인튜닝에 특화된 다른 라이브러리와 비교할 때, PyTorch의 네이티브 구현과 통합된 교육 레시피, 다양한 모델 및 파인튜닝 방법 지원 등에서 차별화됩니다. 특히, HuggingFace Datasets와의 통합 및 분산 훈련 지원은 사용자가 더 넓은 범위의 데이터셋과 하드웨어 환경에서 모델을 훈련하고 실험할 수 있게 해줍니다.

파인튜닝 시의 자원 요구사항

파인튜닝 중 GPU 메모리 최대치(Peak Memory) 기준으로 다음과 같습니다. 설정 및 학습 과정의 변경 등으로 필요한 메모리 최대치는 달라질 수 있습니다. 메모리 최대치(Peak Memory)를 얻기 위해 사용된 특정 설정들, 예를 들어 배치 사이즈, FSDP, 활성화 체크포인팅, 최적화기 등에 대한 자세한 내용은 표에 연결된 설정을 확인하세요. 특정 하드웨어 리소스는 사용 가능한 하드웨어의 예로 제시된 것입니다:

Example HW Resources Finetuning Method Config Model Peak Memory per GPU
1 x RTX 4090 QLoRA qlora_finetune_single_device Llama-7B 9.29 GB *
2 x RTX 4090 LoRA lora_finetune_distributed Llama-7B 14.17 GB *
1 x RTX 4090 LoRA lora_finetune_single_device Llama-7B 17.18 GB *
1 x A6000 Full finetune full_finetune_single_device Llama-7B 27.15 GB *
4 x RTX 4090 Full finetune full_finetune_distributed Llama-7B 12.01 GB *

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있으니 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 힘이 됩니다~ :star_struck:

1개의 좋아요