インストール、ダウンロード、型付き意思決定
Laya-CoreML は Apple Silicon 上で、macOS 15+ と Python 3.11〜3.13 で動作します。ローカルのリリースチェックは M3 Max / macOS 27.2 を使用しています。古い macOS リリースと iOS へのデプロイはここではテストされていません。エクスポートされる ML Program は macOS 15 / iOS 18 を対象とします。
python -m pip install laya-coreml
# Terminal demo and recording renderer:
python -m pip install 'laya-coreml[demo]'
推論には Core ML Tools、NumPy、Tokenizers、Safetensors、Hugging Face Hub がインストールされます。PyTorch、Transformers、MLX は不要です。任意の [convert] 追加分は、元のチェックポイントをエクスポートするための PyTorch をインストールします。
モデルを選ぶ
aac6fef/ 配下の Hugging Face バンドル |
デバイスの既定 | 総入力容量 | バッチ / 選択肢 | 想定用途 |
|---|---|---|---|---|
| laya-coreml | CPU + GPU | 512 tokens | 1 / 32 | 英語 Laya、421M |
| laya-multilingual-coreml | CPU + GPU | 1024 tokens | 1 / 32 | 汎用の多言語、322M |
| laya-typed-decisions-coreml | CPU + GPU | 1024 tokens | 1 / 32 | アップストリームの typed-decisions チェックポイント |
| laya-multilingual-coreml-snake | CPU + GPU | 64 tokens | 3 / 4 | バッチ化されたコンパクトな Snake プロンプト |
| laya-multilingual-coreml-ane | CPU + ANE | 96 tokens | 1 / 32 | 短い意思決定、FP16 ボディ |
| laya-multilingual-coreml-ane-w8 | CPU + ANE | 96 tokens | 1 / 32 | 近似的な W8 パレット重み、FP16 演算 |
ANE パッケージには、独自のホスト埋め込み/アクションの重みと、変更されていない Core ML ボディが含まれます。元のチェックポイントディレクトリは不要です。96 トークンの容量には、質問、選択肢の説明、特殊マーカー、状態が含まれます。これらの短いエクスポートは、収まらないリクエストを拒否します。汎用モデルは、チェックポイントの完全なコンテキスト上限で、アップストリームの状態切り詰めを保持します。選択肢の説明も元の question-prefix 予算を使います。
Python API
import laya_coreml as laya
agent = laya.load("aac6fef/laya-multilingual-coreml")
result = agent.predict(
"The customer asks for a refund of a duplicate payment.",
{
"department": {
"type": "choice",
"instructions": "Which department should handle this request?",
"criteria": {
"billing": "Payments, invoices, refunds, and duplicate charges.",
"technical": "Broken features, errors, and product troubleshooting.",
"sales": "Pricing, upgrades, and new purchases.",
},
},
"urgency": {
"type": "score",
"instructions": "How urgent is the request?",
"criteria": ["low", "medium", "high"],
},
"refund": {
"type": "noul",
"instructions": "Does the customer request a refund?",
},
},
)
print(result["answers"])
print(result["usage"]) # output_tokens is always 0
choice は選択されたラベルと、各ラベルの確率を返します。score は期待される 0 始まりのカテゴリインデックス、その凡例、確率を返します。noul は true の確率を返します。回答には、アップストリームの confidence フィールドとアクションヘッド確率フィールドも含まれます。これらの推定は誤ることがあります。ライブラリの検証が測るのは変換の忠実性であり、アプリケーションの精度ではありません。
predict と system_one は別名です。辞書の状態は元の入力規約を使ってシリアライズされます。質問は挿入順に処理されます。ほとんどのエクスポートはバッチ 1 を使うため、複数の質問には複数回のモデル呼び出しが必要です。Snake GPU エクスポートは最大 3 つをバッチ化します。双方向エンコーダは、異なる質問間で文脈的な状態をキャッシュしません。
一度ダウンロードして、オフラインで作業する
hf download aac6fef/laya-multilingual-coreml-ane --local-dir models/ane
agent = laya.load("./models/ane", local_files_only=True)
# Or use a previously downloaded shared Hub cache:
agent = laya.load("aac6fef/laya-multilingual-coreml-ane", local_files_only=True)
リモート ID は local_files_only=True でない限り、初期化前にダウンロードされます。以降の予測はローカルの配列とファイルのみを使います。正確なリモートスナップショットを再現するには revision="<Hub commit SHA>" を渡します。リリースのコミット ID は RELEASE.md にあります。ターミナルゲームは常にローカル/キャッシュ済みの重みを使い、それらがないときはダウンロードコマンドを示して失敗します。
Hugging Face の共有キャッシュはモデルファイルをシンボリックリンクとして保存します。テストした macOS リリースでは、Core ML がそれらのリンクを一時的なコンパイル済みモデルにコピーし、重みファイルを失うことがあります。ローダーは Core ML パッケージだけを ~/.cache/laya-coreml/packages/ 配下の通常ファイルとして自動的に実体化し、その内容ハッシュを検証し、そのコピーを再利用します。このキャッシュルートを変えるには LAYA_COREML_CACHE を設定します。追加のディスク容量を使いますが、追加のモデルダウンロードは発生しません。hf download --local-dir で作成したディレクトリはすでに通常ファイルを含むため、コピーは不要です。
ローダーはパッケージ形式を認識し、既定の計算ユニットを選択します。明示的な実験には compute_units="cpu_gpu"、"cpu_ne"、"cpu"、"all" で上書きします。cpu_ne は CPU の処理と ANE の処理を許容しますが、すべての演算が ANE で実行されることを保証はしません。通常の SDPA エクスポートでこれを選んでも、そのエクスポートが専用の ANE グラフになるわけではありません。
CLI
質問の辞書を questions.json に保存して、次を実行します:
laya-coreml predict ./models/ane --offline \
--state 'The customer requests a refund.' --questions questions.json
laya-coreml predict は、ローカルディレクトリまたは Hub ID、任意の --revision、そして --compute-units を受け付けます。--offline は Hub へのアクセスを防ぎます。
ソースから変換する
通常の Core ML 経路の場合:
pip install 'laya-coreml[convert]'
laya-coreml convert laya-multilingual models/custom-multilingual
ANE 研究用のエクスポーターは、推論ホイールの外の Git チェックアウト内にあります:
git clone https://github.com/mizorewww/laya-coreml
cd laya-coreml
pip install -e '.[convert,dev,research]'
python -m experiments.ane_engineering.probe --source laya-multilingual \
--kind body --length 96 --output models/ane96
対応するワークフローについては、変換の知見、ANE エンジニアリング、Snake の操作と録画を参照してください。