Simon Edwardsson、端末を装う360Mモデル「WorldTUI」を公開

スペック

総パラメータ約360M(ベースモデルは約494M)
配布形式・量子化int4
4bit量子化の目安メモリ約0.2GB(16GB以上のメモリで実行可能な目安)

メモリの目安はパラメータ数×0.6バイトの概算で、実際はコンテキスト長と実装で変わります

Simon Edwardssonは、キー入力から端末画面の変化を予測する約360Mパラメータのモデル「WorldTUI」を訓練し、int4量子化した208MBのブラウザデモを公開しました。背後にシェルやファイルシステムはなく、ShellBenchで80/106を記録しています。

ベースモデルのQwenはAlibaba Cloudが開発する大規模言語モデルのファミリーで、重みを公開しています。

何が新しいか

WorldTUIはQwen2.5-Coder-0.5Bをベースに、Docker内で実プログラムを動かして記録した端末セッションでファインチューニングしたモデルです。テキストを末尾に追記するのではなく、画面を文字セルのグリッドとして扱い、どの行を書き換えるかとカーソル位置を出力します。ファイル作成、vim、tmux、snakeの実行が可能で、数コマンド前に書いた内容を覚えている場合もあります。

  • 入力は実端末が送る生バイト(Enterは\r、Escapeは0x1b、←はESC [ D)
  • 入力がないときは継続時間付きのWAITトークンを渡し、snakeが自走する
  • スクロールや画面クリアは前画面の行を写すCOPY操作で表現し、1行あたり約96トークンから3トークンに削減
  • 語彙は333トークン(バイト256、行64、特殊操作少数)で、文法制約付きデコードにより常に有効な画面更新を出す

訓練では、DAggerに倣った自己修正学習を3ラウンド実施しました。モデル自身の誤った画面から正しい次画面への修正差分を学ばせる方式で、修正に含める語は過去の実画面かユーザー入力に現れたものに限定し、幻覚を報酬にしないようにしています。

仕様・数値

項目 値
訓練データ 336kエピソード、約2Bトークン
訓練時間 約75 GPU時間(RTX 4090)
ShellBench 80/106
ファイル読み戻し 9/13
PresetBench(int4) 24/47 → 38/47(自己修正と追加データ)
大規模フレームp95(RTX 4090) 逐次6.7秒 → 行並列0.87秒
1文字入力(M4 Mac、ブラウザー) 約60ms
man test級の更新(M4 Mac) 逐次2.5秒 → 並列ドラフト+検証0.9秒

比較では、プロンプトのみのQwen2.5-Coder-0.5BがShellBench 52・読み戻し2/13、Qwen3-0.6Bが60・3/13でした。

高速化では行ごとにバッチ要素を割り当てて並列生成し、デコード長を最大約3,000ステップから最長行の約100ステップに縮めました。行同士が協調できずvimが3行目から開くといった問題には、並列行の出力をドラフトとして同じモデルで逐次検証する投機的デコードで対処しています。

モデル縮小では、151,936語彙の埋め込み(136Mパラメータ)を333トークン分だけ残して約494Mから約360M(990MB→716MB)にし、int4で208MBにしました。

試し方・要件

  • WebGPU対応のデスクトップブラウザーと物理キーボードを想定。ChromeかEdgeが最適
  • 現代的なモバイル端末でも動くはずですが、非常に遅い
  • 実装はWebGPU上でWGSL計算シェーダーを動かすカスタムJavaScript版のQwenデコーダー
  • bashプロンプト、vimバッファー、snakeなどの開始状態から実行でき、カスタム開始画面では行数・列数を指定可能(bashからの方が安定)
  • pythoonと打つと実シェルでないことを確認できる

限界

作者は、WorldTUIは信頼できるファイルシステムには程遠いとしています。既知のコマンドはそれなりに扱えるものの、新しい組み合わせでは容易に破綻し、例えばecho green >> colorsの後にcat colorsを実行しても追記行が出ないことがよくあります。

この記事の固有名詞

コメント (0)

まだコメントはありません。

コメントを書く

2000文字以内