패스트캠퍼스환급챌린지

패스트캠퍼스 환급챌린지 27일차 : 파인튜닝과 RAG로 완성하는 맞춤형 LLM 서비스 개발 강의 후기

네모몽 2025. 7. 27. 18:59

 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다. ※


 

오늘은 파인튜닝 전체 과정 중, 가장 중요하다고 할 수 있는 전처리 로직을 파헤쳐봤습니다.
실제 모델 학습에 들어가기 전, 데이터가 어떻게 input_ids, attention_mask, labels로 바뀌는지를 자세히 공부해 볼 수 있는 시간이었어요.

 

LLM은 단순히 텍스트를 입력받아 학습하는 것이 아닙니다.

모든 학습의 출발점은 텍스트를 정수로 인코딩하고, 손실 계산에 포함할 영역만 지정하는 전처리 과정이라고합니다.

 

이번 강의를 통해 그 핵심인 collate_fn 함수와 attention_mask, 그리고 labels의 의미를 완벽히 이해할 수 있도록 했습니다.

 

💡 학습 전처리의 핵심

✔️ collate_fn()이란?

collate_fn() 함수는 자연어 처리 모델 학습을 위해 데이터를 전처리하는 역할을 수행하는 커스텀 함수.

🧩 주요 기능 요약

강사님이 제공해준 커스텀 함수인만큼 포스팅에 올리기는 어려울 것 같아 그 기능을 정리해봤습니다.

  1. chat_template를 적용해 라마 스타일 텍스트 생성
  2. 텍스트를 tokenizer로 정수 인코딩
  3. input_ids 생성
  4. labels: 오직 assistant의 응답 부분만 원래 토큰 ID로, 나머지는 -100으로 처리
  5. attention_mask: 실제 토큰은 1, 패딩은 0
  6. 최대 길이에 맞춰 패딩 처리

 

 

🎯 attention_mask 완전 정복

🧠 배치를 알아보자!

배치란, 모델이 한 번에 학습하는 데이터 묶음을 뜻합니다.

 

배치 학습은 학습 속도와 안정성을 높여줍니다.

하지만 LLM을 학습할 때, 신경망의 내부 연산은 고정된 크기의 입력을 요구합니다.

아래 처럼, 서로 다른 길이를 가진 샘플이 주어진다고 할 때, 모든 샘플의 문장길이를 맞춰줄 필요가 있겠습니다.
이때 활용되는 것이 paddingattention_mask 입니다.

[101, 102, 103]     		# 길이 3
[101, 102, 103, 104, 105]  	# 길이 5

 

🛡️ padding과 attention_mask 역할

위에서 짧게 언급했던 것 처럼, 

신경망의 내부 연산은 고정된 크기의 입력을 요구합니다. 

이 문제를 해결하기 위해 '패딩'을 사용하여 모든 샘플의 길이를 배치 내 가장 긴 샘플에 맞춥니다.

위 예시의 경우, 아래와 같이 0값을 패딩으로 넣어 길이를 맞춰줄 수 있죠.

[101, 102, 103,	  0,   0]   # 길이 5
[101, 102, 103, 104, 105]  	# 길이 5
 

자, 이렇게 되면 모델은 어떤 토큰이 실제 내용이고 어떤 토큰이 의미 없는 패딩인지 구분해야 합니다. 

이를 위해 '어텐션 마스크'를 사용하게 되죠.

 

패딩 영역은 학습에 영향을 주지 않도록 attention을 차단

 

[1, 1, 1, 0, 0]		# 0 ~ 2 값 유효
[1, 1, 1, 1, 1]		# 0 ~ 4 값 유효
 

위 처럼, 트랜스포머 모델의 어텐션 메커니즘은 이 마스크를 사용하여 패딩 토큰을 무시하고 실제 의미 있는 토큰에만 집중합니다. 

이렇게 하면 패딩된 부분이 모델의 예측이나 학습에 영향을 미치지 않게 됩니다.

 

📌 labels는 왜 -100으로 채울까?

transformers에서는 학습에 사용되는  손실 함수를 내부적으로 딥러닝 패키지 PyTorch의 CrossEntropyLoss를 사용합니다.
PyTorch에서 CrossEntropyLoss는 -100 값을 가진 부분은 손실 계산에서 무시하도록 설계되어 있다고 해요.

즉, labels는 모델이 실제로 생성해야 할 출력 부분만을 포함하고, 나머지 부분은 -100으로 채워져 손실 계산에서 제외시키는 데 그 역할이 있다고 할 수 있습니다!


🤔 오늘의 배운 점과 고민 포인트

📘 배운 점

  • input_ids와 labels, attention_mask의 역할과 사용되는 이유
  • 왜 labels에 -100 값이 들어가게 되는지에 대한 이해
  • LLM 학습 과정 중 전처리 과정의 전반적인 흐름 이해

💭 고민 포인트

  • padding 값과 attention_mask에는 0, 1 값만 들어가는 것인지에 대한 궁금증

 

① 오늘자 날짜, 공부 시작, 종료 시각 포함 사진 각 1장

패스트캠퍼스_LLM 서비스개발_27일차_공부시작/종료시간

 

 1개 클립 수강 인증 사진 1장 / 학습 인증 사진 1장

패스트캠퍼스_LLM 서비스개발_27일차_수강인증/학습인증

 

 챌린지 대상 강의 완강률 캡쳐 사진 1장

패스트캠퍼스_LLM서비스개발_27일차_완강률캡처

 


 

https://fastcampus.info/4n8ztzq

 

(~6/20) 50일의 기적 AI 환급반💫 | 패스트캠퍼스

초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!

fastcampus.co.kr