CS336: ゼロから作る言語モデリング
(cs336.stanford.edu)- 言語モデルは現代のNLPアプリケーションの基盤であり、1つの汎用システムで多様な下位タスクを扱う新しいパラダイムを開く
- このコースでは、事前学習用のデータ収集・整備、Transformerの構築、学習、デプロイ前評価まで、言語モデル開発の全工程を直接実装する
- 課題はトークナイザー・モデル構造・オプティマイザの実装から始まり、GPU最適化、FlashAttention2のTriton実装、分散学習コードまで拡張される
- 受講にはPythonとソフトウェアエンジニアリングの習熟、PyTorch、メモリ階層のようなシステム概念、微積分・線形代数・確率統計・機械学習の知識が必要である
- 実装中心の5ユニット授業であり、既存コードの参照やLLMによる直接的な解答を制限し、CPUデバッグの後にGPU学習・ベンチマークを推奨する
コースの目標と範囲
- 言語モデルは現代の自然言語処理(NLP)アプリケーションの礎であり、1つの汎用システムで複数の下位タスクを処理する新しいパラダイムを開く
- AI、ML、NLP分野が成長を続ける中で、科学者とエンジニアの双方にとって言語モデルへの深い理解が重要になる
- オペレーティングシステムの授業がOS全体をゼロから作る方式に着想を得て、学生が自ら言語モデルを開発する全工程をたどる
- 扱う範囲は、事前学習データの収集と整備、Transformerモデルの構成、モデル学習、デプロイ前評価までに及ぶ
必要な能力
- 課題の大半はPythonで進められ、他のAI授業よりも最小限のスキャフォールディングしか提供されない
- 書く必要のあるコード量は他の授業より少なくとも一桁以上多く、Pythonとソフトウェアエンジニアリングの習熟が非常に重要である
- ニューラルネットワーク言語モデルを複数マシンのGPU上で高速かつ効率的に実行する作業が大きな比重を占める
- PyTorchへの強い習熟と、メモリ階層のような基本的なシステム概念を前提とする
- 行列・ベクトルの表記と演算、確率・ガウス分布・平均・標準偏差、機械学習とディープラーニングの基礎を無理なく扱える必要がある
- 5ユニットの授業であり、実装の比重が非常に高いため、十分な時間を割り当てる必要がある
課題構成
- Assignment 1 Basicsでは、標準的なTransformer言語モデルの学習に必要なトークナイザー、モデルアーキテクチャ、オプティマイザを実装し、最小限の言語モデルを学習させる
- Assignment 2 Systemsでは、Assignment 1のモデルとレイヤーを高度なツールでプロファイリング・ベンチマークし、FlashAttention2を独自のTriton実装で最適化し、メモリ効率の高い分散学習コードを作成する
- Assignment 3 Scalingでは、Transformerの各構成要素の機能を理解し、学習APIに問い合わせてモデルスケーリング予測のためのscaling lawを当てはめる
- Assignment 4 Dataでは、生のCommon Crawlダンプを利用可能な事前学習データに変換し、フィルタリングと重複除去でモデル性能を改善する
- Assignment 5 Alignment and Reasoning RLでは、数学の問題解決で推論できるようLMを学習させるために、教師ありファインチューニングと強化学習を適用する
- Assignment 5のOptional Part 2では、DPOのような安全アライメント手法を実装して適用する
GPUコンピュートと費用
- 自宅で取り組む場合、クラウドプロバイダーのGPUコンピュートを使って課題を完了できる
- 2026年3月28日時点で、単一のB200 GPUの公開価格は Modal 6.25ドル/時間、Lambda Labs 6.69ドル/時間、RunPod 4.99ドル/時間、Nebius 5.50ドル/時間またはスポット価格 3.05ドル/時間、Together 7.49ドル/時間である
- Modalは月30ドル分の無料コンピュートを提供しており、実際のコンピュートに対してのみ課金し、ローカル開発から大規模GPU実験への移行を簡単にする
- コスト削減と利便性のため、実装の正確性はまずCPUでデバッグし、学習実行やGPU演算のベンチマークには課題で推奨される台数のGPUを使用することが推奨される
授業運営と提出ルール
- 講義は月・水の3:00–4:20pmにSkilling Auditoriumで行われ、録画は YouTube playlist で提供される
- 授業に関する質問はすべて公開Slackチャンネルで行う必要があり、告知もすべてSlackで行われる
- すべての課題は締切日までにGradescopeへ提出し、メールでの提出は受け付けない
- 締切前であれば望む回数だけ再提出でき、最後の提出物のみを採点する
- 部分提出でも未提出よりはましである
- 学生ごとに6日分のlate dayを使用でき、late day 1日は締切を24時間延長する
- 各課題で使えるlate dayは最大3日である
- 採点に客観的な誤りがあると判断した場合は、成績公開後3日以内にGradescopeで再採点申請を提出できる
協業とAIツールのポリシー
- スタディグループは許可されるが、各学生は自分の課題を理解し、自ら完了しなければならず、学生ごとに1つの課題を提出する必要がある
- グループで作業した場合は、課題の冒頭にスタディグループのメンバー名を書く必要がある
- ChatGPTのようなLLMプロンプトは、低レベルのプログラミング質問や言語モデルに関する高レベルの概念質問には許可される
- LLMを直接使って問題を解くことは禁止される
- 課題を行う際には、Cursor TabやGitHub CoPilotのようなAI自動補完は無効化することを強く推奨し、関数名補完のような非AIの自動補完は許可される
- 授業資料には自前実装に必要な内容が含まれているため、課題ハンドアウトで別途許可されない限り、オンライン上の既存実装コードを見てはならない
1件のコメント
Hacker Newsのコメント
2025年版の講義を最近終え、動画と大半の課題はこなしたが、コストの大きい一部の作業は飛ばした。最初の2つの課題だけでも膨大な思考とデバッグが必要で、ディープラーニングの基礎がある程度あったにもかかわらず、仕事後や週末の時間を少しずつ使って数か月かかった。
Stanfordの受講生たちが2週間ごとに課題を提出しているのがどうして可能なのか想像しにくい。教授陣とTAは、講義設計、最新動向を盛り込んだスライド、優れた課題の準備に本当に多くの労力を注いでおり、小さな構成要素から実際の言語モデルを作り、LLMパイプラインの主要部分を検証しながら全体が噛み合っていく過程を自分の目で見られるので達成感が大きい。
ただし、実行環境の要件はもっと明確に案内してほしかった。ハーネスはLinux + NVIDIA GPUで最もよく動作し、特定のCUDAバージョンやアーキテクチャを前提としているが、研究者には当然でも個人環境ではまれだ。自宅で追いかけるならWindows + WSL2 + NVIDIA GPUか、複数プラットフォームのレンタルGPUが次善策だが、どちらも簡単でも安価でもない。互換GPUを持たない人がこのコースを最大限活用する方法についての案内もあるとよいし、Mac OSではメモリ解析に注意しないとPythonコードが停止して再起動を強いられることがあるのも学んだ。
このコメント群ではGPUレンタル費用がやや誇張されている面もある。開発の大半はローカルで行い、必要なときだけオンデマンドGPUを短時間使えばよい。課題1はGPUなしでもローカルマシンで完全に実行でき、課題1・2も数時間のレンタルで大部分はこなせる。特に気を付けずレンタルGPUを使い続けても約200ドル程度で、問題規模を縮小する意思があれば50ドル未満にも簡単に下げられる。こうした点や調整方法は、より明確に図表化できると思う。
追加のフィードバックや問題があれば、リポジトリにissueを立ててほしい。知らない問題は直しようがないからだ。
数日前、Claudeでgpt-1の改良版を実装してみた。機械学習エンジニアではなく普通のバックエンドエンジニアだが、結果としてgpt-1とKellerJordanのmodded-nanogptを混ぜたような形になった。
ゲーミングPCで元のgpt-1論文の結果を再現でき、VRAMもそれほど多くはいらない。NVIDIA GeForce RTX 2060 SUPERで1時間学習しただけで大半の結果を再現できたので、LLMの事前学習に興味があるなら同じようにやってみることを勧める。
コードはこちら: https://github.com/epoyraz/modded-gpt-1
あるいはClaude 4.8やCodex 5.5にそのまま聞いてもいい。
richardsocherが教えていたcs224dには良い思い出がある。トランスフォーマー以前の時代に作られたので今では少し古いが、当時はディープラーニングを自然言語処理に応用するための、とても素晴らしい入門講義だった。
https://cs224d.stanford.edu
「自習用GPU計算」と言いながら、推奨に出てくるB200は1時間4.99ドルから始まる。本当に始めるのに必要なのか疑わしい。
自分でもゼロからLLMを作っているが、初期段階ではVast.aiの4090以上は必要なかった。
今年はStanfordの学生向けにBlackwell GPUを使えた幸運があり、課題説明は主にそれを基準に書かれていた。
一方で、計算カーネルやIPブロックの設計方法を学んで実験するときに必要なハードウェアは、はるかに高性能か大容量でなければならない。実験用の成果物は意図的に最適化とは反対側にあり、すべての段階で読みやすく、内部を見やすく、デバッグしやすく作るため、結果としてモデルやビットストリームは大きく膨らみ最適化も不十分になる。
他人が完成させて4090のような機材で使えるよう最適化したモデルを、自分のプロンプトで動かすのも実験ではあるが安価にできる。20ドルのFPGA向けに設計・合成された他人のビットストリームを同じFPGAに載せて自分の入力信号を与えるのに近い。しかし、この講義で自分のモデル設計を学びながら行う実験は、そういう種類のものではない。
この講義は面白そうだが、前提条件も気になる。機械学習とディープラーニングの基礎に慣れている必要があると書かれているが、その分野を実装中心で独学するのに向いた資料や、Stanford 講義録画の受講経験があれば知りたい
ただし CS336 は最先端の手法をはるかに多く扱うので、その部分は 2026年版が重要だ。
講義: https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1246...
講義動画: https://www.youtube.com/playlist?list=PLoROMvodv4rOaMFbaqxPD...
教科書: https://web.stanford.edu/~jurafsky/slp3/
本当に素晴らしい。この1か月、似たようなことをやっていて、挑戦条件として Python 標準ライブラリ以外は一切使わず、numpy も使っていない。
Word2Vec から始めて RNN、LSTM を作り、今はトランスフォーマーアーキテクチャを半分ほど実装した状態だ
オンライン公開されている YouTube 動画と講義資料で、この授業を一緒に受けるグループを作った。難しいがやりがいがあり、週1本の講義動画のペースで進めた。
30人以上で始めたが、最後のセッションには 8人しか残らなかった
やってみたいが、まだ必要な能力が足りない気がして不安だ。いつかはできるかもしれない
自宅でこの講義を追うための 最低限の GPU が何か気になる。5080 16GB を持っているが、本当にこれ以上必要なのか?
最初の2つの課題を1年かけて独力で進め、本当に多くを学んだ。その後でどんな講義を受けたのか気になる
CS336 で物足りなかったのは、強化学習の構成要素の伝え方で、その点は CME 295 の第5・6講のほうが良かった。
https://cme295.stanford.edu/syllabus/
拡散モデルの授業である CME 296 も良いと聞いており、次のステップとしてよさそうだ。
https://cme296.stanford.edu/syllabus/