LLM 바닥부터 만들기 (대형언어모델) 1시간 핵심 정리! - #1 사전학습 [홍정모 연구소]

admin | | 조회 4


[주요 목차]

훈련 데이터 준비와 토큰화

데이터 로더와 다음 단어 예측

모델 훈련과 텍스트 생성 결과


LLM을 직접 만들어 보고 싶지만 어디서부터 시작해야 할지 막막하신가요? OpenAI API 비용 때문에 망설이는 분들도 많을 거예요. 이 글에서는 홍정모 연구소 영상을 바탕으로 대형언어모델 사전학습 과정을 바닥부터 따라가며 핵심을 정리했어요. 실제 코드와 함께 데이터 준비, 토큰화, 데이터 로더, 간단한 트랜스포머 모델까지 단계별로 살펴보면 LLM이 어떻게 언어를 학습하는지 감을 잡을 수 있어요. 책 한 권 분량의 데이터로도 1~2시간 만에 동작하는 모델을 확인할 수 있죠. 사전학습이 끝난 뒤 파인튜닝으로 어떻게 특정 업무를 가르치는지도 자연스럽게 연결 지어 설명했어요. 끝까지 읽으면 LLM 바닥부터 만들기의 전체 흐름과 실전 팁을 한 번에 얻을 수 있을 거예요.


LLM 바닥부터 만들기 (대형언어모델) 1시간 핵심 정리! - #1 사전학습 [홍정모 연구소] - 실전 화면 1 - LLMLLM 바닥부터 만들기 (대형언어모델) 1시간 핵심 정리! - #1 사전학습 [홍정모 연구소] · 실전 화면 1

훈련 데이터 준비와 토큰화

해리포터 책 한 권을 예시로 사용하면 가장 간단하게 시작할 수 있어요. 캐글에서 이미 정리된 txt 파일을 내려받아 주피터 노트북과 같은 폴더에 넣기만 하면 준비 끝이죠.

줄바꿈과 연속 공백을 정규식으로 정리하는 간단한 전처리만 거치면 전체 책이 하나의 긴 문자열이 돼요. 실제로 48만 글자 정도 나오는 데, 이 정도 규모가 개인 PC에서 테스트하기에 적당한 크기예요.

토큰화 단계에서는 tiktoken 라이브러리의 GPT-2 토크나이저를 그대로 가져다 씁니다. 문자열을 숫자 ID로 바꾸는 과정인데, 영어는 단어 단위로 깔끔하게 잘려 나가죠. 예를 들어 “Harry Potter was a wizard”는 6개의 토큰으로 변환돼요.

한글·한자가 섞인 데이터라면 LG AI의 EXAONE 토크나이저를 추천해요. tiktoken보다 한국어 처리 품질이 안정적이에요. 글자 단위 토큰화도 가능하지만 실제 사전학습에서는 단어 단위가 훨씬 효율적이라는 점도 실험으로 확인할 수 있어요.

LLM 바닥부터 만들기 (대형언어모델) 1시간 핵심 정리! - #1 사전학습 [홍정모 연구소] - 현장 스냅 2 - LLMLLM 바닥부터 만들기 (대형언어모델) 1시간 핵심 정리! - #1 사전학습 [홍정모 연구소] · 현장 스냅 2

데이터 로더와 다음 단어 예측

PyTorch Dataset을 상속받아 간단히 구현하면 돼요. 책 전체를 토큰 ID로 변환한 뒤, 입력(input_ids)과 타깃(target_ids)을 한 칸씩 밀어서 쌍으로 만들어주는 게 핵심이에요.

“Harry Potter was a wizard”를 예로 들면, 입력에 “Harry”가 들어오면 타깃은 “Potter”가 되고, 입력에 “Harry Potter”가 들어오면 타깃은 “was”가 되는 식이죠. 이 한 칸 밀기 구조가 사전학습의 본질이에요.

DataLoader에서 shuffle=True로 설정하면 매 에폭마다 책의 다른 부분을 랜덤하게 뽑아 학습하므로 과적합을 어느 정도 막을 수 있어요. 배치 크기는 GPU 메모리에 따라 4~16 정도로 조절하면 안정적으로 돌아갑니다.

LLM 바닥부터 만들기 (대형언어모델) 1시간 핵심 정리! - #1 사전학습 [홍정모 연구소] - 주요 포인트 3 - LLMLLM 바닥부터 만들기 (대형언어모델) 1시간 핵심 정리! - #1 사전학습 [홍정모 연구소] · 주요 포인트 3

모델 훈련과 텍스트 생성 결과

트랜스포머 블록 하나만 쌓은 간단한 GPT 구조를 사용해요. 멀티헤드 셀프 어텐션에 마스크를 씌워 미래 토큰을 보지 못하게 하는 causal masking이 핵심이에요.

에폭 10~20회만 돌려도 loss가 눈에 띄게 떨어지고, “Dobby is” 다음에 “free”나 “used” 같은 단어가 높은 확률로 나오는 걸 확인할 수 있어요. Temperature 값을 0.1로 낮추면 거의 같은 문장만 반복하고, 1.0 이상으로 올리면 다양한 표현이 나오지만 가끔 문법이 어긋나기도 하죠.

한국어 무협지 데이터로도 동일한 코드를 돌려보면 “묵향이” 다음에 “녀석”이나 “별칭” 같은 단어가 자연스럽게 이어지는 걸 볼 수 있어요. 이 결과를 바탕으로 실제 서비스에 적용할 때는 RAG나 파인튜닝을 추가로 붙이는 전략을 세우는 게 현실적이에요.


[자주 묻는 질문]

LLM 사전학습을 CPU에서 해도 될까요?

가능은 하지만 데이터 양을 10분의 1 정도로 줄여야 해요. 책 한 권 전체 대신 5만 글자 정도만 사용하고 에폭도 5회 이내로 제한하면 2~3시간 안에 loss가 떨어지는 걸 확인할 수 있어요. GPU가 있으면 1시간 정도면 충분히 감을 잡을 수 있죠.

토크나이저를 GPT-2 대신 다른 걸 써도 되나요?

한국어 데이터라면 EXAONE이나 Llama 토크나이저가 더 나아요. vocab size가 커지면 모델 마지막 레이어 크기도 함께 늘려야 하니, vocab size를 출력해서 확인한 뒤 모델 정의 시 반영하는 습관을 들이세요.

사전학습 후 바로 서비스에 쓸 수 있나요?

어렵습니다. 사전학습은 언어 패턴을 익히는 단계일 뿐이에요. 질문-답변, 요약, 코드 생성 같은 구체적인 업무는 별도의 파인튜닝 데이터셋으로 추가 학습해야 성능이 나와요. 이 글에서 만든 모델은 그 기반을 다지는 용도로 활용하는 게 좋습니다.

목록
글쓰기
한국 서버호스팅
전체보기 →

댓글 0