mizorewww/laya-mlx

Native MLX runtime for Laya typed decision models — 7–14 ms short decisions on M3 Max. No text generation, PyTorch, or cloud API.

Laya‑MLX – Apple Silicon 上での高速、型付き意思決定推論

何であるか – macOS Apple Silicon (Mシリーズ) GPU上で、Laya 系列の意思決定言語モデルを完全にローカルで実行できるPythonパッケージです。元の Convai Innovations チェックポイントを MLX(AppleのMetal加速Tensorライブラリ)に移植することで、PyTorch、🤗 Transformers、クラウド呼び出しを一切使わず、短い質問1件に対して15ms未満の遅延を実現します。


コアコンセプト

コンセプト Laya‑MLXの実装方法
型付き意思決定 自由なテキスト生成ではなく、1回のフォワードパスで構造化された回答(選択肢、スコア、バイナリ「noul」)を返します。これにより、トークン単位のデコードを回避し、決定論的で低遅延の出力を得られます。
双方向エンコーダ 入力(状態+質問)はModernBERT‑largeまたはmmBERT‑baseバックボーンでエンコードされ、専用ヘッドが要求された型の確率を生成します。
ローカル、ランタイム依存なし すべての推論はMLX内で実行されます。トークン化にはHugging FaceのRustトークナイザーがwheelにコンパイル済みです。PyTorch/Transformersのバイナリは不要です。
Apple‑silicon最適化 オプションの compile=True、プレフィックスキャッシュ、パディングテクニックにより、M3 Maxで約6%の速度向上が得られます。また、GPU用に事前に変換されたFP16チェックポイントも同梱されています。

クイックスタート(30秒)

pip install laya-mlx            # コアライブラリ
pip install 'laya-mlx[demo]'    # オプションのデモユーティリティ
import laya_mlx as laya
agent = laya.load("aac6fef/laya-mlx")   # 最初の使用時にFP16チェックポイントをダウンロード
result = agent.predict(
    "I was billed twice. Please refund the duplicate.",
    {
        "department": {
            "type": "choice",
            "instructions": "Who should handle this?",
            "criteria": ["billing", "technical", "sales"]
        }
    },
)
print(result["answers"]["department"])   # → "billing"

macOS 14+、Python 3.11+、およびM1–M3のすべてのApple‑silicon GPUで動作。最初の呼び出しでモデルをダウンロードし、以降は完全にオフラインで動作します。


利用可能なチェックポイント

モデルID(ロード) エンコーダ パラメータ数 コンテキスト 言語
aac6fef/laya-mlx ModernBERT‑large 421 M 512 英語
aac6fef/laya-multilingual-mlx mmBERT‑base 322 M 1 024 多言語
aac6fef/laya-typed-decisions-mlx ModernBERT‑large 421 M 1 024 英語(型付き意思決定ワークフロー)

上記3つはすべて、上流のConvai Innovations重みの正確なFP16変換であり、Hugging Faceにホストされています。また、laya.loadに元のHub ID(convaiinnovations/layaなど)を指定することも可能です。ライブラリが自動でダウンロードし、変換します。


パフォーマンス(M3 Max、FP16)

メトリクス 英語(Laya 421M) 多言語(Laya‑multilingual 322M)
1件の短い質問の中央遅延 13.4 ms 7.4 ms
95百分位遅延 13.9 ms 7.8 ms
50件バッチ(バッチサイズ64)のスループット 146 q/s 395 q/s
1リクエストあたりのピークGPUメモリ 944 MiB 688 MiB
最適化済み laya‑snake --optimize --max‑speed 75.4 move/s(eagerより約6.5%高速)

数値にはトークン化、テンソル準備、推論、キャリブレーション、結果フォーマットが含まれます。モデルロードは除外されています。


主要API表面

agent = laya.load(
    checkpoint,          # HFリポジトリIDまたはローカルパス
    dtype="float16",   # または "float32", "bfloat16"
    batch_size=16,       # 1回のフォワードパスあたりの最大質問数
    device="gpu",       # "cpu"も利用可能(大幅に遅い)
    compile=False,       # 速度向上のためMLXコンパイルを有効化
    cache_prompts=False, # 再利用のためにトークン化されたプロンプトを保持
)

# 推論 – `system_one`はエイリアス
answers = agent.predict(state, questions)

*stateは単純な文字列、JSON辞書、または過去のメッセージのリストが可能です。questionsは各エントリが希望する回答型(choice, score, noul)を記述する辞書です。戻り値には以下が含まれます:

  • answers(構造化された結果)
  • action.act_probability(ヘッドの生確率)
  • トークン使用統計
  • 上流モデルと同様に小数第4位まで丸められます。*

ルーター補助

言語固有のチェックポイントを自動選択する必要があるアプリケーション向け:

router = laya.Router(dtype="float16", max_loaded=2)
out = router.predict(state, triage_questions())
print(out["routing"])   # 例:"multilingual"

ルーターは最大max_loaded個のモデルを常駐させることができ、Router(preload=True)で事前にロードできます。


コマンドラインユーティリティ

コマンド 目的
laya-mlx predict … JSONファイルまたはインライン文字列からの単一推論を実行。
laya-mlx convert … Hugging FaceチェックポイントをMLX互換ディレクトリ(safetensors + config)に変換。
laya-snake モデルが各動きに呼び出される、インタラクティブなターミナルデモ(クラシックなSnakeゲーム)。--optimizeでコンパイル済み高速パスを使用。

すべてのCLIはlaya.loadで使用されるのと同じ--model引数を受け入れます。


開発とテスト

  • 依存関係:プロジェクトは再現可能な環境にuvを使用しています。uv sync --extra devでテスト、ベンチマーク、リファレンスの追加を取得します。
  • テスト:ユニットテストは小さなランダムモデル上でMLX実装と元のTransformersヘッドを比較。フルチェックポイント検証ではトークン化、キャリブレーション済み確率、決定論的再現、メモリ成長をチェックします。
  • ベンチマーク:benchmarks/runは遅延/スループットを測定。結果はbenchmarks/resultsに保存され、BENCHMARKS.mdで要約されます。
  • 研究:docs/フォルダにはパフォーマンスボトルネックの詳細レポートと、10倍高速化のアイデア(数学的、工学的、実装レベル)が含まれます。スクリプトはexperiments/にあります。

ライセンスとクレジット

  • コード – Apache‑2.0(LICENSEを参照)。
  • 重み – 元のLaya重みは© Convai Innovations。上記のHugging Faceリポジトリ経由で同じライセンスで再配布されています。
  • 移植 – MLX再実装と周辺ユーティリティはmizorewwwが作成し、上流のNandhaKishorM/layaリポジトリ(MITスタイルのクレジットはNOTICEに記載)の一部を改変しています。

だれが使うべきか?

  • プロダクトチーム:決定論的で低遅延のルーティングや分類をデバイス上で必要とする(例:チケットトライアージ、緊急度スコアリング、バイナリポリシー確認)。
  • 開発者:クラウドへのデータ送信を避けたいmacOS専用AIアシスタントやエッジサービスを開発する。
  • 研究者:Apple GPU上でMLXをPyTorch/Transformersと比較し、さらなる高速化技術を探索したい。

TL;DR – Laya‑MLXはApple Silicon上でLaya意思決定モデルの即時実行可能な高性能推論ライブラリを提供し、クリーンなPython API、ターミナルSnakeデモ、変換・ベンチマーク・モデルカード公開のためのフルスタックツールを備えています。

これを取り上げた記事

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト