発生日:2026年3月1日

Microgptと呼ばれるコンパクトなプロジェクトは、機械学習フレームワークや大規模なソフトウェアスタックに頼らず、生成型事前学習済みトランスフォーマーのアルゴリズム上の中核全体を示すことを目指した。約200行の純粋なPythonからなる単一ファイルとして公開されたこのプログラムは、データ処理、トークン化、自動微分、GPT-2風ニューラルネットワーク、最適化、学習、推論を組み合わせている。

このプロジェクトは3万2,000件の名前からなるデータセットを使用し、それぞれの名前を個別の文書として扱う。課題は意図的に控えめに設定されており、それらの名前に見られる統計的パターンを学習し、似た特徴を持つ新たな例を生成する。この限定的な構成により、読者は本番規模のインフラを避けながら、より大規模な言語モデルで使われるものと大筋で同じ手順を追うことができる。

まず、テキストを数値で表現する必要がある。microgptは、データセットに含まれる小文字の各文字に個別のトークン識別子を割り当て、文書の境界も示す系列開始トークンを追加する。その結果、語彙は27個の記号で構成される。名前の両端には境界マーカーが付けられ、これによりモデルは系列がどのように始まり、いつ終了すべきかの両方を学習できる。この文字単位の手法は、本番システムで使われるチャンク単位のトークナイザーより単純だが、基礎となる変換処理を直接明らかにする。

このプログラムは、独自の自動微分エンジンも構築する。小さなValueクラスがスカラー値を保存し、数学的演算によってそれらがどのように生成されたかを記録し、局所微分を追跡する。誤差逆伝播では、プログラムは生成された計算グラフを逆トポロジカル順にたどる。各経路に沿って連鎖律を適用し、ある値が複数の分岐を通じて寄与する場合には勾配を累積する。これらの勾配は、各パラメーターのわずかな変化が損失にどのような影響を与えるかを表す。

この仕組みはGPT風アーキテクチャとAdamオプティマイザーにつながり、その後に学習ループと生成ループが続く。この実装は、PyTorchのようなテンソルベースのライブラリーと比べ、意図的に非効率に作られている。その目的は明快さにある。最適化された配列やフレームワークの抽象化の代わりに、読者が最初から最後まで確認できるスカラー演算を用いている。

意図的に小さくした語彙とデータセットは、プログラムの各段階を結び付ける役割も果たす。文字集合を定義する同じ名前文書が学習例を提供し、境界トークンは開始と停止の両方の信号となる。そのため生成は、別個の仕組みではなく、統計的な補完の継続として理解できる。この連続性により、階層化されたシステムを生のテキストから生成出力まで追跡できる。

作者はmicrogptを、micrograd、makemore、nanoGPTを含む過去の簡素化プロジェクトの集大成と表現している。その成果は、実用的な導入についての主張というより、実行可能な解説である。不可欠な構成要素を1つのファイルに収めることで、文書がどのようにトークンになり、モデルがどのように損失を計算し、勾配がどのようにパラメーターを更新し、学習済みの確率からどのように新たな系列を生成できるのかを、学習者が直接確認できるようにしている。