diy-llm 評価: CS336 を中国語で再構成した LLM 全行程教材
Covers pre-training data, Tokenizer, Transformer, MoE,distributed training, Scaling Laws, inference & alignment .6 progressive code assignments for full-stack LLM learning | 涵盖预训练数据、分词器、Transformer、MoE、分布式训练、缩放定律、推理与对齐,6 项渐进代码作业,掌握 LLM 全栈知识
ひと目でわかる
- これは何?
- Stanford CS336 を下敷きに、Tokenizer から GRPO までを 16 章と 6 つのコード課題に分解した中国語教材。Jupyter Notebook 主体の構成と、ライセンス表記が無い点をどう扱うかを中心に検討する。
- 誰に向いている?
- LLM の各構成要素を手元のコードで確認したい個人学習者、とくに中国語で読み進めたい読者には向いている。逆に、本番パイプラインへ組み込む部品や、ライセンス条件を明確にしたい商用利用の担当者には勧められない。
- 商用利用できる?
- 許可なしにはできません。GitHub はこのリポジトリにライセンスファイルを見つけていません。ライセンスがなければ、原則としてすべての権利が留保され、コードを読むことはできても再利用はできません。使う前に README を確認するか、作者に問い合わせてください。
- 今もメンテナンスされている?
- されています。最後のコミットは 5 日前です。
- 何の言語で書かれている?
- 主に Jupyter Notebook です(GitHub の言語統計による)。
回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。
オープンソース詳細解説
CS336 の中国語版ではなく、何を置き換えようとしているのか
README はこのプロジェクトを「斯坦福原版的『汉化版』」ではないと明言し、代わりに「LLM炼丹工坊」という比喩を使う。翻訳ではなく、前提知識の補完と国内環境への調整を含む再構成を狙っている。具体的には、数学と深層学習の前置きを補い、Qwen や DeepSeek といった中国語圏のモデルを例に挙げる方針が README に書かれている。
対象読者は README の前置要求から読み取れる。Python と PyTorch の実務経験、線形代数・確率統計・微積分、そして機械学習と深層学習の基礎が前提とされ、GPU プログラミングは任意とされている。つまり、入門者が最初に触る教材ではなく、既にモデルを書いた経験がある人が、Tokenizer からアラインメントまでの各段を自分の手で再確認するための位置づけになる。
16 章の並びが示す依存関係
章立ては、いきなり Transformer に入らない。第 2 章で BPE と Unicode 正規化、つまりテキストをトークン列に落とす段を先に置き、第 3 章で混合精度や勾配蓄積、FLOPs とメモリの見積もりを扱う。第 4 章でようやく RoPE、RMSNorm、SwiGLU、AdamW、Pre-Norm と Post-Norm、学習率スケジュールが並ぶ。
後半は最適化とスケールの話に移る。第 5 章が Top-K ルーティング、負荷分散、補助損失、Expert Parallelism、DeepSeekMoE、第 6 章と第 7 章がメモリ帯域と計算強度、Flash Attention、カーネル融合、CUDA と Triton、第 8 章がデータ並列・モデル並列・パイプライン並列と ZeRO-1/2/3、FSDP、All-Reduce を扱う。第 9 章の Chinchilla 則と外挿、第 10 章の KV Cache・投機的デコード・GPTQ/AWQ・PagedAttention・Continuous Batching が続き、第 11 章の MinHash 重複排除や PII 脱敏、第 12 章の MMLU や HumanEval、CEval、AlpacaEval、第 13 章の Pre-training から SFT、DPO、RLHF PPO と Alignment Tax、第 14 章の GRPO と RLVR で締める。第 15 章は CLIP から LLaVA、Qwen-VL、Chameleon へ広がる。
この順序には意図がある。トークナイザと数値の見積もりを先に置くことで、後の分散訓練や推論最適化の議論が、どの資源の話をしているのかを読者が追える。第 16 章は更新中とされ、内容は「什么是LLM推理?」と LeCun に関する項目という構成で、章全体としては未完成の状態にある。
6 つの課題は章のどこに対応するか
coursework/ 配下の課題は 6 つで、README の表ではすべて完了と記されている。assignment1-basics は tokenizer、モデルアーキテクチャ、オプティマイザを実装して極小の言語モデルを訓練する。第 2 章と第 4 章がこれに対応する。assignment2-systems は性能分析とベンチマーク、Triton による FlashAttention-2 の実装、分散訓練コードの構築で、第 6 章から第 8 章に対応する。
assignment3-scaling は Transformer 各部位の役割を確認したうえで scaling law をフィットさせ、assignment4-data は Common Crawl の生データを前処理データセットへ変換し、フィルタと重複排除を行う。assignment5-alignment は SFT と GRPO などの強化学習で数学問題を解かせ、assignment6-evaluation は lm-evaluation-harness と evalscope を使い、言語理解・常識推論・コード・数学推論の各軸で測る。
注意点として、第 10 章の推論と第 12 章の評価はどちらも assignment6-evaluation を参照している。章と課題が 1 対 1 ではなく、評価の課題が推論章と評価章の両方にまたがる構成だ。学習順を課題番号だけで決めると、第 10 章の内容を先に読む必要が出てくる。
動かすまでの手順と、書かれていない部分
README の快速开始は短い。git clone https://github.com/datawhalechina/diy-llm.git を実行し、cd diy-llm で移動したあと、コメントとして「根据具体作业需求安装」とあるだけで、requirements.txt や pyproject.toml の類は README には示されていない。依存関係は各課題のディレクトリ側で個別に管理されていると読むのが自然だが、README からは確認できない。
学習経路は 3 段で説明される。docs/zh/ 配下の中国語ドキュメントを章順に読み、coursework/ の 6 課題を実施し、実装コードを読んで各構成要素の設計を理解する、という流れだ。英語版は docs/en/ にある。ドキュメントサイトは VitePress で構築されており、設定は docs/.vitepress/ に置かれている。オフライン用に PDF も releases から配布され、判読に支障のない範囲で Datawhale の透かしが入ると README に記載されている。
環境面で確実に言えるのは、assignment2-systems が Triton によるカーネル実装と分散訓練を含むという点だ。GPU が無い環境で 6 課題すべてを完走する前提は README からは読み取れない。
ライセンス表記が無いという制約
リポジトリのメタデータでは License が unknown とされており、README にもライセンス条項への言及はない。Datawhale の他プロジェクトがどう扱っているかは、この素材からは分からない。
この状態が影響するのは、教材として読む場合ではなく、コードや文章を別の成果物へ持ち出す場合だ。課題の実装を自社のリポジトリへコピーする、講義資料へ転載する、といった用途では、条件が不明なまま進めることになる。ライセンスは法的判断の領域なので、ここでは「未記載である」という事実と、それによって再利用の可否が決められないという運用上の問題だけを指摘しておく。学習のために clone して手元で動かす範囲と、配布物に組み込む範囲は、同じリポジトリでも扱いが変わる。
CS336 本体と何が違うのか
比較対象として最も自然なのは、下敷きになった Stanford CS336 である。README も原版の存在を前提に書かれている。違いは 3 点に集約される。第一に言語で、講義と課題の説明が中国語で提供され、英語版も docs/en/ に併置される。第二に例の選択で、Qwen や DeepSeek など中国語圏のモデルを題材に含める方針が明記されている。第三に、原版の課題をそのまま置くのではなく、assignment1 から assignment6 という 6 分割に組み直している点だ。
ただし、この 3 点は README が述べている方針であり、各章の中身が原版からどれだけ離れているかは、提供された素材からは判断できない。章の見出しを見る限り、RoPE、RMSNorm、SwiGLU、ZeRO、Chinchilla 則、GRPO といった項目は原版の技術範囲を踏襲している。中国語話者でない読者にとっては、docs/en/ の整備状況が実用上の分岐点になるが、その完成度も素材からは確認できない。
採用を見送るべきケース
このリポジトリは教材であり、ライブラリではない。pip install で入れて本番の訓練パイプラインに組み込む種類のものではないと、構成から判断できる。Tokenzier の実装や FlashAttention-2 の Triton カーネルは課題として書く対象であり、保守された依存物として使う前提ではない。
もう一つの見送り条件は計算資源だ。第 6 章から第 8 章、および assignment2-systems は GPU のメモリ帯域やカーネル、分散構成を扱う。CPU のみの環境では、これらの章を読むことはできても、課題を通じて挙動を確かめる段まで進めない。第 9 章の scaling law のフィッティングも、実験を回す前提の内容である。
第三に、ライセンス条件を先に確定させる必要がある組織。unknown のまま社内の成果物へ取り込む判断はできない。逆に、読み物として章を追い、手元の小規模なモデルで assignment1-basics だけを試す、という使い方なら、この 3 つの制約はいずれも該当しない。
編集部の結論
LLM の各構成要素を手元のコードで確認したい個人学習者、とくに中国語で読み進めたい読者には向いている。逆に、本番パイプラインへ組み込む部品や、ライセンス条件を明確にしたい商用利用の担当者には勧められない。採用前に確認すべきは 3 点で、リポジトリのライセンス表記の有無、coursework/assignment2-systems/ が要求する GPU 環境の粒度、そして 6 つの課題のうち実際に走らせたいものが docs/zh/ の該当章と対応しているかどうかである。ライセンスが未記載のままである限り、教材として読む範囲を超えた再利用は保留するのが妥当だ。
コミュニティノート