8P by GN⁺ | ★ favorite | 댓글 1개
  • rasbt/LLMs-from-scratch는 GPT와 유사한 LLM을 개발, 사전학습, 파인튜닝하는 코드를 담은 저장소이며, Manning 책 Build a Large Language Model (From Scratch) 의 공식 코드 저장소임
  • 학습 방식은 교육 목적의 작지만 동작하는 모델을 처음부터 만드는 과정으로 구성되며, ChatGPT 뒤의 대규모 기반 모델을 만드는 접근 방식과 유사한 흐름을 따름
  • 본문은 텍스트 데이터 처리, 어텐션 메커니즘, GPT 구현, 비라벨 데이터 사전학습, 텍스트 분류 파인튜닝, 명령어 추종 파인튜닝까지 장별 코드와 노트북을 제공함
  • 주요 장의 코드는 일반 노트북에서 합리적인 시간 안에 실행되도록 설계됐고, 사용 가능한 경우 GPU를 자동 활용하며, 외부 LLM 라이브러리 없이 PyTorch로 구현함
  • 부록과 보너스 자료는 LoRA, KV Cache, MoE, Llama/Qwen/Gemma 계열 구현, 평가, DPO, UI 예제까지 확장되어 LLM 학습 과정을 실습 중심으로 넓힐 수 있음

저장소의 목적과 책과의 관계

  • rasbt/LLMs-from-scratch는 GPT와 유사한 LLM을 처음부터 구현하는 코드 저장소임
  • Manning 책 Build a Large Language Model (From Scratch)의 공식 코드 저장소로 제공됨
  • 책은 LLM이 내부에서 어떻게 동작하는지 단계별 코딩으로 이해하는 구성을 가짐
    • 설명에는 텍스트, 다이어그램, 예제가 포함됨
    • 교육 목적의 작지만 동작하는 모델을 직접 개발하고 학습함
  • 저장소에는 더 큰 사전학습 모델 가중치를 불러와 파인튜닝하는 코드도 포함됨
  • 책 정보:

설치와 코드 사용

  • 저장소는 ZIP 다운로드 또는 git clone으로 받을 수 있음
git clone --depth 1 https://github.com/rasbt/LLMs-from-scratch.git
  • Manning 웹사이트에서 코드 번들을 받은 경우 최신 업데이트는 GitHub의 공식 저장소에서 확인하도록 안내함
  • Python과 패키지 설치, 코드 환경 설정은 setup/README.md에서 다룸
  • 문제 해결 문서는 Troubleshooting Guide로 제공됨

장별 학습 흐름

선수 지식과 실행 환경

  • 가장 중요한 선수 지식은 Python 프로그래밍 기초임
  • 딥러닝 신경망 경험이 있으면 일부 개념이 더 익숙할 수 있음
  • 코드는 외부 LLM 라이브러리 없이 PyTorch로 처음부터 구현됨
    • PyTorch 숙련이 필수는 아님
    • PyTorch 기초 지식은 도움이 됨
    • Appendix A가 PyTorch의 간단한 소개를 제공함
  • 주요 장의 코드는 일반 노트북에서 합리적인 시간 안에 실행되도록 설계됨
  • 특수 하드웨어는 필요하지 않으며, GPU가 있으면 자동으로 사용함

영상 강의와 후속 책

  • Manning에는 책 구조를 따라가는 17시간 15분 분량의 동반 영상 강의가 있음
    • 책의 각 장과 섹션 구조를 반영함
    • 독립적인 대안 또는 코딩을 따라 하는 보완 자료로 사용할 수 있음
  • 후속 성격의 책 Build A Reasoning Model (From Scratch)도 소개됨
    • 독립적인 책이지만 Build A Large Language Model (From Scratch) 의 후속으로 볼 수 있음
    • 사전학습 모델에서 시작해 추론 능력 향상을 위한 접근을 구현함
    • 포함 접근: inference-time scaling, 강화학습, distillation
    • 관련 저장소: rasbt/reasoning-from-scratch

연습문제와 보너스 자료

  • 각 장에는 여러 연습문제가 포함됨
  • 해답은 Appendix C에 요약되어 있고, 대응하는 코드 노트북은 각 장 폴더에 있음
  • Manning 웹사이트에서 무료 170페이지 PDF Test Yourself On Build a Large Language Model (From Scratch)를 받을 수 있음
    • 장별 약 30개의 퀴즈와 해답을 포함함
  • 주요 보너스 주제

    • Setup:
    • Python 설정 팁
    • 패키지와 라이브러리 설치
    • Docker 환경 설정
    • Ch 2:
    • BPE 토크나이저를 처음부터 구현
    • 여러 BPE 구현 비교
    • 임베딩 레이어와 선형 레이어 차이
    • 간단한 숫자로 보는 dataloader 직관
    • Ch 3:
    • 효율적인 multi-head attention 구현 비교
    • PyTorch buffers 이해
    • Ch 4:
    • FLOPs 분석
    • KV Cache
    • Grouped-Query Attention, Multi-Head Latent Attention, Sliding Window Attention
    • Gated DeltaNet, DeepSeek Sparse Attention, Cross-Layer KV Sharing
    • Mixture-of-Experts
    • Ch 5:
    • 대체 가중치 로딩 방식
    • Project Gutenberg 데이터셋 사전학습
    • 학습 루프 개선
    • 하이퍼파라미터 최적화
    • 사전학습 LLM과 상호작용하는 UI
    • GPT를 Llama로 변환
    • 메모리 효율적인 모델 가중치 로딩
    • Tiktoken BPE 토크나이저 확장
    • 빠른 LLM 학습을 위한 PyTorch 성능 팁
    • Llama 3.2, Qwen3, Gemma 3, Olmo 3, Tiny Aya, Qwen3.5, Gemma 4 구현
    • Ch 6:
    • 다른 레이어와 더 큰 모델을 파인튜닝하는 추가 실험
    • 50k IMDb 영화 리뷰 데이터셋 분류 파인튜닝
    • GPT 기반 스팸 분류기 UI
    • Ch 7:
    • 근접 중복 탐지와 수동태 항목 생성을 위한 데이터셋 유틸리티
    • OpenAI API와 Ollama를 이용한 명령어 응답 평가
    • 명령어 파인튜닝 데이터셋 생성과 개선
    • Llama 3.1 70B와 Ollama로 preference dataset 생성
    • DPO로 LLM 정렬 구현
    • 명령어 파인튜닝된 GPT 모델 UI

기여와 인용

  • 피드백과 질문은 Manning Forum 또는 GitHub Discussions에서 받음
  • 인쇄 책과 대응되는 코드 저장소라서, 현재는 main chapter code의 내용을 확장하는 기여를 받을 수 없음
    • 물리 책과 코드 간 차이를 만들지 않기 위한 제한임
  • 연구에 책이나 코드가 유용한 경우 인용을 권장함
    • Chicago-style citation과 BibTeX 항목이 제공됨

댓글과 토론

Hacker News 의견들
  • 추가 자료로 가이드북을 쓰고 있지만, 아직 여러 단계로 완성 중임
    지금까지는 파인튜닝 가이드가 가장 좋은 자료로 보임
    https://ravinkumar.com/GenAiGuidebook/language_models/finetu...
  • 정말 멋져 보임. 주된 목표가 이해를 키우고 신비화를 걷어내는 것인지, 아니면 사람들이 자기 필요에 맞춘 작은 모델을 직접 만들게 하는 것인지 궁금함
    • 주된 동기는 교육 목적에 가깝고, 사람들이 직접 만들어보면서 LLM이 어떻게 동작하는지 이해하도록 돕는 것임
      LLM은 중요한 주제인데, 대충 넘어가는 영상과 글이 많음. 밑바닥부터 LLM을 코딩하면 많은 개념이 명확해진다고 봄
      부차적으로는 필요한 사람들이 자기 LLM을 만들 수 있게 돕는 것도 목표임. 책에서는 사전학습과 파인튜닝을 포함한 전체 파이프라인을 코딩하지만, 재정적으로 LLM을 사전학습하는 건 현실적이지 않다고 보기 때문에 사전학습 가중치 로드도 보여줄 예정임
      GPT-2와 비슷한 LLM을 사용해 처음부터 전부 구현하고, 노트북에서 돌아가는 124M 모델부터 작은 GPU에서 돌아가는 1558M 모델까지 가중치를 불러올 수 있게 함. 실제로는 HF transformers나 axolotl 같은 프레임워크를 쓰겠지만, 이렇게 직접 구현하는 접근이 과정을 덜 블랙박스처럼 보이게 해주길 바람
  • 기술서를 공개적으로 쓰는 건 상상하기 어려울 정도로 불안할 일이라, 저자에게 박수를 보냄
    • 어느 정도 그렇지만, 동시에 꽤 동기부여도 됨 :)
    • 오히려 위험이 더 적을 수도 있음. 책을 실제로 끝내지 않고도 책을 쓰는 이점을 얻을 수 있으니까. 이상적으로는 1장 이상 많이 쓰지 않아도 될 수도 있음
  • 첫 코드 예제가 import torch라면, 완전히 처음부터 구현은 아닌 듯함 :-)
    • 그렇긴 하지만, 아니면 장황해져서 읽기 어려웠을 것임. 그래도 책에서는 미리 패키지된 torch 버전을 쓰지 않고 LayerNorm, Softmax, Linear 계층, GeLU 등을 구현하는 방법을 보여줌
    • 자동 미분 덕분에 Transformer 같은 복잡한 모델을 만들 수 있음. 방대한 데이터와 막대한 연산 자원에 더해, 지금의 AI 혁명을 가능하게 한 핵심 이유라고 봐도 됨
      이 분야에서 일하는 사람 중 이런 모델의 도함수를 손으로 계산하는 사람은 없음. 미분 가능한 프로그래밍 관점에서 생각하는 건 기본 전제이고, 이 경우 충분히 “처음부터”라고 볼 수 있음
      이런 댓글을 볼 때마다, 내부에서 무슨 일이 일어나는지나 현대 머신러닝이 어떻게 작동하는지 잘 이해하지 못하는 것 같다는 의심이 듦
    • Transformer 작동 방식을 배우는 데 autograd 구현은 관련도 적고 범위 밖이라고 봄. Transformer의 기울기를 손으로 쓰는 건 상상도 못 하겠음
  • 무료 자료일 줄 알고 GitHub로 바로 갔음. 저자의 작업은 존중하지만, 처음부터 구현하는 흐름의 무료 자료 중 추천할 만한 게 궁금함
    • Andrej Karpathy의 Neural Networks: Zero to Hero[1]
      [1] https://karpathy.ai/zero-to-hero.html
    • NumPy로 만든 GPT-2 추론 엔진https://jaykmody.com/blog/gpt-from-scratch/가 있고, 그다음 KV 캐시 구현 추가는 https://www.dipkumar.dev/becoming-the-unbeatable/posts/gpt-k...를 보면 됨
    • https://course.fast.ai/를 추천하겠음
      일반 개발자에게 훨씬 접근하기 쉽고, 수학 배경을 가정하지 않음. 좋은 출발점이라 이후 다른 비슷한 자료들이 더 잘 이해되기 시작함
    • AI 분야에서 일하는 사람이 주제에 대한 더 깊은 통찰을 얻는 데 $50도 너무 많다고 느끼는 이유를 솔직히 이해하기 어려움
      교육 자료를 만드는 데는 말도 안 되게 많은 작업이 들어가고, 이 책이 아무리 성공해도 rasbt가 투입 시간 대비 수입을 계산하면 시급으로는 말이 안 될 것임
      이 주제를 이해하는 사람은 많지만, 그 지식으로 뭘 했나? 혼자 간직하고 OpenAI에 가서 지식을 비공개로 유지하며 훨씬 더 많은 돈을 벌었음
      이런 지식이 열린 세상에 살고 싶다면, 괜찮은 저녁 한 끼 정도 가격의 책에 대해 공개적으로 불평하는 것만큼은 삼가는 게 맞다고 봄
    • Jupyter 노트북에 설명 노트를 추가했으니, 저장소만으로도 독립적으로 읽을 수 있기를 바람
  • 이 책의 내용으로 강화학습을 배울 수 있을지 궁금함
    목표는 달 착륙선처럼 뭔가가 착륙을 배우게 하는 것임. 단순하게 100피트 높이에서 시작해 한 방향으로 추력을 주고, 크레이터를 덜 만들 때까지 계속 시도하는 식임
    그다음 수평 이동 같은 변수를 추가하고, 수평 추력기를 넣고, 이후에는 수평 추력기를 제거하고 착륙선이 회전할 수 있게 하는 식으로 확장하고 싶음
    어디서 시작해야 할지 전혀 모르겠는데, 이 책이 “주류” 머신러닝처럼 보여서 도움이 될지 궁금함
    • "Grokking Deep Reinforcement Learning"[0]을 재미있게 봤음. Transformer 내용은 없음
      Python의 gymnasium[1] 라이브러리에 달 착륙선 환경이 있으니 참고하면 좋음. 내가 배울 때 가장 많이 집중했던 환경이고, 몇 가지 방식으로 해결해 봤음
      얼마 전 PyTorch로 Soft Actor Critic을 구현할 때 쓴 내 노트북[2]도 볼 수 있음. 가르치기 좋은 자료는 아니지만 뭔가 얻을 수 있을지도 모름
      [0]: https://www.manning.com/books/grokking-deep-reinforcement-le...
      [1]: https://gymnasium.farama.org/environments/box2d/
      [2]: https://github.com/DevJac/learn-pytorch/blob/main/SAC.ipynb
    • 강화학습은 LLM과는 완전히 별개의 연구 분야임. 머신러닝의 일부로 자주 보이긴 하고, Tom Mitchell의 고전 Machine Learning에도 Q-learning에 대한 훌륭한 절이 있지만, 현대 머신러닝 작업과는 관련이 적음
      AlphaGo 같은 것도 결국 고전적인 강화학습 기법의 입력으로 심층 신경망을 사용하는 작업에 가깝다고 볼 수 있음
      Sutton과 Barto의 Reinforcement Learning: An Introduction이 이 주제의 결정적인 입문서로 널리 여겨짐
    • 그 경우에는 전용 강화학습 책을 추천하겠음. LLM에서의 강화학습 부분은 LLM에 매우 특화되어 있고, 배경지식도 꼭 관련 있는 부분만 다룰 예정임
      다른 일반 머신러닝/딥러닝 책에 강화학습 입문 장을 꽤 길게 써둔 것은 있음(https://github.com/rasbt/machine-learning-book/tree/main/ch1...). 그래도 이 경우에는 다른 사람들이 말한 것처럼 전용 강화학습 책이 더 맞음
    • OpenAI의 Spinning Up을 시도해보면 좋음: https://spinningup.openai.com/en/latest/
    • 이 과정의 Q-learning 실습이 정확히 그런 걸 다룸
      https://www.ida.liu.se/~TDDC17/info/labs/rl.en.shtml
  • Karpathy 영상[0]과 비교하면 어떤지 궁금함. LLM에 입문하려고 하는데, 그 수준의 이해를 얻기에 가장 좋은 자료가 뭔지 알아보는 중임
    [0] https://www.youtube.com/watch?v=kCc8FmEb1nY
    • 영상을 끝까지 보지는 않았지만 대충 훑어본 기준으로, 책은 몇 가지 차이가 있음
      문자 단위 LLM 대신 실제 단어 단위 LLM을 구현하고, 사전학습 뒤 사전학습 가중치 로드를 보여주며, 그 LLM을 지시 파인튜닝
      또한 지시 파인튜닝된 LLM의 정렬 과정을 코딩하고, 분류 작업용 파인튜닝도 보여줌. 책 전체에 그림이 많고, 3장만 해도 그림이 26개 있음 :)
      영상도 훌륭해 보임. 2시간짜리라 탄탄한 입문용 보완 자료로 좋을 듯함. 책을 읽는 데는 아마 그 10배 정도 시간이 들 것임
    • 이미 대부분의 내용을 알고 있지 않으면 이해하기 어려움
      나도 대부분을 잘 이해하려고 여러 번 봤음
      당연히 PyTorch도 아주 잘 알아야 하고, 행렬 곱셈, 역전파 등도 알아야 함. 말도 매우 빠름
  • 언어 모델 자체에는 관심이 없지만, 언어 모델에 들어가는 기법 중 다른 곳에서 쓰고 싶은 것들이 있음
    예를 들어 어텐션이 다양한 모델에서 쓰이고, Transformer도 언어 모델 말고 다른 데서 쓰인다는 건 알고 있음
    이 책을 보면 어텐션과 Transformer를 언어 모델 밖에서도 쓸 수 있을 만큼 잘 이해할 수 있을지 궁금함
    • 이 책에서 구현하는 어텐션 메커니즘은 텍스트 입력이라는 면에서는 LLM에 특화되어 있지만, 근본적으로는 Vision Transformer에서 쓰는 것과 같은 어텐션 메커니즘임
      차이는 LLM에서는 텍스트를 토큰으로 바꾸고, 그 토큰을 LLM에 들어가는 벡터 임베딩으로 변환한다는 점임. Vision Transformer에서는 이미지를 토큰으로 보는 대신 이미지 패치를 토큰으로 사용하고, 그것을 벡터 임베딩으로 바꿈
      텍스트든 비전이든 같은 어텐션 메커니즘이고, 두 경우 모두 벡터 임베딩을 입력으로 받음
      (*3장은 지난주에 이미 제출했고 곧 MEAP에 올라올 예정임. 그동안 코드는 노트와 함께 여기서 볼 수 있음: https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01...)
  • 모델 아키텍처 자체는 특히 torch를 쓰면 그렇게 복잡하지 않음. 전체 과정도 꽤 직선적이라, 해볼 만한 실현 가능한 프로젝트로 보임