先日OpenAIの共同創設者の一人であるAndrej Karpathyが、GitHubで新しいプロジェクト「LLM101n」を公開しました。⇩このプロジェクトは、LLMに関する学習コースで、ゼロからストーリーを生成、要約、解説できるLLMを構築することを目指しています。
Andrej KarpathyはよくGitHubでゼロからミニLLMを構築したり、Transformerの調整に関するチュートリアルを公開しています。説明はいつも非常に具体的かつわかりやすくて、読めばすぐに理解できるのでかなり人気です。なので、今回の新しい学習コースも、現時点ではREADMEしかないですが既に3,000個以上のスターがあります。コースの概要を見るだけでわかると思いますが、非常に優れたカリキュラムであり、LLMに関するほぼすべての重要なトピックを網羅しています。
さらに、READMEには「最小限のコンピューターサイエンスの知識で学べるようにする」と明記されているため、初心者の方でも十分に学べるはずです。私も最近このコースが出たら勉強したくて、LLMに関する自分の知識の不足を補おうと考えています。
⇩は、コースの具体的な目次と私が追加した簡単な内容説明です。
Syllabus
Chapter 01 Bigram Language Model (language modeling)
⇒言語モデルを構築するための基礎知識
Chapter 02 Micrograd (machine learning, backpropagation)
⇒機械学習、誤差逆伝播(ニューラルネットワークの学習アルゴリズム。イメージとしては、複数人の中で最後の人に質問の回答を教え、その人が最初の人に修正方法を伝え返すようなプロセス)
Chapter 03 N-gram model (multi-layer perceptron, matmul, gelu)
⇒ニューラルネットワークの基本構造と活性化関数gelu
Chapter 04 Attention (attention, softmax, positional encoder)
⇒transformerの構造(アテンションと位置情報)、活性化関数softmax
Chapter 05 Transformer (transformer, residual, layernorm, GPT-2)
⇒transformer,GPT-2のアーキテクチャ
Chapter 06 Tokenization (minBPE, byte pair encoding)
⇒トークナイザの学習
Chapter 07 Optimization (initialization, optimization, AdamW)
⇒学習時のパラメータ最適化アルゴリズム
Chapter 08 Need for Speed I: Device (device, CPU, GPU, ...)
⇒学習速度に影響を与える要素(CPU、GPU)
Chapter 09 Need for Speed II: Precision (mixed precision training, fp16, bf16, fp8, ...)
⇒学習速度に影響を与える要素(混合精度、浮動小数点数のサイズ)
Chapter 10 Need for Speed III: Distributed (distributed optimization, DDP, ZeRO)
⇒分散学習、マルチノードマルチGPU
Chapter 11 Datasets (datasets, data loading, synthetic data generation)
⇒学習データに関連する内容
Chapter 12 Inference I: kv-cache (kv-cache)
⇒kv-cache(Transformerの重みをキャッシュして推論速度を向上する手法)
Chapter 13 Inference II: Quantization (quantization)
⇒量子化(bf16⇒int4とか)
Chapter 14 Finetuning I: SFT (supervised finetuning SFT, PEFT, LoRA, chat)
⇒ファインチューニング(SFTやLoRA)
Chapter 15 Finetuning II: RL (reinforcement learning, RLHF, PPO, DPO)
⇒RLHF(人間のフィードバックによる強化学習)
Chapter 16 Deployment (API, web app)
⇒アプリ開発のためのAPIパッケージ化
Chapter 17 Multimodal (VQVAE, diffusion transformer)
⇒マルチモーダル(拡散モデル)