• 파인튜닝 관련 용어 정의

    • Fine-tuning(파인튜닝): 사전학습된 베이스 모델을, 특정 목적에 맞게 추가 학습해 행동/성능을 조정.

    • PEFT(Parameter-Efficient Fine-Tuning): 파인튜닝을 “전체 가중치 업데이트 없이” 일부 파라미터만 학습하도록 만든 기법

    • LoRA(Low-Rank Adaptation): PEFT의 대표 기법

    • QLoRA: 양자화 기술을 통한 자원최적화 LoRA 학습

    • Adapter(어댑터): LoRA에서 학습되는 추가 파라미터 파일 묶음을 통칭. 즉, 학습의 결과물.

      image.png

    • Merge(병합): 베이스 모델과 LoRA어댑터를 합쳐 단일 모델 가중치로 만드는 작업.

  • 파인튜닝의 필요성

    • 원하는 출력/표현방식/단어/톤 을 지정하고 싶을때
      • 예시)“고객님 …”으로 시작하게 하고 싶다면
    • 추가적인 학습을 통해 특정 도메인 지식을 주입하고 싶을때
      • 예를 들어)
        • 2026년 현시점 이 회사 대표가 누구인지
        • 2026년 회사 매출이 얼마인지
      • 파인튜닝이 아닌 RAG를 통해 컨텍스트로 LLM을 보완 하는것도 하나의 방안
    • 기존의 특정 지식에 반하는 다른 답변을 유도할때
      • 이런 작업은 기존 모델의 지식체계를 바꾸는 행위이므로 많은 학습 데이터 필요
  • 우리 수업에서의 활용

    image.png

    • 토큰 과금이 상대적으로 많이 발생하고 있는 최초 채팅메시지 분류파트에서 sLLM 도입

    • 다만, 정확도를 높히기 위해 수천건의 질의/응답 데이터를 학습시켜 분류모델로 파인튜닝

    • 기본 모델 테스트)

      
          {"instruction": "내 주문 내역 보여줘", "response": "get_my_orders"},
          {"instruction": "내 회원정보 알려줘", "response": "get_my_profile"},
          {"instruction": "환불 어떻게 해?", "response": "get_policy"},
          {"instruction": "세금계산서 발행 가능해?", "response": "get_policy"},
          {"instruction": "영수증 발급 어떻게 해?", "response": "get_policy"},
      
      • 다양한 질문들에 대해 /chats/tunning을 통해 get_my_orders, get_policy, get_my_profile 이 3가지로 적절히 분류되는지 확인
      • 특히, 주문/회원정보는 의미상으로 구분이 가능하지만 get_policy의 경우 어떤것이 정책인지 확인하기 어려운것이 한계
      • 이 한계를 파인튜닝을 통해 추가학습으로 해결
  • 대표적인 파인튜닝 방식: PEFT, LoRA/QLoRA

    • PEFT(Parameterized Efficient Fine-Tuning)
      • 전체 모델 파라미터를 전부 업데이트하지 않고, 일부 파라미터만 학습해서 비용과 메모리를 크게 줄이는 파인튜닝 기법
      • GPU/VRAM이 작거나, 데이터가 수백~수천 건 정도로 제한적일때 적합
      • 대표 기법: LoRA, Prefix Tuning, Prompt Tuning 등 (LoRA가 가장 널리 쓰임)
    • LoRA(Low-Rank Adaptation)
      • LoRA는 PEFT의 기법 중 하나로서, 기본 모델(베이스)의 가중치는 동결(freeze)하고, 특정 레이어에 저랭크(low-rank) 행렬만 학습하는 방식
        • 여기서 rank라는 것은 학습해야 할 정보의 양이라고 이해
        • 저랭크는 의미있는 정보만, 고랭크는 대부분의 정보를 모두 의미
      • LoRA는 학습해야 하는 파라미터 수가 급격히 줄어 학습 속도 향상
    • QLoRA(Quantized LoRA)
      • 기본모델을 양자화(압축, 이산화)해 메모리를 줄인 상태에서 LoRA를 학습하는 방식.
      • 낮은 성능 환경에서도 현실적으로 파인튜닝 가능
  • 파인튜닝 절차

    • 모델(llama)

      • llama는 Meta가 공개한 오픈소스 모델
      • Hugging Face에 meta-llama/* 형태로 공개
      • 버전(2.x, 3.x 등), 크기(파라미터 수-1B,3B ), 목적(Base vs Instruct)에 따라 구분
      • Instruct 모델이란 base 모델 기반에 튜닝 목적의 모델
      • 우리 수업에서는 llama-3.2-3B-Instruct 모델 사용 예정
    • 실습환경세팅

      • Hugging Face 토큰 준비

        • 모델을 튜닝하려면 hugging face라는 오픈소스 AI 플랫폼에서 모델 다운로드

        • 허깅페이스 회원 가입 및 토큰 발급(Access Tokens에서)

        • 토큰을 보안관리를 위해 운영체제 환경 변수로 주입

          # mac/linux
          export HF_TOKEN="hf_xxx"
          # windows powershell
          setx HF_TOKEN "hf_xxx"
          
      • meta-llama/* 모델은 사전 접근 권한 승인 신청 필요

        • HF 계정에서 meta-llama/Llama-3.2-3B-Instruct에 대해 모델 접근 권한/라이선스 동의가 필요

          image.png

        • 승인 전에는 학습시 401/403으로 실패할 수 있음

        • 승인까지 최소 1~3일 정도 가량 소요되므로, 실습시 미리 신청

          image.png

    • 실습 절차 및 핵심 코드 설명

      • 학습 데이터 준비
      • 파인튜닝 학습진행(adapter파일생성)
      • hugginface 업로드