個人の手元にあるPCやノートPCで、最初から最後まで学習させ続ける言語モデルを作る——そんな実験がGitHubで公開されました。対象は mini-AGI というリポジトリで、作者はこれを「continual learning model」と呼んでいます。大げさな名前とは裏腹に、本人はかなり冷静で、まだ小さな実験段階だと明言しています。とはいえ、8GB VRAMのGPUしかない環境で、読み続け、学び続け、忘れにくいモデルをどう成立させるかという発想は、かなり面白いです。
mini-AGI は、byte-level の language model です。つまり、単語単位ではなく 256 個の byte 値をそのまま入力として扱い、トークナイザーを使いません。作者の説明では、モデルは「自分で構造を組み立てる」ように設計されていて、8GB VRAM の GPU を積んだPCや laptop で、ゼロから学習できることを狙っています。
重要なのは、学習を一度で終えるのではなく、データのストリームを少しずつ読みながら、そのたびに gradient step を進める点です。しかも推論用と学習用で別の仕組みを持つのではなく、読むときと生成するときが同じ forward pass になっています。作者は、モデルが読んだものをそのまま学ぶので、後から fine-tuning するだけの「凍った基盤モデル」とは違う、と説明しています。
ただし、何でもできる大規模モデルではありません。README では、これはまだ small toy-level model で、frontier level の性能は期待しないでほしいと釘を刺しています。狙いはむしろ、単一のデータの流れから継続的に学んでも catastrophic forgetting、つまり以前覚えたことを壊しすぎずに学び続けられるかを示すことです。作者によれば、重みはまだ公開されておらず、最初の corpus を読み切る途中で、今の進行速度だと数週間先になると書かれています。
構造の面では、固定の層を積んだ普通の LLM ではなく、2つの dense prelude block のあとに recurrent block を最大 24 回繰り返す形です。各回で top-8 experts を選び、どの深さで何回計算するかは halting head が決めます。簡単な文字なら浅く、難しい文字なら深く進む、という adaptive depth の考え方です。作者は、学習中は全深さに対して halting probability を重み付けしていると説明しています。
さらに特徴的なのが、重みの置き方です。各 expert は通常のようにVRAMに全部載っているのではなく、disk 上のファイルとして保持され、必要なものだけを VRAM に page in します。RAM には最近使った expert の cache があり、VRAM は working set だけを持ちます。だから、パラメータ数の上限は VRAM ではなく空きディスク容量に左右される、という発想です。学習が進むと容量が足りなくなったときに新しい capacity を増やし、不要なものは prune する、とも書かれています。
README には、読み込み中のダッシュボードや履歴の様子も説明されています。読みの最中は、どの expert がどの文字で使われたか、halting がどこで止まったかが可視化され、書き込み時には、2,500文字の hold-out story を与えたあと、モデルが続きの文章を生成する様子が示されています。greedy decoding なので sampling はなく、同じ条件なら同じ文が出ます。作者は、まだ繰り返しが目立つものの、243M characters の時点では文法的に正しく話題にも沿っている、としています。
まず引っかかるのは、これは単なる省メモリ化の工夫ではない、という点です。多くの小型化手法は、既存モデルを「なるべく動くようにする」ことに主眼があります。でも mini-AGI は、最初から「個人が自分のデータで継続学習できるモデル」を目標に置いている。ここがかなり違うと思います。LLM を自分のものにしたい、という欲望は昔からありますが、実際には fine-tuning の範囲に閉じ込められがちでした。このプロジェクトは、その壁を越えようとしている。
ただ、思想は魅力的でも、実用の難しさは相当あります。継続学習で一番厄介なのは、性能よりも記憶の安定です。新しい会話を覚えたせいで、昨日までできていたことを忘れるなら、それは賢くなったとは言いにくい。作者もそこを認識していて、「学び続けること」と「忘れないこと」を同時に満たす必要があると書いています。ここは理屈としては正しいですが、実際には非常に難しい。個人運用のモデルが本当に価値を持つのは、最新情報を少し吸収するだけでなく、長期の文脈を保てるときです。そう考えると、この実験はかなり本質的な問いを突いています。
weights を disk に置き、VRAM には必要な working set だけを載せるという仕組みは、8GB という制約に対するかなりまっすぐな答えです。量子化で逃げるのではなく、学習に必要な gradients や optimizer state を前提にしながら、メモリの置き場をずらして成立させようとしている。ここは設計として面白いです。単に小さいモデルを作るのでなく、「大きくなれる場所」を VRAM 以外に広げているからです。
一方で、これはかなり繊細な運用が必要だとも思います。Disk への page in/out は、速度だけでなく、どの expert をいつ持ってくるかという判断が性能を左右します。README では、前の chunk を読んだときに実際にどの hidden state が使われたかを見て demand をスコアリングするとありますが、これは言い換えると、アクセス予測が外れた瞬間に効率が落ちるということでもあります。しかも training と serving が同じ経路なので、実験としては美しい反面、現実の負荷変動にはあまり余裕がないかもしれません。うまく回れば個人マシンでの大規模学習の道が開けますが、少し崩れると一気に重くなるタイプの設計にも見えます。
byte-level で動かすのは、地味ですが重要な選択です。トークナイザーを持たないので、未知語や記号の扱いで詰まりにくく、あらゆるテキストをそのまま読める。作者が「anything を読める」と強調するのはこのためです。しかも、文字単位で入力が流れるので、学習ストリームと相性がいい。会話ログでもソースコードでも、同じ入口で処理できます。
ただ、これは同時に遠回りでもあります。単語やサブワード単位で意味を圧縮する一般的な LLM に比べると、byte-level は一見わかりやすいぶん、学習すべき系列が長くなります。実際、README に出てくる生成例も、いまの段階では反復が目立つとされていました。これは byte-level だから必ずそうなる、という話ではありませんが、細かい単位を扱うぶん、意味のまとまりをどう内部に作るかが難しいのだと思います。技術的には筋が通っていても、実用化にはかなり長い学習時間とデータ品質が要るはずです。
このプロジェクトが示しているのは、AI を所有する感覚をもう一段引き寄せようとしていることです。クラウドの向こうで止められたり、更新されたり、挙動を変えられたりするモデルではなく、手元のハードで延々と学び続けるモデル。その意味では、技術だけでなく思想の話でもあります。モデルがどこで動くか、誰が学習データを管理するか、重みを誰が持つか。そうした論点が、かなり露骨に見えてくる。
とはいえ、ここで本当に問われるのは「AGI らしい何か」が生まれるかではないと思います。むしろ、個人が自分の文脈に沿ってモデルを育てる、という運用文化が成立するかどうかです。モデルが賢いかどうか以上に、使いながら壊さずに育てられるか。README の説明からは、その入口を探っている感じが伝わってきました。大規模モデルの本流とは別の細い川ですが、この方向が詰められていくと、AI の使われ方自体が少し変わるかもしれません。