mizorewww

Laya-CoreML

Laya の重みを Core ML に変換し、Apple の Neural Engine でも実行できます。推論に PyTorch・Transformers・MLX は不要。独立した移植版であり、Convai Innovations や Apple の公式リリースではありません。

2026-10-05 時点で確認

実際のローカルモデルの確率で Snake をプレイする Laya Core ML

バージョン 0.2.0 は、適用可能なプロンプトと結果の修正をアップストリーム 4aa6761(ソースバージョン 0.3.23)を通じて同期します。Core ML と ANE の両ランタイムが、カスタムの noul 表示ラベル({"false": "no", "true": "yes"})を受け付け、質問ごとのエラーで質問を検証し、Unicode の構造化命令を保持します。長い会話リストは最新のトークンを保持し、文字列とオブジェクトは先頭を保持します。usage は状態の切り詰めと、該当する場合は折りたたまれた選択肢を報告します。answer_confidence は最も高い回答確率であり、既存の confidence の意味は変わりません。どちらのフィールドも較正の正確さを保証するものではありません。以下に記述するチェックポイントの温度クランプはこのリリースに含まれます。エクスポートされたグラフの容量制限は、黙って切り詰めるのではなく、依然としてエラーを送出します。

メンテナンスは、これらのランタイムに適用可能なアップストリーム Laya の修正に追随します。新しいランタイム機能やバックエンド固有の最適化提案には、アップストリームに整合した実装と検証が必要です。issue をクローズしても、報告された挙動が修正されたことにはなりません。

Apple Silicon 上のオープンウェイトな型付き意思決定。Core ML、Neural Engine、生成トークンはゼロ。

PyPI · Hugging Face の重み · 中文

本物の Laya モデルが Snake をローカルでプレイし、確率・スコア・長さ・レイテンシ・安全介入が可視化されます。GIF は記録された Core ML の実行を 1× 速度で再生したものです。ゲームは明示的なプランナー特徴量と、可視化されたサイクル安全層を使います。

完全なアクティブ Snake ループは、上限なしの 600 ステップのエピソード 3 本にわたり 49.1〜50.0 意思決定/秒を持続し、死亡ゼロ、安全介入 2 回でした。ゲームループのタイミングとペース制御レートの限界にはレンダリングのシリアライズが含まれ、端末の描画は除かれます。

短い多言語の意思決定 1 回:M3 Max で ANE FP16 により 4.98 ms P50 / 5.31 ms P95。 同じ実験で、コンパイル済み MLX FP16 より 意思決定あたりのシステム全体エネルギーが 2.78 倍良好と測定されました。別途検証された W8 パレット版は 4.88 ms、エネルギー改善 3.19 倍に達しました。これらは単一質問の結果であり、Snake のフレーム時間全体ではありません。要求された 10 倍の改善は達成されていません。

デモを実行する

Apple Silicon · macOS 15+ · Python 3.11〜3.13。

pip install 'laya-coreml[demo]'
hf download aac6fef/laya-multilingual-coreml-ane --local-dir models/snake
laya-coreml-snake --model ./models/snake

一度ダウンロードすれば、その後はオフラインでプレイできます。推論に PyTorch、Transformers、MLX は不要です。端末には 104 列 × 35 行が必要です。Space で一時停止、↑/↓ で速度変更、R でリセット、Q で終了します。初回の Core ML 初期化には数十秒かかることがあります。

操作方法・録画・動画エクスポート · 実測された安定した意思決定レート · 共有可能な動画と録画の出所

意思決定を求める

pip install laya-coreml
import laya_coreml as laya

agent = laya.load("aac6fef/laya-multilingual-coreml-ane")
result = agent.predict(
    "The customer requests a refund of a duplicate payment.",
    {
        "refund": {
            "type": "noul",
            "instructions": "Does the customer request a refund?",
        }
    },
)
print(result["answers"]["refund"])

Laya は choice、順序尺度の score、真偽の noul の各質問に対して確率を返します。自己回帰的なデコードや、パースすべき生成 JSON はありません。Hub のモデルは初期化前にダウンロードされ、以降の予測はローカルにとどまります。既存のキャッシュを必須にするには local_files_only=True を渡すか、ローカルディレクトリをロードしてください。

アップストリーム v0.3.5 に従い、フィット済みの較正温度は使用前に [0.5, 5.0] にクランプされます。同梱の choice:11+ バケットは 0.1006 で、そのままではロジットを約 10 倍鋭くし、コイントスをほぼ確実と報告してしまいます。チェックポイントの生の値は agent.temperature_raw と agent.temperature_by_options_raw として引き続き利用でき、ロード時にクランプされた各バケットを RuntimeWarning が名指しします。

ANE バンドルには 合計 96 トークンの上限があり、質問・選択肢・状態を含みます。それより長いリクエストは容量エラーを送出します。汎用の 1024 トークンモデルには aac6fef/laya-multilingual-coreml を使ってください。API 全体・モデル選択・オフライン利用。

M3 Max での実測

40 コア GPU、128 GiB、macOS 27.2。91 トークンの質問 1 件を 96 にパディングし、プロンプト準備・トークン化・配列・同期推論・較正・フォーマットを含みます。ロードとウォームアップは除きます。MLX は compile、プレフィックスキャッシュ、シェイプバケットを有効にします。実装ごとに 20 秒のブロックを交互に 6 回実行し、65,598 回の安定した呼び出しが得られました。

指標 コンパイル済み MLX FP16 Core ML ANE FP16 Core ML ANE W8
P50 / P95 6.94 / 7.39 ms 4.98 / 5.31 ms 4.88 / 5.23 ms
平均システム電力推定 61.39 W 30.75 W 27.39 W
システムエネルギー / 意思決定 0.4288 J 0.1540 J 0.1344 J
速度向上 1× 1.39× 1.42×
システムエネルギー向上 1× 2.78× 3.19×

エネルギーは直接の SMC PSTR センサー読み取りを使用し、生サンプルと明示的な異常値除外を伴います。これはセンサーとバックグラウンド負荷の不確かさを含む推定です。速度向上 × 平均電力比 = エネルギー向上であり、エネルギーにさらに速度を掛けると時間を二重計上することになります。W8 版は重みを圧縮しつつ FP16 演算を維持します。これは近似であり、パッケージサイズの削減は速度比ではありません。

速度・エネルギー・ハードウェアの証拠 · 生の計測値。

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

Hugging Face バンドル 既定のエンジン 容量 用途
Laya 421M CPU + GPU 512 tokens 元の英語モデル
Multilingual 322M CPU + GPU 1024 tokens 汎用の多言語意思決定
Typed Decisions 421M CPU + GPU 1024 tokens 元の専用チェックポイント
Snake GPU CPU + GPU B3 / L64 コンパクトな 3 つのゲーム質問をバッチ化
Multilingual ANE CPU + ANE B1 / L96 短い意思決定、FP16
Multilingual ANE W8 CPU + ANE B1 / L96 任意の近似的パレット圧縮

すべてのバンドルには、tokenizer/設定、モデルカード、出所、チェックサム、パッケージング時の検証が含まれます。ANE バンドルにはさらに、必要となる元のホスト埋め込み/アクションのテンソルがそのまま含まれます。元の学習チェックアウトは不要です。

移植の忠実性と限界

3 つの汎用 FP16 チェックポイントは、189/189 の検証質問でアップストリームの選択回答と一致します。それぞれ 100 回の繰り返し呼び出しを通過します。ANE FP16 L96 は 59/59 の適合質問を通過し、較正確率の最大ドリフトは 0.002925 です。W8 は同じサブセットを、変更されていない 0.02 のゲートの下でドリフト 0.014393 で通過します。6 ビットと 4 ビットの実験はそのゲートを通過できず、公開された重みではありません。これらは変換忠実性のフィクスチャであり、一般的なタスク精度の証明ではありません。

別途エクスポートされた FP16 ANE L1024 グラフは完全な 63/63 のフィクスチャを通過しますが、実際の 1024 トークンリクエストはその直列スクリーニングで約 91.7 ms かかります。短い ANE の結果は長文脈の優位性を示すものではありません。600 ステップのペア Snake チェックは 600/600 のアクションで一致し、死亡ゼロ、シールド介入ゼロでした。現在の ANE アダプタの 3 回の逐次呼び出しは、コンパイル済み MLX に対する一貫したゲーム全体の高速化を示すものではありません。

通常の SDPA Core ML エクスポートと ANE グラフは別の実装です。通常のエクスポートは、制限なしの RangeDim GPU シェイプがローカルの忠実性チェックに失敗したため、既定で CPU+GPU になります。そのデバイス設定を変えるだけでは ANE の結果は再現しません。ANE の書き直しは BC1L アクティベーション、1×1 射影、ヘッド単位のアテンションを使用し、その計画と別途の Instruments トレースが Neural Engine での処理を裏付けます。入出力の境界は依然として CPU が担います。

ドキュメントと再現性

自分でエクスポートするには、laya-coreml[convert] をインストールして laya-coreml convert laya-multilingual models/custom を実行します。ANE 研究用の変換・圧縮・ベンチマークのスクリプトは Git チェックアウト内にあります。推論ホイールには可搬なランタイムと任意のターミナルデモが含まれます。

Apache-2.0。Laya の独立した移植であり、Convai Innovations とコントリビューターによるもので、MLX の姉妹プロジェクトを土台にしています。Convai Innovations または Apple の公式リリースではありません。NOTICE を参照してください。