AI VIDEO BRIEFING
LLM 사전 학습 실습 정리 — 크로스 엔트로피와 퍼플렉서티, 온도·top-k 샘플링, 체크포인트 저장
라벨 없는 텍스트로 GPT-2를 직접 학습시킨 스터디 기록. 크로스 엔트로피와 퍼플렉서티로 모델을 평가하고, 훈련·검증 손실을 함께 그려 과적합 시점을 잡고, 온도와 top-k로 생성 문장을 조절한 뒤 체크포인트까지 저장하는 과정을 정리했다.

핵심 메시지
쉽게 이해하기
이 영상은 대규모 언어 모델을 처음부터 만들어 보는 스터디의 5장 발표 원본으로, 앞 장에서 트랜스포머 구조와 어텐션을 훑은 뒤 이번에는 라벨이 붙지 않은 텍스트로 모델을 사전 학습시키는 단계를 다룬다. 발표자는 인터넷 데이터를 긁어모아 GPT-2급 모델을 밑바닥부터 학습시키려면 수억 원대 비용이 든다고 전해 들었다며, 그래서 실습에서는 이미 학습된 가중치를 가져와 작은 규모로 학습 과정을 재현한다고 설명했다.
실습에 쓰인 설정은 의도적으로 작다. 컨텍스트 길이는 원래 1,024 토큰이지만 자원 사정을 감안해 256으로 줄였고, 임베딩 차원은 768, 어텐션 헤드와 레이어는 각각 12개, 드롭아웃은 0.1로 잡았다. 발표자는 요즘 공개된 임베딩 모델의 차원이 1,500에서 4,000 수준인 것과 비교하면 훨씬 작은 값이라고 덧붙이면서도, 데이터와 모델이 함께 작으니 학습 흐름을 보기에는 충분하다고 말한다. 이 설정으로 불러온 GPT-2는 파라미터 1억 2,400만 개 규모다.
평가 절차는 텍스트를 토큰 인덱스로 바꾸는 함수와 그 역함수를 정의하는 데서 시작한다. 'Every effort moves you'라는 입력을 넣고 열 개 토큰을 이어 보게 하면 학습 전 모델은 뜻이 통하지 않는 단어를 늘어놓는다. 여기서 모델이 내놓은 5만 차원 규모의 로짓에 소프트맥스를 적용해 확률로 바꾸고, 정답 토큰 자리의 확률에 로그를 취해 평균을 낸 다음 부호를 뒤집으면 그것이 곧 크로스 엔트로피 손실이라는 점을 단계별로 확인한다. 배치 차원을 평탄화해 손실 함수에 넣는 실무적인 처리도 함께 짚는다.
학습 루프는 에폭마다 훈련 모드로 전환해 배치를 돌리고, 일정 주기마다 훈련 손실과 검증 손실을 함께 기록하며, 에폭이 끝나면 샘플 문장을 출력해 눈으로 확인하는 구조다. Adam 옵티마이저에 가중치 감쇠 0.1, 학습률 0.0004로 10 에폭을 돌렸고 RTX 3090에서 20분 남짓 걸렸다. 결과 그래프에서 훈련 손실은 계속 떨어지지만 검증 손실은 2 에폭 부근에서 정체하기 시작해, 그 이후로는 더 돌려도 의미가 크지 않다는 판단으로 이어졌다.
마지막 두 절은 생성 전략과 저장이다. 온도는 0에 가까울수록 확률이 높은 토큰만 고르고 값이 커질수록 분포가 평평해지는데, 실습에서 5까지 올려 보니 다른 토큰이 뽑힐 여지가 커지면서도 여전히 원래 단어가 선택되는 경우를 관찰할 수 있었다. top-k는 후보 토큰 자체를 상위 몇 개로 잘라내는 방식이다. 저장은 state_dict를 파일로 쓰고 불러올 때 장치를 지정하는 것이 기본이며, 옵티마이저 상태까지 함께 담으면 학습 재개용 체크포인트가 된다.
주요 인사이트
- 학습이 덜 된 모델이 같은 단어를 반복하는 현상은 언어 모델만의 문제가 아니다. 발표자는 음성 인식 모델을 다룰 때도 학습이 충분하지 않으면 같은 말이 계속 나오는 경우가 있다고 언급했는데, 반복 출력은 모델 상태를 의심해 볼 신호로 읽을 수 있다.
- 퍼플렉서티를 '후보 개수'로 번역해 읽으면 손실 곡선보다 상태 파악이 쉬워진다. 실습 초반 모델은 사실상 수만 개의 토큰 중 하나를 찍는 수준이었고, 이 값이 내려가야 비로소 분포를 학습했다고 말할 수 있다.
- 과거에는 관행처럼 넣던 설정이 지금은 빠지는 경우가 있다. 발표자는 QKV 편향 항이나 드롭아웃을 예로 들며, 회귀나 합성곱 모델에서 편향 항을 생략하는 흐름과 마찬가지로 요즘 LLM 학습에서는 이런 항을 두지 않는 사례가 많다고 정리했다.
- 온도와 top-k는 서로 성격이 다른 조절 장치다. 온도는 확률 분포 전체의 날카로움을 바꾸고 top-k는 후보 집합의 크기를 자르기 때문에, 정확한 답을 원하면 온도를 낮추고 top-k도 줄이는 식으로 방향을 맞춰 함께 조정하게 된다.
- 체크포인트를 '모델만' 저장하는 것과 '모델과 옵티마이저를 함께' 저장하는 것은 목적이 다르다. 배포용이라면 가중치만으로 충분하지만 학습을 이어가려면 옵티마이저 상태가 있어야 하며, 저장 이름을 버전별로 나누면 원하는 시점으로 되돌릴 수 있다.
자주 묻는 질문
실습에서 컨텍스트 길이를 1,024가 아니라 256으로 줄인 이유는 무엇인가요?
원래 설정은 1,024 토큰이지만 실습 환경의 자원이 부족할 수 있어 256으로 낮췄다고 발표자가 밝혔습니다. 모델 크기와 학습 데이터가 함께 작기 때문에 임베딩 차원도 768로 작게 잡았고, 이 조건에서도 사전 학습 과정을 따라가 보는 데는 무리가 없다고 설명했습니다.
학습을 몇 에폭까지 돌리는 것이 적절하다고 판단했나요?
10 에폭을 돌린 뒤 손실 곡선을 보니 훈련 손실은 계속 줄었지만 검증 손실은 2 에폭 부근부터 개선이 거의 없었습니다. 발표자는 이 지점을 근거로 2 에폭 정도까지가 돌릴 만하고 그 이후에는 과적합이 일어나 크게 의미가 없다고 정리했습니다.
온도 값은 보통 얼마로 설정하나요?
온도는 0에 가까울수록 정확하고 보수적인 답을, 값이 클수록 창의적인 답을 만들며 발표자는 보통 0.6에서 0.7 사이를 쓴다고 말했습니다. 다만 실습에서는 비교를 위해 0.1과 1, 그리고 5까지 넣어 확률 분포가 어떻게 평평해지는지 시각화해 보았습니다.
저장한 가중치를 다시 불러올 때 주의할 점은 무엇인가요?
state_dict를 파일로 저장한 뒤 불러올 때는 어떤 장치에 올릴지 지정해 주고 가중치만 읽어 오도록 옵션을 켜는 것이 기본입니다. 또한 옵티마이저 상태까지 함께 저장해 두어야 학습을 중간부터 이어받을 수 있고, 같은 이름으로 저장하면 기존 파일을 덮어쓰게 된다는 점도 짚었습니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗