AI VIDEO BRIEFING
GPT 모델 직접 구현: 레이어 정규화·GELU·숏컷 연결로 트랜스포머 블록 쌓기
GPT 구조를 코드로 조립하는 스터디 발표 정리. 설정 딕셔너리로 뼈대를 잡고 레이어 정규화, GELU, 피드포워드, 숏컷 연결을 붙여 트랜스포머 블록을 12번 쌓는 과정과 파라미터가 몰리는 지점을 짚는다.

핵심 메시지
쉽게 이해하기
이 영상은 『Build a Large Language Model (From Scratch)』 4장을 함께 읽는 스터디의 발표 녹화다. 앞선 회차에서 토크나이징과 어텐션 메커니즘을 다뤘고, 이번에는 그 조각들을 하나로 묶어 GPT 모델의 뼈대를 완성한다. 발표자는 오늘이 학습 이전 단계, 즉 설계의 마무리라고 정리하며 실제 사전 학습은 다음 회차부터라고 예고한다.
구현은 설정 딕셔너리에서 출발한다. 모델이 인식하는 고유 토큰의 총 개수, 한 번에 넣을 수 있는 최대 토큰 길이, 임베딩 차원, 멀티헤드 어텐션의 헤드 수, 트랜스포머 블록의 반복 횟수, 드롭아웃 비율, 편향 사용 여부를 하나의 객체로 정의해 넘긴다. 이 값만 교체하면 코드를 고치지 않고도 크기가 다른 모델을 찍어낼 수 있다는 것이 이 구성의 이점이다.
본격적인 조립은 더미 모델부터 시작한다. 임베딩과 드롭아웃, 비어 있는 트랜스포머 블록, 비어 있는 정규화 층으로 껍데기만 먼저 만들어 입력과 출력이 흐르는 길을 확인한 뒤, 각 부품을 순서대로 채워 넣는 방식이다. 발표자는 이 순서 덕분에 전체 구조를 놓치지 않고 부분 구현으로 내려갈 수 있다고 말한다.
부품 설명은 레이어 정규화, GELU 활성 함수, 피드포워드 네트워크, 숏컷 연결로 이어진다. 활성 함수로 ReLU 대신 가우시안 기반 함수를 쓰는 이유는 꺾이는 지점에서 미분이 되지 않고 음수 구간이 0으로 죽는 문제를 완화하기 위해서이며, 계산 비용 때문에 근사식을 쓴다는 점도 함께 짚는다. 피드포워드는 임베딩 차원을 네 배로 늘렸다가 다시 되돌리는데, 이 확장·축소 구간에서 표현력이 늘어나는 대신 파라미터가 크게 불어난다.
마지막으로 텍스트 생성 과정을 따라간다. 출력 로짓을 소프트맥스로 확률로 바꾸고 가장 큰 값의 토큰 아이디를 골라 다시 입력에 붙이는 순차적 예측이다. 아직 학습을 하지 않은 모델이라 결과 문장은 의미가 없고, 발표자는 바로 그 점이 다음 회차의 출발점이라고 마무리한다.
주요 인사이트
- 설정값을 코드가 아니라 딕셔너리에 몰아 두면 모델 크기 실험이 설정 교체 수준으로 단순해진다. 스터디에서도 값만 바꿔 서로 다른 규모의 모델을 반복문으로 찍어내며 파라미터 수 변화를 확인했다.
- 숏컷 연결의 효과는 설명보다 숫자로 볼 때 분명하다. 같은 층 구성에서 숏컷 옵션만 끄면 출력 쪽과 입력 쪽 그래디언트의 크기 차이가 급격히 벌어지고, 켜면 그 격차가 눈에 띄게 줄어든다.
- 어텐션을 오래 배웠지만 정작 파라미터는 피드포워드 쪽에 훨씬 많다. 어텐션은 토큰 사이의 관련성을 계산하는 장치이고, 그 관련성 위에 얹히는 지식은 피드포워드의 가중치에 담긴다는 것이 발표자의 해석이다.
- 책의 구현이 계산하는 파라미터 수와 실제 GPT-2의 수치가 다른 이유는 가중치 공유에 있다. 논문은 토큰 임베딩과 출력층의 행렬을 같은 것으로 묶지만, 스터디 코드는 구현 편의를 위해 둘을 따로 두었다.
- 참가자 한 명은 확률 분포를 외부에 공개하면 모델 내부의 학습 결과를 유추할 여지가 생긴다는 점을 언급했고, 지식이 특정 위치가 아니라 피드포워드 행렬 전반에 흩어져 저장된다는 분석도 공유됐다.
자주 묻는 질문
이 회차에서 실제로 모델을 학습시키나요?
아니요. 이번 회차는 구조를 코드로 조립하는 데까지만 진행합니다. 학습을 하지 않은 상태라 생성된 문장이 의미 없이 나오는 것을 확인하고, 사전 학습과 미세조정은 다음 회차 이후로 넘깁니다.
피드포워드 네트워크에서 차원을 네 배로 늘렸다 줄이는 이유는 무엇인가요?
블록을 계속 쌓으려면 입력과 출력의 형태를 맞춰야 하므로 최종 차원은 유지하되, 중간에서 한 번 넓혔다 좁히면서 표현을 풍부하게 만들기 위해서입니다. 대신 이 구간에서 가중치가 크게 늘어납니다.
레이어 정규화의 스케일과 시프트는 왜 필요한가요?
정규화 결과에 곱하고 더하는 값으로, 각각 1과 0으로 초기화하면 아무 변화도 주지 않습니다. 다만 학습 가능한 파라미터로 두었기 때문에 모델이 필요에 따라 정규화 정도를 스스로 조절할 수 있습니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗