본문 바로가기

LLM

LLaMA Factory로 LLM 파인튜닝 시작하기

반응형

특정 도메인에 맞춰서 LLM을 파인튜닝해보고 싶은데 어디서부터 시작해야 할지 막막하신 분들 많으실 텐데요, 지금 가장 널리 쓰이는 오픈소스 파인튜닝 프레임워크인 LLaMA Factory 기준으로 정리해봤어요. 이번엔 공식 깃허브 리포지토리에 있는 하드웨어 요구사항 표까지 직접 확인하고 썼어요.

LLaMA Factory가 왜 표준처럼 자리 잡았나

LLaMA Factory는 깃허브에서 70,600개가 넘는 스타를 받은 오픈소스 프레임워크예요. 포크 수도 8,600개가 넘고, 아마존이나 NVIDIA, 알리윤 같은 조직들도 채택했다고 해요. Llama, Qwen, DeepSeek, Gemma, Mistral, Phi, GLM-4를 포함해서 100개가 넘는 모델 아키텍처를 지원하고, SFT(지도 파인튜닝), DPO, RLHF, KTO, ORPO 같은 여러 학습 방법을 한 프레임워크 안에서 다 다룰 수 있어요.

 

최근 업데이트 로그를 보면 개발 속도도 꽤 빠른 편이에요. 최신 모델이 나오면 며칠 안에 지원이 추가되는 경우가 많고, 최근에는 메가트론 코어 기반 학습 백엔드나 GPT-OSS 계열 모델 파인튜닝 지원이 새로 추가됐어요. 추론 백엔드로는 트랜스포머스뿐 아니라 vLLM과 SGLang도 선택할 수 있어서, 학습부터 서빙 직전 검증까지 한 프레임워크 안에서 이어갈 수 있는 구조예요.

 

가장 큰 장점은 LLaMA Board라는 웹 UI를 제공한다는 점이에요. 코드 없이 웹 인터페이스에서 데이터셋을 고르고 하이퍼파라미터를 설정해서 학습을 돌릴 수 있어요.

하드웨어 요구사항, 방법별로 이렇게 갈려요

공식 문서에 나온 하드웨어 요구사항 표를 보면 같은 모델이라도 학습 방법에 따라 필요한 GPU 메모리가 극단적으로 갈려요.

 

학습 방법 정밀도 7B 13B 30B 65B 8x7B(MoE)
풀 파인튜닝 16비트 160GB 320GB 600GB 1,200GB 900GB
프리즈 튜닝 16비트 20GB 40GB 120GB 240GB 200GB
LoRA 16비트 16GB 32GB 80GB 160GB 120GB
QLoRA 8비트 10GB 16GB 40GB 80GB 80GB
QLoRA 4비트 6GB 12GB 24GB 48GB 32GB

 

이 표만 봐도 왜 대부분의 개인이나 소규모 팀이 풀 파인튜닝 대신 LoRA나 QLoRA를 쓰는지 명확해지실 거예요. 7B 모델을 풀 파인튜닝하려면 160GB가 필요한데, QLoRA 4비트로 낮추면 6GB까지 떨어져요. 소비자용 GPU 한 장으로도 충분히 시도해볼 수 있는 수준이 되는 거예요.

그렇다고 진입장벽이 아예 없는 건 아니에요

코드 없는 웹 UI가 있다고 해도 여전히 알아야 할 게 있어요. 지시 튜닝을 위한 JSON 데이터 구조를 이해해야 하고, 하이퍼파라미터 선택, 양자화 트레이드오프, LoRA 순위(rank) 설정 같은 개념은 웹 UI를 쓰더라도 어느 정도 알고 계셔야 제대로 된 결과가 나와요. 데이터셋도 그냥 던져 넣으면 되는 게 아니라 SFT, DPO, RLHF 각각에 맞는 포맷으로 준비해야 하고, dataset_info.json 파일을 직접 업데이트해줘야 해요.

실전: LoRA로 7B 모델 파인튜닝 시작하기

가장 접근성 좋은 방식은 LoRA(Low-Rank Adaptation)예요. 전체 파라미터를 다시 학습하는 대신 일부 저랭크 행렬만 학습해서 메모리 사용량을 크게 줄이는 방식이에요.

# LLaMA Factory 설치
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"

# 웹 UI로 실행 (LLaMA Board)
llamafactory-cli webui

 

웹 UI를 띄우면 브라우저에서 베이스 모델, 데이터셋, 학습 방식(LoRA, QLoRA, 풀 파인튜닝)을 선택하고 학습 진행 상황을 실시간 그래프로 확인할 수 있어요. CLI로 직접 학습을 돌리고 싶으시면 아래처럼 설정 파일을 지정해서 실행할 수도 있어요.

llamafactory-cli train \
  --stage sft \
  --do_train \
  --model_name_or_path meta-llama/Llama-3.1-8B \
  --dataset your_dataset_name \
  --finetuning_type lora \
  --lora_rank 8 \
  --output_dir ./output \
  --per_device_train_batch_size 2 \
  --num_train_epochs 3

 

여기서 lora_rank 값이 클수록 표현력은 늘어나지만 메모리 사용량과 학습 시간도 같이 늘어나요. 처음 시작하실 땐 8이나 16 정도로 낮게 잡고, 결과를 보면서 조정해나가시는 걸 추천드려요. 학습이 끝나면 --infer_backend vllm 옵션으로 vLLM을 붙여서 바로 추론 성능까지 확인해볼 수 있어요.

 

파인튜닝이 정답이 아닌 경우도 있어요

 

한 가지 짚고 넘어갈 부분이 있는데요, 파인튜닝된 모델은 그 자체로 완성된 제품이 아니에요. GPU 인프라, 데이터셋 준비, 어느 정도의 ML 전문 지식이 필요하고, 이 세 가지 리소스를 다 갖춘 팀이나 개인이 생각보다 많지 않아요. 실제로 제조업이나 건설업 분야에서 LLaMA Factory를 도입한 조직들의 사례를 보면, 파인튜닝된 모델을 유지보수하는 운영 부담이 예상보다 저평가되는 경우가 많다는 지적도 있었어요. 베이스 모델이 계속 업데이트되니까 재학습이 필요하고, 데이터셋도 지속적으로 갱신해야 하거든요.

 

만약 훈련 파이프라인을 직접 관리하지 않고도 도메인 특화된 결과가 필요하신 거라면, 파인튜닝 대신 프롬프트 엔지니어링이나 RAG로 먼저 해결이 되는지부터 확인해보시는 게 순서상 맞아요. 파인튜닝은 프롬프트나 RAG로도 안 되는 문제, 그러니까 특정 스타일이나 포맷을 일관되게 따라야 하거나 도메인 용어 자체를 모델이 이해해야 하는 상황에서 꺼내드는 카드로 생각하시면 될 것 같아요.

정리하면

LLaMA Factory는 100개 넘는 모델을 지원하고 웹 UI까지 갖춘 가장 완성도 높은 오픈소스 파인튜닝 프레임워크지만, ML 전문 지식과 GPU 인프라, 정제된 데이터셋이라는 세 가지 전제 조건이 여전히 필요해요.

위에 정리한 하드웨어 요구사항 표를 기준으로 본인이 가진 GPU로 어느 방식까지 시도해볼 수 있는지 먼저 계산해보시고, 이 조건을 갖추고 계신 팀이라면 지금 가장 안전한 선택이에요. 그렇지 않다면 파인튜닝보다 가벼운 대안부터 먼저 검토해보시는 걸 추천드려요.

반응형