世界を動かす技術を、日本語で。

CS336: ゼロからの言語モデル構築

概要

  • 本コースは 言語モデル の開発プロセス全体を学ぶことを目的
  • Python深層学習システム最適化 の知識が前提
  • 実装中心で、 課題のコード量が多い ため十分な時間確保が必要
  • GPU計算資源 利用方法や提出ルールも詳細に案内
  • 課題提出・遅延・再評価 などの運用ルールも明確化

コース概要と言語モデルの重要性

  • 言語モデル は現代のNLPアプリケーションの基盤
  • 単一の汎用システムで様々な下流タスクに対応可能
  • AI・ML・NLP 分野の発展に伴い、深い理解が科学者・技術者に不可欠
  • このコースでは 言語モデルの開発プロセス を一から体験
  • オペレーティングシステム開発型の教育手法を参考に、 データ収集・前処理、モデル構築、学習、評価、デプロイ前検証 までを網羅

受講前提条件

  • Python の高い習熟度
    • 課題の大半がPythonで出題
    • 他のAI科目より コード量が桁違い に多い
    • ソフトウェアエンジニアリング能力 も必須
  • 深層学習・システム最適化経験
    • PyTorch の利用経験必須
    • メモリ階層 などシステム基礎知識が必要
  • 大学レベルの数学
    • 線形代数(行列・ベクトル演算)
    • 微積分
  • 確率・統計の基礎
    • 確率分布、平均、標準偏差 など
  • 機械学習の基礎
    • ML/DLの基本概念 理解
  • 5単位 の重めの実装型コースであるため、時間配分に注意

課題構成

  • Assignment 1: 基礎
    • トークナイザー、モデルアーキテクチャ、オプティマイザー実装
    • ミニマルなTransformer言語モデルの学習
  • Assignment 2: システム
    • モデル・層のプロファイリング・ベンチマーク
    • FlashAttention2 のTriton実装によるAttention最適化
    • メモリ効率を考慮した分散学習コード構築
  • Assignment 3: スケーリング
    • Transformer各コンポーネントの機能理解
    • トレーニングAPIを用いたスケーリング則の推定
  • Assignment 4: データ
    • Common Crawl の生データを前処理・フィルタリング・重複除去
  • Assignment 5: アラインメント・推論・RL
    • 教師あり微調整・強化学習 による推論能力向上
    • 任意課題: 安全性アラインメント 手法の実装(DPO等)

GPU計算資源と自習

  • 自宅学習者向けに クラウドGPU 利用案内
    • Modal(スポンサー): $6.25/時、月$30無料枠
    • Lambda Labs: $6.69/時
    • RunPod: $4.99/時
    • Nebius: $5.50/時(プリエンプティブル$3.05/時)
    • Together: $7.49/時、8GPU以上
  • CPUで実装検証→GPUで本番実行 推奨
  • 課題ごとの推奨GPU数あり

オナーコード(倫理規定)

  • スタディグループ は可、だが 課題は各自提出
  • グループで作業した場合は メンバー名を明記
  • AIツール利用規定
    • ChatGPT等のLLMは 低レベル質問や概念理解 には可
    • 直接的な解答生成は禁止
    • AI補完機能(GitHub Copilot等) は無効化推奨
  • 既存コードの参照は禁止 (指定がある場合を除く)
  • 提出はGradescopeのみ、メール提出不可
  • 締切まで何度でも再提出可 (最終版のみ採点)
  • 遅延提出は6日分まで、1課題最大3日
  • 再評価申請は成績公開後3日以内にGradescope上で申請

スケジュール(抜粋)

  • 3/30 :概要・トークナイゼーション、Assignment 1配布
  • 4/1 :PyTorch・リソース計算
  • 4/6 :アーキテクチャ・ハイパーパラメータ
  • 4/8 :Attention代替手法・Mixture of Experts
  • 4/13 :GPU・TPU
  • 4/15 :カーネル・Triton、Assignment 1提出・Assignment 2配布
  • 4/20, 4/22 :並列処理
  • 4/27, 5/4 :スケーリング則
  • 5/6 :評価、Assignment 3提出・Assignment 4配布
  • 5/11, 5/13 :データ(ソース、フィルタリング等)
  • 5/18, 5/20 :中間・後期学習(SFT/RLHF、RLVR)、Assignment 4提出・Assignment 5配布
  • 5/25 :Memorial Day(休講)
  • 5/27, 6/1, 6/3 :アラインメント・ゲスト講義、Assignment 5提出

スポンサー

  • Modal による計算資源提供

このコースは 実践的な言語モデル開発力 を徹底的に鍛える内容となっており、 現場で通用するスキル獲得 を目指す受講者に最適です。

Hackerたちの意見

もう一度これをリリースしてくれてありがとう!今年の変更点は何なの?

TAだよ。最大の変更点は、第二課題(分散)でメモリやプロファイリング、分散タスクをたくさん追加したことと、第五課題(アライメント)で今年はほとんどのRLタスクが新しいものになったことだね。課題3(スケーリング法則)も完全に更新されたけど、かなりのリソースがないと実行が難しいかもしれない。外部の学生が無料でシミュレーション実験を行える方法を考えてるよ!課題1(基礎)は最も準備に時間をかけたもので、今年はちょっとしたモダナイゼーションやバグ修正が必要だっただけだよ。

リチャード・ソッカーが教えてたcs224dの思い出があるなぁ。今はちょっと古いけど、トランスフォーマー以前の時代に作られたもので、当時はNLPにディープラーニングを応用する素晴らしい入門だったよ。 [1] https://cs224d.stanford.edu

同じようなことを考えてた。インターネットの可能性に気づいた瞬間だった。トップの研究大学の大学院生じゃなくても、最前線について学べるんだって。

自習用のGPU計算 彼らがB200のために提案しているのは、1時間あたり$4.99から始まるんだ。これって、本当に必要なのかな?自分でゼロからLLMを作ってるけど、初期段階ではVast.aiの4090で十分なんだよね。

自分のLLMをトレーニングするのにGPUすら必要ないよ。

これらは対象の受講者(スタンフォードの学部生や修士課程)にとって十分手頃だと思うよ。

教育機関が必要なリソースを提供しないのは変だよね?

TAだよ。全然違うよ!実際、最初の課題にはローカルコンピュータ(MシリーズGPU)でも対応できるようにセクションを追加したんだ。課題2では、GPUにTritonサポートが必要な地域がいくつかあるけど、もっと安いGPUでも適応できるよ。今年はスタンフォードの学生向けにBlackwell GPUを手に入れられたから、書き方もそれに合わせてるんだ。

疑念を持つのは正しいよ。4060Ti(16GB)でTinyStoriesデータセットのSLMをかなり良い感じにトレーニングできたから、問題はなかったよ。「議論の余地がある小さい」モデルより大きいモデルにアイデアをスケールアップしようとしなければ、問題にはならないと思う。

FPGAと似たような感じだと思うな。 - 実際の使用ケースに必要なハードウェアは比較的小さいんだ。なぜなら、製品用の{モデルやビットストリーム}はサイズ最適化が進んでいて、ターゲットの使用ケースで良い結果を得るために必要ないものは全部削ぎ落とされてるから。 - でも、{計算カーネルやIPブロック}を設計するために試行錯誤したり学んだりする時に必要なハードウェアは、もっとパワフルで高容量じゃないとダメだよ。なぜなら、実験は意図的に最適化とは逆の方向に進むから。可読性や内省性、デバッグ可能性を重視して作られるから、結果的に{モデルやビットストリーム}が膨れ上がって最適化が崩れちゃうんだよね。(ここで言いたいのは、「他の誰かが完成させたモデルを使って、自分のプロンプトで試す」ってのは、安上がりな実験の一種なんだ。これは「誰かが作ったFPGAビットストリームを、自分の$20のFPGAにデプロイして、自分の入力信号を与える」ことと同じように安い。でも、これはこのコースで自分のモデルを設計するためにやる実験とは違うよ!)

みんなは自分で学ぶのが好きなのか、オープンな学びのコミュニティを作ることに興味があるのか、ちょっと気になるな。

Discordサーバーに参加してみたいな。みんなで教材について話し合えるコミュニティがあったらいいなと思う。フルコースに参加できなくても大丈夫だし。

YouTubeの動画やオンラインのコース資料を使って、このクラスをやるためにグループを集めたんだ。難しいけど、やりがいがあるよ。毎週1つの講義動画を見ながら進めた。最初は30人以上の学習者がいたけど、最後のセッションでは8人になっちゃった。

関連情報: スタンフォードのCS336のAIエージェントガイドライン https://github.com/stanford-cs336/assignment1-basics/blob/ma...

このコースに興味があるんだけど、前提条件についても気になるな。> 機械学習(例: CS221, CS229, CS230, CS124, CS224N)機械学習と深層学習の基本に慣れている必要があるよ。これらのトピックについて実装重視の自己学習リソースや、スタンフォードの講義の録画に関する経験がある人いる?

2024年春のCS224Nコースがこの前提条件には十分だと思ったよ。教科書(第1章から第13章)と組み合わせればね。CS336と同様に、ビデオや課題もあって、2024年のものであっても基本は最近の年とほぼ同じだから問題ないよ。ただし、336は最先端の技術についてもっと時間をかけているから、2026年版は必須だね。コース: https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1246... 講義ビデオ: https://www.youtube.com/playlist?list=PLoROMvodv4rOaMFbaqxPD... 教科書: https://web.stanford.edu/~jurafsky/slp3/

最初の2つの課題を独自に1年かけて取り組んだんだ。めっちゃ学びがあった!他の人がその後に受けたコースについても気になってる :)

最近、このコースの2025年版を終えたよ(動画とほとんどの課題をやって、一部の高コストなタスクは飛ばした)。かなりのものでした。最初の2つの課題にはたくさんの思考とデバッグが必要で、深層学習の基礎がそこそこあったにもかかわらず、仕事の後や週末に少しずつ進めて数ヶ月かかったよ。(決してモデルのパートタイム学生ではないし、何日も取り組めないこともあったけど、もっとひどい状況だったかもしれない。)スタンフォードの学生が2週間ごとに課題を提出するのは想像しにくいね。コースに戻って、コーススタッフ、教授やTAに感謝!彼らはコースを設計するのにたくさんの思考を注いでいて、最新の分野の情報を含むスライドを作ったり、素晴らしい課題を準備したりしているのがわかる。実際のLMを作成して、LLMパイプラインの他の重要な部分を小さなビルディングブロックから探求し、各ステップを検証して、全体がどう組み合わさるかを自分で見ることができる。課題を終えた後は、達成感を本当に感じられるよ。ただ、スタッフがみんなにアクセスしやすくするためにたくさん努力しているのは明らかだけど、環境要件の説明をもう少し頑張ってほしかったな。彼らのハーネスは、NVIDIA GPUを搭載したLinux環境で最も効果的に動作するんだけど、研究者には当たり前でも、家庭用コンピュータのセットアップでは珍しいからね。特定のCUDAバージョンやアーキテクチャも必要だし。自宅でやる場合、次に良いのはWindowsにWSL2 + NVIDIA GPUを組み合わせることだけど、いろんなプラットフォームでリースされたGPUも必要で、どれも簡単ではないし(もちろん、安くもない)。スタッフがそのあたりのガイダンスをもう少し整えてくれるといいな、特に互換性のあるGPUを持っていない人がコースを最大限に活用する方法について。 (一つ学んだことは、Mac OSを使っていてメモリ解析に気をつけないと、Pythonコードがフリーズしてマシンを強制再起動させることがあるってこと。)

これすごいね、先月ずっとこんなことをやってたよ。チャレンジとして、Pythonの標準ライブラリ以外は使わない(numpyもなし)。Word2Vecから始めて、RNNを作って、次にLSTMを作って、今はトランスフォーマーアーキテクチャを作る途中だよ。