17. microgpt の仕様

17.1. この章で学ぶこと

  • microgpt.py が何をするサンプルコードか

  • 入力ファイル input.txt の説明

  • 入力された文字列を文字ごとのトークン列として学習すること

  • 学習された結果を使って文字列を生成すること

この章は 仕様と入出力 にフォーカスします。コードのブロックごとの詳細は 18 章microgpt の構造)で全体構造を、19 章 以降で順に読みます。

17.2. このファイルがやっていること

microgpt.py がやっていることは、驚くほど素直です。

  • 文字列データを読む

  • 文字を整数 ID に変える

  • 次トークンを予測する

  • 予測のズレを損失として測る

  • 逆伝播で勾配を求める

  • 重みを更新する

  • 最後に新しい文字列を生成する

diagram

図: 学習で state_dict を更新し、生成では同じ重みを読みながらトークンを足していく

17.3. 入力ファイル input.txt

最初にやっているのは、学習に使う文字列を集めることです。詳細は 19 章

17.4. 文字ごとのトークン列として学習

次に、文字を整数 ID に変えます。

ここで出てくる主な要素は次の通りです。

  • uchars — データに現れる文字を並べた一覧(ID はインデックス)。

  • BOS — 文の開始・終了を表す特別なトークン ID。

  • vocab_size — 語彙に含まれるトークン数(文字 + BOS)。

学習ループの中身は 19 章(トークナイザー)、23 章(学習ループ)で説明します。

17.5. 学習結果を使った文字列の生成

17.5.1. 生成

最後は推論です。

BOS から始めて、次の文字を 1 文字ずつ選んでいきます。temperature は低いと無難に、高いと少し冒険しやすくなります。つまり、このコードだけで学習と生成の両方が見えます。

詳細は 24 章

17.6. 次に読む章

  • 18 章microgpt の構造)— 入力から出力までの流れと、各ブロックの一行概説

  • 19 章 以降 — ブロックごとの詳細(データ、モデル、学習、推論)