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

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

Qwen 모델 불러오기

새 직원을 맞이할 때는 두 가지가 필요합니다. 하나는 직원 본인이고, 다른 하나는 그 직원이 쓰는 사전입니다. 사전이 다르면 같은 낱말 번호를 다른 뜻으로 읽습니다. LLM 도 같습니다. 글자를 토큰 번호로 바꾸는 토크나이저와, 그 번호를 받아 계산하는 모델 가중치를 같은 모델 이름으로 함께 불러와야 합니다.

토크나이저, 모델 가중치, 장치와 정밀도의 세 가지를 나란히 놓은 비교 그림

그림의 왼쪽은 글자를 번호로 바꾸는 토크나이저, 가운데는 번호를 받아 다음 토큰 점수를 내는 모델, 오른쪽은 그 모델을 어디에(GPU), 몇 바이트 숫자로(BF16) 올릴지입니다. 원본 노트북은 이 셋을 load_base_model 함수 하나에 묶어, 학습 전후 비교와 어댑터를 다시 붙일 때 똑같은 기반 모델을 불러올 수 있게 했습니다.

불러오기에 쓰는 도구

도구원래 말하는 일원본 코드
AutoTokenizer.from_pretrained이름에 맞는 토크나이저를 학습된 것에서 불러오기글자 ↔ 토큰 번호tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
AutoModelForCausalLM.from_pretrained다음 낱말 맞히기 모델을 학습된 가중치에서 불러오기토큰 번호 → 다음 토큰 점수load_base_model() 안
torch.cuda.is_bf16_supported()GPU 가 BF16 을 지원하는가BF16 또는 FP16 고르기MODEL_DTYPE = ...
model.to(device)모델을 장치로 옮기기CPU 메모리 → GPU 메모리device = "cuda"
model.get_memory_footprint()메모리 발자국가중치가 차지하는 바이트 수942 MB

짧은 예시

Python
# AutoTokenizer = 모델 이름에 맞는 토크나이저를 골라 주는 도구
# GenerationConfig = 모델과 함께 저장된 "생성 기본 설정표"
from transformers import AutoTokenizer, GenerationConfig

MODEL_NAME = "Qwen/Qwen2.5-0.5B-Instruct"

# 토크나이저만 불러온다(모델 가중치는 불러오지 않으므로 CPU 로 몇 초면 된다)
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
# len(tokenizer) = 특수 토큰까지 합친 사전의 크기. 결과: 151665
print(len(tokenizer))

# 모델 폴더의 generation_config.json 을 읽는다
gen_cfg = GenerationConfig.from_pretrained(MODEL_NAME)
# 결과: True 0.7 20 0.8 1.1
print(gen_cfg.do_sample, gen_cfg.temperature, gen_cfg.top_k, gen_cfg.top_p, gen_cfg.repetition_penalty)

이 코드가 뜻하는 것

새 직원의 사전과, 직원이 회사에서 받은 "평소 말하는 법" 메모를 먼저 펼쳐 본 것입니다. 사전에는 낱말이 15만 개 넘게 있고, 메모에는 "평소에는 제비뽑기로 말하되(do_sample True), 모험심은 0.7, 후보는 20개까지, 누적 80%까지만"이라고 적혀 있습니다.

줄하는 일쉽게 말하면
AutoTokenizer.from_pretrained(MODEL_NAME)Qwen 의 토크나이저를 불러온다직원이 쓰는 사전 받기
len(tokenizer)사전의 낱말 수151,665 개
GenerationConfig.from_pretrained(MODEL_NAME)생성 기본값을 읽는다평소 말하는 법 메모

이 기본값은 실습에서 중요합니다. 실습 2의 chat 함수는 do_sample=False 로 Greedy 를 쓰므로, 메모에 적힌 temperature, top_p, top_k 가 쓰이지 않습니다. 그래서 "이 설정은 무시될 수 있다"는 안내가 출력 첫 줄에 나옵니다.

주의할 점

  • 모델과 토크나이저는 처음 한 번 Hugging Face 에서 내려받습니다(Qwen 약 1GB, ~/.cache/huggingface). 두 번째부터는 캐시에서 읽습니다.
  • dtype= 인자는 지금 쓰는 transformers 4.57 의 이름입니다. 예전 자료에는 torch_dtype= 로 적힌 것이 많습니다. 뜻은 같습니다.
  • 토크나이저와 모델은 반드시 같은 이름으로 불러옵니다. 다른 모델의 토크나이저를 쓰면 번호가 어긋나 엉뚱한 글이 나옵니다.
← 이전 절6장 · 2일차의 흐름과 말투 페르소나다음 절 →6장 · 모델 크기와 GPU 메모리