17. microgpt の仕様
17.1. この章で学ぶこと
microgpt.pyが何をするサンプルコードか入力ファイル
input.txtの説明入力された文字列を文字ごとのトークン列として学習すること
学習された結果を使って文字列を生成すること
この章は 仕様と入出力 にフォーカスします。コードのブロックごとの詳細は 18 章(microgpt の構造)で全体構造を、19 章 以降で順に読みます。
17.2. このファイルがやっていること
microgpt.py がやっていることは、驚くほど素直です。
文字列データを読む
文字を整数 ID に変える
次トークンを予測する
予測のズレを損失として測る
逆伝播で勾配を求める
重みを更新する
最後に新しい文字列を生成する
図: 学習で state_dict を更新し、生成では同じ重みを読みながらトークンを足していく
17.3. 入力ファイル input.txt
最初にやっているのは、学習に使う文字列を集めることです。詳細は 19 章。
17.4. 文字ごとのトークン列として学習
次に、文字を整数 ID に変えます。
ここで出てくる主な要素は次の通りです。
uchars— データに現れる文字を並べた一覧(ID はインデックス)。BOS— 文の開始・終了を表す特別なトークン ID。vocab_size— 語彙に含まれるトークン数(文字 + BOS)。
17.5. 学習結果を使った文字列の生成
17.5.1. 生成
最後は推論です。
BOS から始めて、次の文字を 1 文字ずつ選んでいきます。temperature は低いと無難に、高いと少し冒険しやすくなります。つまり、このコードだけで学習と生成の両方が見えます。
詳細は 24 章。
17.6. 次に読む章
18 章(microgpt の構造)— 入力から出力までの流れと、各ブロックの一行概説
19 章 以降 — ブロックごとの詳細(データ、モデル、学習、推論)