본문 바로가기
컴퓨터공학 + HCI/AI

LLM 맞춤화 방법

by Tay Kim 김태희 2026. 1. 7.

기존 LLM을 맞춤형으로 사용하기 위한 과제로, 사전학습된 모델(이미 존재하는 데이터를 학습함)이어서 생기는 문제가 있습니다.

  • 맞춤형 출력(Tailored Outputs)이 필요함
  • 부족한 콘텍스트(Missing Context)로 특정 문서가 사전 학습 데이터에 포함되지 않음
  • 전문 용어(Specialized Vocabulary)와 같은 고유한 용어나 개념을 다루지 못함

이와 같은 문제를 해결하고 LLM을 맞춤화하기 위한 튜닝(Tuning)이 필요함

 

LLM 맞춤화 방법 (4가지)

    1. Prompt Engineering: 입력 프롬프트를 설계 및 개선하여 모델 출력을 조정
      • 별도의 전문지식이 필요하지 않음
      • 모델 파라미터를 학습하지 않고(사전 학습된 모델은 이미 파라미터가 학습되어 있음) 입력 프롬프트를 설계해서 출력 형식을 유도
      • 장점: 저비용으로 모델 학습 없이 구현 가능, 코드 작성 없이 빠른 적용 가능
      • 단점: 복잡한 도메인이나 데이터에서 정확도가 떨어질 수 있음
    2. RAG(Retrieval Augmented Generation): 검색기 추가
      • 기존의 사전학습 모델에 기업의 사내 데이터베이스 등 연결해 검색기 추가
      • 대기업의 경우, 데이터 유출 문제에 민감. LLM을 사용해도 유로 api를 사용하지 않고, 오픈소스를 파인튜닝해서 사용하는 추세. 유료 API를 사용해도 모니터링을 해서 데이터가 입력되지는 못하도록 하고 있음
      • 제미나이에 사진이나 파일을 올리고 이를 참고해서 답변을 하도록 하는 것도 RAG
      • 단점: 모델 전체 재학습(풀파인튜닝) 보다는 비용이 덜 들지만(장점: 비용효율성), 프롬프트 엔지니어링보다는 비용이 듦, 콘텍스트가 부족한 태스크에서는 효과가 제한적
    3. Full Fine Tuning: 모든 파라미터를 업데이트해 특정 태스크에 맞춤
      1. 사전 학습된 LLM을 소규모 태스크 데이터셋으로 추가 학습해 특정 태스크에 최적화 함
      2. 단점: 파라미터 수가 많아 학습을 위해 많은 계산 자원이 필요 - 높은 비용
    4. PEFT(Parameter-Efficient Fine-Tuning): 선택한 소수의 파라미터만 업데이트
      1. 계산량이 줄어 빠른 학습 속도
      2. 사전 학습 데이터가 보존되어 기존 가중치가 거의 유지됨
      3. 대표적인 모델: LoRA(Low-Rank Adaptation). 어댑터 행렬 2개를 가지고 있다
      4. 일부 내용만 튜닝한다

 

PEFT 실습 (순서 참고)

      1. 데이터셋 로드
        • KLUE-STS / KLUE: Sts가 문장 유사도를 뜻함 (STS: Semantic Textual Similarity(문장 의미 유사도))
        • https://huggingface.co/datasets/mteb/KLUE-STS
        • https://huggingface.co/datasets/klue/klue
        • 데이터셋이 테이블 형태이므로 Pandas에 대한 이해가 필요
        • 원본은 문장 유사도(0~5) 데이터이지만, 여기서는 고유사도=긍정 / 저유사도=부정으로 변환해 간단 분류 데이터로 사용
          • 데이터 수집 (KLUE-STS → 이진 분류용 변환)
          • 'binary-label': 1 - 유사도 높음 / : 0 - 유사도 낮음
        • 데이터셋 로드 후 내 모델에 맞게 데이터셋을 수정한다
        • 샘플을 눈으로 검증하는 과정이 매우 중요하다. 몇 개 샘플을 읽어보면서 문장의 유사도가 잘 정리됐는지 확인하자
      2. 최소 전처리
        1. clean_text 함수를 통해 processed_text가 나온다
        2. clean_text 함수: 텍스트 전처리 - 의미 자체를 바꾸는 것은 아니고, 과한 전처리는 진행하지 않으며, 이상한 문자가 들어간 건 아닌지 확인하는 정도로 진행
        3. processed_text 칼럼을 만들어서 정제된 전처리 텍스트를 배치한다.
          • # 빠른 품질 확인: 빈 값이 너무 많으면 정제 규칙을 완화해야 할 수 있습니다. 
            그렇다고 너무 정제돼서 빈 값은 없는 정도로 전처리 하기 위해 확인하는 과정
          • empty_ratio = (df['processed_text'].str.strip() == '').mean()
        4. 그다음에, 정제한 데이터 파일을 csv 파일로 내보낸다
      3. LoRA 파인튜닝 라이브러리 설치 (필수 패키지 설치)
        1. PEFT: Parameter-Efficient Fine-Tuning 라이브러리로 LoRA 구현 제공
        2. Transformers: Hugging Face의 사전학습 모델 및 Trainer API
        3. Accelerate: 분산 학습 및 mixed precision 지원
      4. 모델 및 토크나이저: 토크나이저와 베이스 모델 로드
        1. 한국어 BERT 모델(KLUE BERT)
        2. 토크나이저 로드 - 모델 이름만 주면 자동으로 그에 맞는 토크나이저 로드
          • tokenizer = AutoTokenizer.from_pretrained(model_name)
        3. 베이스 모델의 파라미터 정보(전체 파라미터 수, 모델 크기) 확인
      5. LoRA 설정
        1. 파라미터 계산
        2. LoRA Config 정의: 아래 항목들 정도만 조정
          • r (rank): LoRA 행렬의 랭크. 낮을수록 파라미터 수 감소
          • lora_alpha: 스케일링 팩터. 학습률과 함께 조정
          • target_modules: LoRA를 적용할 레이어 (BERT의 query, value attention)
        3. 베이스 모델의 파라미터는 동결되었고, LoRA 레이어의 파라미터를 조정하는 것
        4. get_peft_model() 함수: 이제 베이스 모델에 LoRA 레이어를 추가하여 PEFT 모델로 변환
        5. 디바이스 배치: 모델을 GPU로 이동
      6. 모델 테스트를 위한 데이터셋 준비
        1. KlueSentimentDataset: KLUE 감성 분석용 커스텀 데이터셋
        2. 데이터 분할 (Train/Val/Test)
          • 학습(64%): 모델 가중치 업데이트용
          • 검증(16%): 학습 중 성능 모니터링 및 조기 종료 판단
          • 테스트(20%): 최종 모델 성능 평가
        3. 데이터셋 객체 생성(PyTorch Dataset)
      7. 학습 설정을 통한 모델 트레이닝 자동화
        1. 평가 메트릭 정의: Accuracy는 정확도 메트릭으로 모델 성능을 측정 - 감성 분석은 이진 분류이므로 정확도가 직관적인 평가 지표
        2. Training Arguments 설정 (학습 설정)
          • learning_rate: LoRA는 2e-4가 권장 (전체 파인튜닝보다 높음)
          • num_train_epochs: 3 에폭으로 과적합 방지
          • eval_strategy="epoch": 매 에폭마다 검증 수행
          • load_best_model_at_end: 최고 성능 모델 자동 선정
        3. Trainer 생성 - Hugging Face Trainer: 학습/평가 루프를 자동화하는 고수준 API
      8. LoRA 파인튜닝
        1. trainer.train(): 자동으로 에폭/배치 반복 수행하면서 트레이닝 학습을 시행한다
        2. 검증 데이터를 평가하면서 모델 성능 측정, 과적합 여부를 파악
      9. 테스트로 실전 평가
        1. 테스트 정확도가 실전 성능의 지표
        2. 분류 리포트 확인
          1. Precision: 유사로 예측한 것 중 실제 유사 비율
          2. Recall: 실제 유사 중 올바르게 예측한 비율
          3. F1-score: Precision과 Recall의 조화 평균
        3. 마지막으로, 반드시 파인튜닝 전/후 비교 (베이스라인 vs LoRA) - 같은 테스트 셋에서파인튜닝 전(베이스 모델)과 파인튜닝 후(LoRA) 성능을 비교

 

모델 최적화에 대하여...

비용 효율성을 고려한 최적화가 중요함

 

성능 하나만 보지 말고, 비용 효율성과 속도를 같이 고려해 최적화하기

(모델 최적화 - 비용, 성능, 속도에 있어서 개선을 했다는 내용을 포트폴리오에 넣는 것이 중요)

*유료 API는 토큰 사용량이 많기 때문에 필요한 때에만 사용할 수 있도록

 

기업 입장에서도 모델 최적화를 잘할 사람을 원함