milanm/AutoGrad-Engine
A complete GPT language model (training and inference) in ~600 lines of pure C#, zero dependencies
何を解決するか
MicroGPT.csは、TransformerベースのGPTモデルの内部動作を理解しやすくするための教育用ツールです。外部ライブラリを一切使用しない純粋なC#による完全な実装を示すことで、トークン化、埋め込み、アテンション、MLP、誤差逆伝播、生成がどのように組み合わさっているかを正確に確認できます。ブラックボックス化されたフレームワークではなく、ChatGPTの背後にあるアルゴリズムを解明する、透明でコメント付きのコードベースを提供します。
仕組み
このプロジェクトは、Andrej Karpathy氏の microgpt.py を忠実に移植したものです。以下の4つのコアファイルで構成されています。
Value.cs— スカラーをラップし、勾配を自動的に追跡する自動微分エンジン。Tokenizer.cs— 文字レベルのエンコードおよびデコード(BOS/EOSトークン)。NeuralOps.cs— ステートレスなビルディングブロック:Linear、Softmax、RMSNorm。Program.cs— GPTモデル、学習ループ、および生成ロジック。
学習には、32,033件の人名からなる小さなデータセットを使用します。このモデルは、設定可能なハイパーパラメータ(埋め込みサイズ、層数、アテンションヘッド数など)を持つ標準的なTransformerです。学習中、Adamオプティマイザーを使用してクロスエントロピー損失を最小化します。学習後、自己回帰的に新しい名前が生成されます。BOSから開始し、Softmax確率から次の文字をサンプリングし、それをモデルに戻すというプロセスを、EOSまたは最大長に達するまで繰り返します。
READMEには、トークン化から誤差逆伝播までの各ステップを、例えや図解を用いて解説した詳細な開発者ガイドも含まれています。
対象読者
GPTを真に理解したい開発者や機械学習愛好家を対象としています。コードには詳細なコメントが付けられており、初心者向けの前提知識ガイドや、本番環境向けモデル(GPT-4など)との比較も含まれています。forループが書ける人なら誰でも理解できます。意図的に本番用コードとしては設計されておらず、並列テンソルではなく一度に1つの数値を処理しますが、概念的な要素はすべて網羅されています。
ハイライト
- 依存関係ゼロの純粋なC#:PyTorch、TensorFlow、NuGetパッケージは不要。
- 4ファイルで約600行のコード、広範なコメント付き。
- 勾配を自動的に追跡する完全な自動微分エンジンを搭載し、数値勾配チェック(PyTorchの
gradcheckに類似)で検証済み。 - GPT-2よりもLLaMAに近いモダンな設計(LayerNormの代わりにRMSNorm、バイアスなし、二乗ReLU、プリノルム)。
- CLI引数により、モデルサイズ、学習ステップ数、学習率などを調整可能。
- GPT-4との明確な比較表により、規模の違い(パラメータ数、コンテキスト、学習データ)を提示。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト