[SKN FAMILY AI CAMP]/주간

🐉 SKN FAMILY AI CAMP 13기 14주차 후기 (2025.06.23 ~2025.06.27)

ki-june 2025. 6. 28. 15:40

📍 간단 후기

 

 

🏷️ 수업

 

LangGraph 메모리에 관한 수업을 마무리 짓고, 본격적으로 파인튜닝과 CV(컴퓨터 비전)에 관한 수업을 진행했다. 또 금요일부터는 3차 프로젝트 준비에 시간을 전부 할애했다. 파인튜닝은 대체적으로 학습한 데이터를 활용하는 데 있어 기능을 다한다. 따라서 데이터를 학습시키는 과정이 가장 중요하다는 말이다.

 

 

🏷️ 3차 프로젝트

 

프로젝트의 전체 주제는 RAG를 활용한 챗봇을 만드는 것이다. SNS와 관련된 저작권 관련 Q&A 챗봇을 주제로 프로젝트를 진행했다. '한국저작권위원회'에 챗봇이 있었다. 하지만 정해진 답변만 할 수 있었다. 또 Instagram과 Youtube 등은 외국 저작권법도 따라야 하니, 혼동되는 저작권에 관련해서 확실히 저작권을 찾을 수 있도록 답변하는 챗봇을 만들자는 것이 배경이다.

 

 

 

 


 

 

📍 좋았던 점

 

 

  • Finetuning

Finetuning 중 LoRA 방식 필기 이미지

 

파인튜닝은 데이터가 광범위해짐에 따라 정확도는 올라가지만 효율성, 즉 속도 측면에서는 비효율 적이라는 평이 많다. 단점을 설명하기 이전에 파인튜닝의 장점부터 설명하겠다. 파인튜닝의 장점은 명확하게 정해진다. 바로 특정 작업 등에 최적화하여 모델의 더 좋은 성능을 확보할 수 있다는 점이다. 파인튜닝의 과정은 크게 2가지로 분류된다.

  • 모델의 크기 줄이기
  • 학습량을 줄일 수 있는 다양한 학습방법 개발

2번째 과정을 보면 알 수 있듯이, 학습량을 줄이는 것이 관건이다. 모델의 크기를 줄이기 위해서는 모델을 양자화한다. 양자화는 모델 파라미터 정보를 최대한 유지하면서 타입을 줄이는 방식으로 진행된다. 양자화의 목표는 일정 부분 정보 손실을 감안하고 최대한 크기를 줄이는 것이다. 순서는 다음과 같다.

 

양자화 구간 설정 -> 표준정규분포에서 2^k개의 구간 생성 -> 구간은 [-1,1]로 Scailing 진행 -> 대상 tensor들도 absmax(절댓값의 max) 값으로 나눠 [-1,1] 범위로 scailing 진행 -> scailing 한 값을 양자화된 구간의 대푯값으로 대체

 

양자화 과정 필기 이미지

 

 

이렇게 양자화하고 모델 크기 줄이고 하는 과정과 학습량을 줄이기 위한 수많은 방법을 통해 파인튜닝을 개선하려고 노력하고 있다. 여기서 나온 해결방법 중 하나가 PEFT이다. PEFT란 Downstream 작업의 성능을 유지하거나 향상시키며 계산량과 모델 크기를 줄이는 것이 목표인 방법이다. 파인튜닝을 다시 학습시킬 때, 전체 모델을 다시 학습시켜야 하므로 Full-Finetuning이라고 한다. PEFT 방식에서는 전체 모델을 다 학습시키는 방법을 개선시키는 것이다.

여기서 나온 모델이 바로 LoRA인 것이다. 위 첫번째 이미지가 바로 그 예시이다. 학습 시 Adaptor Layer(주황색 부분)만 학습을 진행한다. 이는 gradient와 parameter의 양을 줄일 수 있다. 이를 통해 GPU 사용을 줄여 컴퓨터에도 부하가 덜 되는 방식인 것이다.

PEFT 튜닝 방식은 다음과 같이 3가지로 나뉜다.

  • 어뎁터 튜닝 : 기존 Pre-trained 모델에 Adaptor Layer를 추가하고 이 Adaptor Layer만 추가 학습 (LoRA)
  • 프롬프트 튜닝 : 입력 앞에 학습 가능한 prompt 추가해 해당 prompt만 학습
  • P-튜닝 : 입력의 다양한 위치에 prompt vector를 삽입해 모델의 출력을 조정

 

 


 

 

📍 부족한 점

 

 

6/24(화) ~ 6/26(목) 동안 예비군 훈련에 참가했다. 그래서 못 들었던 수업 내용들을 부족한 점에 적으려 한다.

 

  • Finetuning 실습
    • Dataset 만들기
    • 답 만들기 -> 성능 평가를 위함
    • Base Model Load (Llama 사용)
    • 학습 전 추론시키기 -> 프롬프트 엔지니어링
    • 학습 중 데이터를 입력받아 전처리하는 함수 Data Collator (Dataset -> Data Collator -> Model)
    • 파인튜닝 방식 중 어뎁터 튜닝인 LoRA 사용
    • 기본 모델과 LoRA 방식을 Merge하여 파인튜닝 진행 -> Tranformers의 AutoTokenizer와 pipeline 등을 사용
  • CV
    • CNN -> 이미지 처리 신경망
    • transformer의 핵심 -> self attention을 통한 문맥 파악 후 문장을 정확히 이해하게 하는 것
    • Pre-Trained 된 모델을 이용한 이미지 분류 -> VGG 사용

 

 

 

 


 

📍 성찰 및 마무리

 

 

프로젝트를 진행하며 전체적으로 이제껏 배운 내용이 종합적으로 필요하다는 생각이 들었다. 까먹은 부분도 상기시키고, 다시 개념 확인이 필요한 부분도 공부해 보며 많은 시간을 할애했다. 그만큼 습득한 부분이 많은 것 같다는 뿌듯함에 이번 프로젝트가 더 의미 있어졌다. 비록 아직 부족한 부분이 많고, 공부해야 될 부분도 많지만 부트캠프 특성상 많은 프로젝트를 해보며 부딪히는 것이 중요한 것 같다.

 

부족하더라도 직접 부딪혀보는 경험을 해야 성장한다는 깨달음을 얻었다는 글을 남기며 마무리하겠다.