AI VIDEO BRIEFING

LLM 텍스트 데이터 준비 과정 정리: 토큰화, 바이트 페어 인코딩, 슬라이딩 윈도우, 위치 임베딩까지

언어모델 학습은 글을 숫자로 바꾸는 일에서 시작한다. 토큰화로 문장을 쪼개고 토큰 ID를 붙인 뒤, 바이트 페어 인코딩과 슬라이딩 윈도우, 위치 임베딩까지 이어지는 준비 과정을 실습 강의를 토대로 정리했다.

대규모 언어모델은 글을 어떻게 삼키나: 학습 직전 텍스트 준비의 다섯 단계 영상 대표 이미지

핵심 메시지

  • 언어모델은 글자를 그대로 읽지 못하므로, 학습 전에 텍스트를 토큰과 숫자 벡터로 바꾸는 준비 과정이 반드시 필요하다.
  • 직접 만든 단순 토크나이저는 학습 데이터에 없던 단어를 만나면 오류가 나거나 '알 수 없음' 표시로 뭉개버리는 한계가 있다.
  • GPT 계열이 쓰는 바이트 페어 인코딩은 모르는 단어를 더 작은 조각으로 쪼개기 때문에 어떤 문장이 들어와도 실패하지 않는다.
  • 학습 데이터의 정답은 사람이 붙이지 않고, 다음에 올 토큰 자체가 정답이 되므로 원문 텍스트만 있으면 학습 예제를 만들 수 있다.
  • 토큰 ID는 임베딩 층을 거쳐 벡터가 되고, 여기에 위치 정보를 더해야 모델이 같은 단어라도 어디에 놓였는지 구분한다.

쉽게 이해하기

강연자는 자신이 쓴 '밑바닥부터 만드는 대규모 언어모델' 책의 2장을 따라가며, 모델을 만들기 전 데이터를 어떻게 손질하는지 코드로 보여준다. 전체 과정에서 이 단계는 가장 앞에 놓이며, 그다음이 어텐션 구현과 모델 구조, 사전학습, 미세조정 순이다. 실습 데이터로는 저작권이 풀린 이디스 워튼의 단편 '더 버딕트'를 쓴다. 분량이 작아 학습이 오래 걸리지 않고 저작권 걱정이 없다는 이유에서다.

첫 단계는 토큰화다. 정규표현식으로 공백과 문장부호를 기준으로 문장을 잘라내면 약 4,690개의 토큰이 나온다. 여기서 중복을 없애고 알파벳 순으로 정렬하면 1,130개의 고유 단어가 남고, 각 단어에 정수를 하나씩 붙여 사전을 만든다. 이 사전으로 글을 숫자 목록으로 바꾸고, 반대로 숫자를 다시 글로 되돌리는 인코딩·디코딩 기능을 갖춘 간단한 토크나이저가 완성된다.

문제는 사전에 없는 단어다. 학습 텍스트에 'hello'가 한 번도 나오지 않았다면 이 토크나이저는 곧바로 오류를 낸다. 임시 처방으로 '알 수 없음' 토큰과 문서 구분용 '텍스트 끝' 토큰을 사전에 추가할 수 있지만, 모르는 단어가 전부 같은 번호로 뭉뜽그려지면 모델은 서로 다른 이름과 개념을 구분하지 못한다. 그래서 실제 GPT 모델은 30년쯤 된 바이트 페어 인코딩 방식을 쓴다. 모르는 단어를 아는 조각으로 쪼개고, 그래도 안 되면 글자 단위까지 내려가므로 절대 실패하지 않는다.

다음은 학습 예제를 만드는 방법이다. 언어모델은 한 번에 한 토큰씩 다음 토큰을 맞히도록 배우기 때문에, 입력을 한 칸 밀면 그대로 정답이 된다. 사람이 라벨을 붙일 필요가 없어 원문만 있으면 대량의 학습 예제를 얻는다는 것이 언어모델이 큰 데이터에서 잘 통하는 이유 중 하나다. 실제로는 상자 모양의 창을 텍스트 위로 미끄러뜨리며 잘라내는데, 창을 한 칸씩만 밀면 같은 토큰이 반복 노출되어 과적합 위험이 커지므로 창 길이만큼 건너뛰어 겹치지 않게 하는 편이 낫다.

마지막은 임베딩이다. 토큰 ID를 임베딩 층에 넣으면 가중치 행렬에서 해당 번호의 줄을 꺼내 오는 방식으로 벡터가 만들어진다. 이 값들은 처음엔 무작위지만 학습 과정에서 함께 최적화된다. 다만 같은 단어는 위치가 달라도 같은 벡터가 되므로, GPT-2는 두 번째 임베딩 층을 하나 더 두어 위치 정보를 만들어 더한다. 토큰 임베딩과 위치 임베딩을 합친 것이 모델에 실제로 들어가는 입력이며, 여기까지가 어텐션을 다루기 전 준비의 끝이다.

주요 인사이트

  • 간단한 토크나이저를 직접 만들어보는 과정은 실무용이 아니라 이해용이다. 사전에 없는 단어에서 곧바로 깨지는 경험을 해야 바이트 페어 인코딩이 왜 필요한지가 몸에 남는다.
  • '모르는 단어를 모두 같은 기호로 바꾸면 모델에게는 전부 똑같아 보인다'는 지적은, 고유명사가 많은 한국어 문서를 다룰 때 토크나이저 선택이 성능에 직결된다는 점을 시사한다.
  • 라벨링 비용이 들지 않는다는 점이 언어모델의 핵심 이점이다. 다음 토큰이 곧 정답이므로 데이터가 많을수록 그대로 학습 신호가 늘어난다.
  • 학습 배치의 마지막 조각을 버리는 관행에는 이유가 있다. 크기가 다른 작은 배치가 남으면 손실이 튀며 학습이 불안정해지기 때문이다.
  • 임베딩 층은 사실상 행렬에서 해당 줄을 꺼내는 조회 장치에 가깝다. 신비한 개념이 아니라 계산을 효율적으로 만들기 위한 구현 방식이라는 설명이 이해를 쉽게 한다.

자주 묻는 질문

왜 GPT-3나 GPT-4가 아니라 GPT-2의 토크나이저를 쓰나요?

이후 장에서 소형 GPT-2 형태의 모델을 학습시키고 오픈AI가 공개한 GPT-2 가중치를 불러올 예정이기 때문입니다. GPT-3와 GPT-4는 가중치가 공개되지 않았고, 구조 자체는 GPT-2와 같다고 설명합니다.

슬라이딩 윈도우에서 이동 폭(스트라이드)은 어떻게 잡나요?

창 길이와 같게 잡아 예제끼리 겹치지 않게 하는 편이 권장됩니다. 한 칸씩만 밀면 같은 토큰이 여러 번 반복 등장해 과적합으로 이어질 수 있다고 설명합니다.

위치 임베딩은 왜 따로 필요한가요?

토큰 임베딩만 쓰면 같은 단어는 문장 어디에 있든 완전히 같은 벡터가 됩니다. GPT-2는 위치별 값을 담은 두 번째 임베딩 층을 더해 단어가 놓인 자리에 따라 입력이 달라지도록 합니다.

실습에서 사용하는 문맥 길이는 실제 모델과 같나요?

아닙니다. 강의에서는 그림으로 보여주기 쉽도록 4로 줄여 씁니다. 실제로는 GPT-2가 1,024개 토큰을 쓰고, 최신 모델은 수천에서 1만 6천 개 수준을 쓴다고 언급합니다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식

#LLM#토큰화#임베딩#바이트페어인코딩#파이토치