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

マイクロGPT

概要

microgpt は、依存ライブラリ不要・200行の純粋な Python単一ファイル でGPTモデルの学習と推論を実現 データセット・トークナイザー・自動微分エンジン・GPT-2風NNアーキテクチャ・Adam最適化・学習/推論ループ を全て内包 最小限の実装 でLLMの本質を表現し、他のプロジェクト(micrograd, makemore, nanogpt等)の集大成 GitHub Gist, Webページ, Google Colab で公開 本ガイドでは コードの各主要部分 を順に解説

microgpt:最小GPT実装ガイド

  • microgpt.py は、GPTの本質的なアルゴリズムのみを200行で実装
  • 依存ライブラリ不要、Python標準機能のみで完結
  • データセット、トークナイザー、モデル、最適化、学習・推論ループ を全て含む
  • GitHub Gist (microgpt.py)、WebページGoogle Colabノートブック で入手可能
  • LLMの最小構成理解 や学習用途、教育用途に最適

データセット

  • 大規模言語モデル の燃料はテキストデータのストリーム
  • microgpt では32,000件の名前リストを使用(1行1ドキュメント)
  • input.txt がなければ自動でダウンロード
  • 各名前が独立したドキュメントとして扱われる
  • モデルの目的は、 データ内のパターンを学習し、類似した新しい名前を生成 すること

トークナイザー

  • ニューラルネットワーク は数値で動作するため、テキストを整数ID列に変換
  • 最も単純な方法 は、データセット内のユニークな文字ごとに1つのIDを割り当て
  • 例:a-zの小文字+ BOS(Beginning Of Sequence) トークンで合計27種類
  • 各ドキュメントは [BOS, 文字..., BOS] でラップされる
  • BOSトークン により文書開始/終了を明示的にモデルに伝える

自動微分(Autograd)

  • ニューラルネットワーク訓練 には勾配計算が必須
  • Valueクラス でスカラー値をラップし、計算グラフと局所勾配を記録
  • 加算・乗算・累乗・log・exp・ReLU など基本演算を全て実装
  • backward() で損失からパラメータまで逆伝播し、 連鎖律 により全勾配を計算
  • 複数経路の勾配合算 にも対応(変数が複数箇所で使われる場合)
  • PyTorchの.backward()相当 の動作を最小構成で再現
  • 勾配情報 により、各パラメータを損失が減少する方向へ更新可能

パラメータ

  • パラメータ はモデルの知識本体
  • Valueでラップされた浮動小数点数 の集合体
  • 初期値はランダム、学習を通じて最適化
  • 埋め込み次元n_embd、ヘッド数n_head、レイヤー数n_layer、ブロックサイズblock_size など主要ハイパーパラメータを定義
  • 重み行列生成関数matrix で各パラメータを初期化
  • state_dict で全パラメータを一元管理

microgptの設計思想

  • 効率性よりもアルゴリズムの本質 を重視
  • LLMの全体像 を理解したい人のための教材・リファレンス
  • micrograd, makemore, nanogpt など過去の簡易実装の知見を集約
  • LLMの最小限実装 として、美しさとシンプルさを追求

まとめ

  • microgpt は、LLMのコア要素だけに絞った 最小・純粋なPython実装
  • コード全体を読むことで、LLMの仕組みや学習過程を深く理解 可能
  • 教育・学習・実験用途 として最適なリソース

Hackerたちの意見

主要なユースケースは何?

「アートプロジェクト」

GPTがどう動くかを、実際の例で学ぶ感じだね。

ユースケースだけで考える人を混乱させるためにね。真面目な話、"アートプロジェクト"って言われてるけど、こういうプロジェクトは教育にとってめちゃくちゃ価値があるよ。

これは素晴らしい学習ツールで、簡潔にできるってことを示してるね。

プログラミングの名著「Programming Pearls」の新しい版が出るたびのケーススタディ。

カーパシーが、難しいと思ってたことが実は画面に収まるって教えてくれるよ。

すごく美しい作品。

どのライセンスが使われてるの?

MIT (https://gist.github.com/karpathy/8627fe009c40f57531cb1836010...)

これ、面白い言語のベンチマークになりそうだね。

誰か、消費者向けのノートパソコンでこのコードを使って小さなコーパスでトレーニングして(1週間以内に)、その後推論をデモできる方法を知ってたら教えてほしいな。(幻覚はオッケー)

Hacker Newsで議論の続きを見る