밑바닥부터 만들면서 배우는 LLM
GPT를 내 손으로 직접 단계별로 만들어보면서 대규모 언어 모델의 기본기를 탄탄히 채우기
책소개
한 줄 한 줄 코드를 따라가다 보면, 나만의 GPT가 완성된다!GPT를 밑바닥부터 구현하며 LLM의 원리를 손끝으로 체득하는 실전 가이드어려운 개념은 그림으로 풀고, LLM은 직접 만들면서 배운다. 이 책은 대규모 언어 모델의 구조와 동작 원리를 처음부터 끝까지 직접 구현하며 학습할 수 있는 실전형 LLM 입문서다. 단순히 개념을 설명하는 데 그치지 않고 텍스트 전처리와 토큰화, 임베딩 과정을 출발점으로 삼아, 셀프 어텐션과 멀티헤드 어텐션, 트랜스포머 블록을 차근차근 구축해 나간다. 이어서 이러한 구성 요소들을 통합하여 실제 GPT 모델을 완성하고, 모델의 파라미터 수와 훈련 안정화 기법, 활성화 함수와 정규화 방법 등 최신 아키텍처 설계의 핵심 요소들을 직접 다뤄본다.또한 사전 학습과 미세 튜닝 과정을 깊이 있게 안내한다. 레이블 없는 데이터에서 사전 훈련을 진행하고, 텍스트 분류와 같은 다운스트림 작업에 맞춰 모델을 튜닝하며, 최근 각광받는 지시 기반 학습 기법까지 실습할 수 있다. LoRA 기반의 파라미터 효율적 미세 조정(PEFT) 같은 최신 내용도 담아 LLM을 실제 서비스와 연구에 연결할 수 있는 방법까지 폭넓게 제시한다. 모든 개념은 파이토치 코드로 구현되어 있으며, 일반 노트북 환경에서도 실습할 수 있도록 최적화했다. 이 책의 구현 과정을 따라가다 보면 LLM 내부에서 어떤 일이 일어나는지 자연스럽게 이해하고, 대규모 언어 모델의 메커니즘이 어떻게 작동하는지 손끝으로 체득하게 될 것이다.
목차
1장 대규모 언어 모델 이해하기1.1 LLM이란 무엇인가요?1.2 LLM 애플리케이션1.3 LLM의 구축 단계1.4 트랜스포머 구조 소개1.5 대규모 데이터셋 활용하기1.6 GPT 구조 자세히 살펴보기1.7 대규모 언어 모델 만들기1.8 요약2장 텍스트 데이터 다루기2.1 단어 임베딩 이해하기2.2 텍스트 토큰화하기2.3 토큰을 토큰 ID로 변환하기2.4 특수 문맥 토큰 추가하기2.5 바이트 페어 인코딩2.6 슬라이딩 윈도로 데이터 샘플링하기2.7 토큰 임베딩 만들기2.8 단어 위치 인코딩하기2.9 요약3장 어텐션 메커니즘 구현하기3.1 긴 시퀀스 모델링의 문제점3.2 어텐션 메커니즘으로 데이터 의존성 포착하기3.3 셀프 어텐션으로 입력의 서로 다른 부분에 주의 기울이기__3.3.1 훈련 가능한 가중치가 없는 간단한 셀프 어텐션 메커니즘__3.3.2 모든 입력 토큰에 대해 어텐션 가중치 계산하기3.4 훈련 가능한 가중치를 가진 셀프 어텐션 구현하기__3.4.1 단계별로 어텐션 가중치 계산하기__3.4.2 셀프 어텐션 파이썬 클래스 구현하기3.5 코잘 어텐션으로 미래의 단어를 감추기__3.5.1 코잘 어텐션 마스크 적용하기__3.5.2 드롭아웃으로 어텐션 가중치에 추가적으로 마스킹하기__3.5.3 코잘 어텐션 클래스 구현하기3.6 싱글 헤드 어텐션을 멀티 헤드 어텐션으로 확장하기__3.6.1 여러 개의 싱글 헤드 어텐션 층 쌓기__3.6.2 가중치 분할로 멀티 헤드 어텐션 구현하기3.7 요약4장 밑바닥부터 GPT 모델 구현하기4.1 LLM 구조 구현하기4.2 층 정규화로 활성화 정규화하기4.3 GELU 활성화 함수를 사용하는 피드 포워드 네트워크 구현하기4.4 숏컷 연결 추가하기4.5 어텐션과 선형 층을 트랜스포머 블록에 연결하기4.6 GPT 모델 만들기4.7 텍스트 생성하기4.8 요약5장 레이블이 없는 데이터를 활용한 사전 훈련5.1 텍스트 생성 모델 평가하기__5.1.1 GPT를 사용해 텍스트 생성하기__5.1.2 텍스트 생성 손실 계산하기__5.1.3 훈련 세트와 검증 세트의 손실 계산하기5.2 LLM 훈련하기5.3 무작위성을 제어하기 위한 디코딩 전략__5.3.1 온도 스케일링__5.3.2 탑-k 샘플링__5.3.3 텍스트 생성 함수 수정하기5.4 파이토치로 모델 로드하고 저장하기5.5 오픈AI에서 사전 훈련된 가중치 로드하기5.6 요약6장 분류를 위해 미세 튜닝하기6.1 여러 가지 미세 튜닝 방법6.2 데이터셋 준비6.3 데이터 로더 만들기6.4 사전 훈련된 가중치로 모델 초기화하기6.5 분류 헤드 추가하기6.6 분류 손실과 정확도 계산하기6.7 지도 학습 데이터로 모델 미세 튜닝하기6.8 LLM을 스팸 분류기로 사용하기6.9 요약7장 지시를 따르도록 미세 튜닝하기7.1 지시 미세 튜닝 소개7.2 지도 학습 지시 미세 튜닝을 위해 데이터셋 준비하기7.3 훈련 배치 만들기7.4 지시 데이터셋을 위한 데이터 로더 만들기7.5 사전 훈련된 LLM 로드하기7.6 지시 데이터에서 LLM 미세 튜닝하기7.7 응답을 추출하여 저장하기7.8 미세 튜닝된 LLM 평가하기7.9 결론__7.9.1 다음 단계는?__7.9.2 빠르게 발전하는 분야의 최신 정보 얻기__7.9.3 맺음말7.10 요약부록 A 파이토치 소개A.1 파이토치란 무엇인가요?__A.1.1 파이토치의 세 가지 핵심 요소__A.1.2 딥러닝이란?__A.1.3 파이토치 설치A.2 텐서 이해하기__A.2.1 스칼라, 벡터, 행렬, 텐서__A.2.2 텐서 데이터 타입__A.2.3 자주 사용하는 파이토치 텐서 연산A.3 모델을 계산 그래프로 보기A.4 자동 미분을 손쉽게A.5 다층 신경망 만들기A.6 효율적인 데이터 로더 설정하기A.7 일반적인 훈련 루프A.8 모델 저장과 로드A.9 GPU로 훈련 성능 최적화하기__A.9.1 GPU 장치를 사용한 파이토치 계산__A.9.2 단일 GPU 훈련__A.9.3 다중 GPU 훈련A.10 요약부록 B 참고 및 더 읽을 거리부록 C 연습문제 해답부록 D 훈련 루프에 부가 기능 추가하기D.1 학습률 웜업D.2 코사인 감쇠D.3 그레이디언트 클리핑D.4 수정된 훈련 함수부록 E LoRA를 사용한 파라미터 효율적인 미세 튜닝E.1 LoRA 소개E.2 데이터셋 준비하기E.3 모델 초기화하기E.4 LoRA를 사용한 파라미터 효율적인 미세 튜닝[워크북 목차]1장 대규모 언어 모델 이해하기2장 텍스트 데이터 다루기3장 어텐션 메커니즘 구현하기4장 밑바닥부터 GPT 모델 구현하기5장 레이블이 없는 데이터를 활용한 사전 훈련6장 분류를 위해 미세 튜닝하기7장 지시를 따르도록 미세 튜닝하기부록 A 파이토치 소개부록 D 훈련 루프에 부가 기능 추가하기부록 E LoRA를 사용한 파라미터 효율적인 미세 튜닝