트랜스포머·PEFT 2일 과정6장 · Qwen 모델 준비와 텍스트 생성3 / 17← 이전목차다음 →MetaContents

6장. Qwen 모델 준비와 텍스트 생성

2일차의 흐름과 말투 페르소나

요리 학원 이틀 과정을 떠올려 봅니다. 첫날에는 칼과 불이 어떻게 작동하는지 원리를 배웠습니다. 둘째 날에는 이미 요리를 할 줄 아는 조리사를 데려와, 우리 가게만의 맛을 내도록 짧게 연수시킵니다. 조리사를 처음부터 키우지 않고, 양념 몇 가지만 새로 가르치는 것입니다. 2일차가 바로 이 연수입니다. 이미 공개된 Qwen 을 데려와, 우리가 만든 데이터로, 적은 자원을 써서 말투를 바꿉니다.

6차시부터 9차시까지 Qwen 준비, SFT 데이터와 Chat Template, LoRA 학습, 평가와 QLoRA 의 네 걸음을 이은 흐름도

그림은 2일차 네 장의 차례입니다. 이 장에서 모델을 준비하고 말을 시켜 보며, 7장에서 데이터를 대본 양식으로 바꾸고, 8장에서 LoRA 라는 얇은 필름을 붙여 학습하고, 9장에서 학습 전후를 견주고 더 작게 줄이는 QLoRA 를 봅니다. 원본 노트북은 이 흐름을 한 노트북에 담았고, 교안은 네 장으로 나눴습니다.

2일차 네 장과 원본 노트북의 절

장원본 노트북의 절하는 일요리 학원으로 치면
6장1. Qwen 모델 준비모델 불러오기, 메모리 감각, 생성과 디코딩조리사를 데려와 요리를 한번 시켜 보기
7장2~3. SFT 데이터, Chat Template데이터 불러오기, 대화 형식 변환, 분리, 토큰화우리 가게 레시피 카드 만들기
8장4~5. PEFT·LoRA, 학습LoRA 원리, SFTTrainer 로 학습양념 몇 가지만 새로 가르치기
9장6~7. 평가와 활용, QLoRA학습 전후 비교, 어댑터 저장·병합, 4비트시식회와 주방 공간 줄이기

실습 주제는 말투(페르소나) 학습입니다. 평범한 질문에 "냉소적인 절대 군주" 말투로 답하도록 Qwen 을 가르칩니다. 말투는 학습 전후 차이가 눈에 잘 보이므로 SFT 와 LoRA 의 효과를 확인하기 좋습니다. 데이터의 답변이 일부러 냉소적인 것은 말투 차이를 눈으로 보기 쉽게 고른 학습용 데이터이기 때문입니다. 종합평가에서는 같은 방법을 고객 문의 응답 형식이라는 실무형 주제에 씁니다.

짧은 예시

Python
# pandas = 표(DataFrame)를 다루는 도구
import pandas as pd

# read_csv = csv 파일을 읽어 표로 만든다(작업 폴더 workspace/ 기준의 경로)
df = pd.read_csv("data/persona_sft_raw.csv")

# shape = (행 수, 열 수). 결과: (327, 2)
print(df.shape)
# 열 이름. 결과: ['prompt', 'response']
print(df.columns.tolist())
# 첫 행의 질문과 답을 꺼낸다
print("질문:", df.loc[0, "prompt"])
print("답변:", df.loc[0, "response"])
# 결과: 질문: 다음 주 발표 때문에 너무 떨리는데 긴장 푸는 법 있어?
#       답변: 떨고 있느냐. 네가 무슨 말을 하든 세상은 변하지 않는다. ...

이 코드가 뜻하는 것

연수에 쓸 레시피 카드 묶음을 처음 펼쳐 보는 일입니다. 카드는 327장이고, 앞면에 손님 질문(prompt), 뒷면에 우리 가게식 답(response)이 적혀 있습니다. 질문은 평범한데 답은 군주처럼 내려다보는 말투입니다.

줄하는 일쉽게 말하면
pd.read_csv("data/persona_sft_raw.csv")csv 를 표로 읽는다레시피 카드 묶음 펼치기
df.shape행과 열의 수를 본다카드 327장, 앞뒤 두 면
df.loc[0, "prompt"]0번 행의 질문 칸을 꺼낸다첫 카드의 앞면 읽기

이 표를 대화 형식으로 바꾸고 나누는 일은 7장에서 합니다. 이 장에서는 "무엇을 가르칠지"만 미리 봅니다.

주의할 점

  • 원본 노트북은 VRAM 8GB 이상의 NVIDIA GPU 1개를 가정합니다. GPU 가 없으면 Colab T4 같은 환경을 씁니다. 이 교안의 출력은 RTX 3080(10GB)에서 한 번 돌린 결과입니다.
  • 샘플링(do_sample=True)을 쓰는 셀과 학습 결과는 실행할 때마다, GPU 마다 조금씩 달라집니다. 교안의 문장과 똑같지 않아도 정상입니다.
← 이전 절6장 · 용어 짚고 가기다음 절 →6장 · Qwen 모델 불러오기