jrz97619761/test-model-thing
A small proof-of-concept language model (not an LLM) that aims to incorporate latent-space prediction, internal state using recurrent trace units, and byte-by-byte output, built with MLX.
Test‑Model‑Thing (TMT) – 小さな概念実証言語モデル
概要
- MLX で構築された研究用言語モデル(約450万パラメータ)。MLXはApple Siliconで効率的に動作し、Linux(CUDA/CPU)でも動作するライブラリです。これは大規模なLLMではなく、いくつかのアイデアを探求するための小さな実験的モデルです:
- 潜在空間予測 – モデルは次のトークンだけでなく、隠れ表現を予測しようとします。
- リカレント・トレース・ユニット(RTU) – 時間ステップをまたいで情報を運ぶ内部状態で、通常のTransformerコンテキストを超えたメモリをモデルに与えます。
- バイトレベルI/O – 入力と出力は生のバイト列で、任意の文字シーケンスを生成できます(そのため、たまにスペルミスが発生します)。
- 連続データストリーミング – 固定サイズのバッチではなく、終わりのないデータストリームを処理するように設計されたアーキテクチャです。
- テスト時トレーニング – 推論中も学習を続けることができます。
なぜ重要か
- 高度なメカニズム(潜在予測、リカレント状態)が、ラップトップで動作する小さなネットワークで実装可能であることを示しています。
- 大規模なGPUクラスタを必要とせずに、バイトレベルモデル、オンライン学習、カスタムメモリモジュールを試したい研究者のための遊び場を提供します。
始め方
- リポジトリをクローンし、Python仮想環境を作成します。
- MLXをインストール:
# macOS(Apple Silicon) pip install mlx # Linux(GPUあり) pip install "mlx[cuda]" # Linux(GPUなし) pip install "mlx[cpu]" - トレーニング(またはトレーニングの続行):
python main.py <データセットへのパス> train- スクリプトは自動的に重みを保存し、
Ctrl‑Cで中断できます。
- スクリプトは自動的に重みを保存し、
- チャット / 推論:
python main.py <重みへのパス> chat- オプションには
--ce-only(クロスエントロピー損失のみ)、--no-save、--frozen(重みを更新せずに実行)があります。
- オプションには
- CoLA言語受容性タスクでのベンチマーク:
python benchmark.py <重みへのパス> <エポック数> <スライス>
データセット
- 著者はデモモデルを小さなWikipediaダンプ(
simplewiki-20260801-pages-articles.xml.bz2)でトレーニングしました。任意のテキストデータセットを使用できます。コードは生ファイルへのパスを期待します。
現在の状態
- モデルは概念実証です:450万パラメータ、512次元の隠れサイズ、16層、数時間のトレーニングのみ。一貫性のあるバイトストリームを生成し、括弧や引用符を閉じることができ、CoLAでは控えめなパフォーマンスを示します(GPT‑1の45.4スコアには遠く及びません)。
- 事前トレーニング済みの重みは同梱されていません(GitHubのファイルサイズ制限のため)。ユーザーは自分でモデルをトレーニングするか、他の場所から重みを入手する必要があります。
ロードマップ / 機会
- パラメータ数とトレーニング時間をスケールアップして、言語品質を向上させる。
- バイトレベルデコーダーをトークナイザーに置き換えて、よりクリーンなテキストを生成する。
- より大きなデータセットやドメイン固有のコーパスを探索する。
- RTU実装への改善を貢献するか、他のメモリメカニズムを追加する。
- コードをWindowsネイティブ環境に移植する(現在はWSLのみ動作)。
誰に役立つか
- 言語モデルの内部構造を学んでいる学生や愛好家。
- オンライン学習、潜在空間目的、メモリ拡張トランスフォーマーに興味のある研究者。
- GPUなしでMacBookで動作する小さな自己完結型モデルを必要とする開発者。
リンク
- YouTubeデモビデオ
- アーキテクチャスケッチ(Freeform図)はリポジトリに含まれています。
上記の情報はすべてリポジトリのREADMEから直接取得しています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト