1. 痛みの分解: ポータブル ONNX はパフォーマンスを保証するものではありません
(1) プロバイダーの選択は不透明: 同じホイールで CPU と CoreML の両方を登録できます。暗黙のデフォルトに依存すると、ラップトップと CI が静かに分岐する可能性があります。(2) 動的軸とコンパイル キャッシュ: CoreML EP は、新しい形状が出現したときにファーストヒット税を支払うことがよくあります。メトリクスでコンパイルと推論を分離しないと、オンコールはグラフ コンパイラーの代わりに DNS とコールド コンテナーを追跡します。(3) サイレント CPU フォールバック: サポートされていないサブグラフは、GPU 時間がアイドル状態に見えるときに CPU にドロップされる可能性があります。 ORT ログとバケット化されたハーネスがなければ、「CPU ペグ」のみが表示されます。(4) 二重課税: PyTorch でのトレーニングと ORT での提供には、規律あるエクスポートが必要です。opset、dynamic_axes、および量子化は、コードと同様にバージョン管理する必要があります。
2. マトリックス: CPU EP 対 CoreML EP 対 MLX 対 リモート Apple Silicon
| 軸 | CPU EP | CoreML EP | MLXスタック | リモートプール |
|---|---|---|---|---|
| 強さ | 最大限の互換性。回帰ベースライン | 多くの場合、固定された小さな CV グラフに最適です。 ANE パスが可能 | 生成ワークロードに関する強力な Apple Silicon ドキュメント | 分離;署名可能な同時実行 SLO |
| リスク | スループットの上限 | ダイナミックシェイプ、コンパイルスパイク、OPカバレッジ | 書き換えまたは二重メンテナンス | ネットワークホップと運用のオーバーヘッド |
| こんな方に最適 | ゲートとゴールデン出力 | バケット化された生産推論 | mlx-lm スタイルのサービス | 共有キューと年中無休のジョブ |
3. 5 ステップのランブック: ロード可能なモデルから説明可能なレイテンシーまで
- トリプルを固定する: ONNX オプセット、onnxruntime ビルド、macOS マイナー。アップグレードはコンパイラのアップグレードと同様に扱います。
- 明示的なプロバイダー:
providers=["CoreMLExecutionProvider", "CPUExecutionProvider"]を指定し、起動時にget_providers()をログへ出す。 - バケツの形状: 実際に出荷する解像度とシーケンスの長さを列挙します。各バケツを冷やしたり温めたりします。
- 動的ポリシー: 任意の長さが必要な場合は、コンパイル時間を節約し、パディング バケット、マルチエクスポート バリアント、または MLX を検討してください。
- スプリットトリガー: フォールバック率またはテール レイテンシーがしきい値を超えると、サブグラフのホットスポットをキャプチャし、ピークをリモート ノードに移動します。
4. 引用可能な閾値 (測定値に置き換えてください)
再測定する必要があるディスカッショングレードの数値:
- CoreML EP による定常状態のスループットが少なくとも18%固定バケットの CPU EP を上回っており、GPU/ANE 時間は以下のままです15%、 容疑者フォールバックまたはキャッシュミススケールアウトする前。
- コールドの最初の推論 p95 がウォーム p95 を超える場合、6.5倍また、この製品はバケット化されたウォームアップを許容できないため、CoreML EP がプライマリ パスになる可能性は低いです。
- 統合メモリの負荷がこれ以上上昇した場合、24%制限付き同時実行での 30 分間の負荷テスト中にベースラインを超えた場合は、キューを次の場所に移動します。専用リモートAppleシリコンホスト。
5. 動的形状: コンパイルと推論を分離する
バケットごとの最初のヒットとバケットごとの定常状態の 2 つのヒストグラムを公開します。この分割がなければ、SLO の議論は逸話に終わってしまいます。これを Core ML と MLX の製品記事と併せて読むと、議論を「どのブランド」から「どの入力契約」に置き換えることができます。解像度、バッチ、量子化、またはコンテキストの長さが変化すると、スタックの勝者が移動する可能性があります。
| 症状 | 仮説 | アクション |
|---|---|---|
| 一部のバッチのみが失敗する | サポートされていない形状またはオプションです | 最小限の ONNX 再現。マルチエクスポートバケット |
| 最初の通話が非常に遅い | CoreML コンパイル キャッシュ | ウォームアップジョブ。バケットを受け入れる |
| CPU ペグ、GPU アイドル | サイレントフォールバック | ORT の詳細ログ。サブグラフプロファイリング |
6. MLX またはリモート Mac プールに切り替えるタイミング
| トリガー | おすすめ |
|---|---|
| 主要なワークロードは、mlx-lm または Ollama で提供される LLM です | エンジンの比較と Ollama+MLX の受け入れに関する記事を読んでください。同じグラフに対して ORT と MLX を二重チューニングすることは避けてください。 |
| ラップトップは統合メモリを IDE、ブラウザ、通話と共有します | バッチ キューをリモート ノードに移動します。トポロジについては、SSH 対 VNC ガイドを使用してください。 |
| オペレーターの補償は 2 週間以内に終了できません | Mac 側の前処理のみを受け入れます。負荷の高いコンピューティングをプールにプッシュするか、エクスポートを変更します。 |
7. よくある質問
CoreML EP は常に高速ですか?いいえ、修正された小さなグラフが勝つことがよくあります。大きな GEMM や乱雑なダイナミクスはそうでない場合があります。
ORT を毎晩追跡する必要がありますか?修正を証明する目的のみ。顧客向けの SLO 用のピンのリリース。
これは PyTorch MPS とどのように関係しますか?適切な場合は、トーチ上でトレーニングと反復を続けます。エクスポート ゲートを通過した後、より小さいサービング バイナリに対して ORT を使用します。 MPS チェックリストを参照してください。
8. ケーススタディ: スピードバッジではなく配送契約としての ONNX
2026 年、Apple Silicon Mac は異種ユニファイド メモリ プラットフォームのように動作します。一方には MLX とメディア エンジン、もう一方にはクロスプラットフォーム ONNX アセットが含まれます。 ORT の値はバージョン管理されたバイナリコントラクトOS ビルド間でロードできます。費用というのは、各 EP はログとバケット化されたハーネスを使用して観察する必要があります、成功したエクスポート ダイアログからは想定されません。
健全なエンジニアリングでは、ORT+CoreML を次のように扱います。バケットエッジ推論、MLXとしてApple パスの生成サービング、およびリモート プールは 共有耐久容量 として機能します。部族の知識ではなく、README と CI で境界を文書化します。
組織はリモート Mac をレンタルして、すべてのラップトップを夜間のバッチ ファームに変えることなく、署名可能な Apple Silicon 環境 を取得します。運用上の利点は、再現可能なバケット、ピン留めされた ORT ビルド、およびアタッチ可能なレイテンシー ヒストグラムです。
メタル スループットと ANE 常駐性が重要ですが、それはどの EP が実際に実行され、どのシェイプがコンパイルされたかを証明した後でのみです。それまでは、ピーク TFLOPS について議論するのは時期尚早の最適化です。
最後に、ONNX ランタイムはランタイムであり、魔法の杖ではありません。プロバイダー ログ、opset メタデータ、バケット化された p95、およびコンパイル対推論の分割を出荷すると、MLX またはリモート拡張について話し合う権利が得られます。
9。可観測性: 7 タプルの実験カード
onnxruntime バージョン、ONNX opset、プロバイダーの順序、入力バケット、コールドおよびウォーム p95、ピークのユニファイド メモリ、および CPU フォールバックが検出されたかどうかを記録します。外部レポートには、単一の平均ではなく、バケット遅延の分散を含める必要があります。
| シグナル | 最初に確認 | 緩和 |
|---|---|---|
| 1x 近くのスピードアップ | アクティブ EP。フォールバック | ログ;オペの交換。バケット |
| テールスパイク | 新しい形状のコンパイル。 GC | ウォームアップ;固定バケット。セッションプール |
| スレッドリグレッション | ORT 内/内部スレッド | 調整オプション。ホットパス |
10をシリアル化します。セッション オプションとグラフ最適化のデフォルト
SessionOptions グラフ最適化レベルとスレッド数は、テール レイテンシーを大幅に変更します。デフォルトでは、「本番末尾」よりも「最初の成功」が優先されます。ハーネスの下でグラフの最適化レベルと運用内スレッドの組み合わせをスキャンし、勝者をイメージに焼き付けて、サービスごとの 1 回限りのフラグを回避します。マルチインスタンス ホストの場合は、インスタンスがコンパイル キャッシュ ディレクトリを共有しているかどうかを確認します。ロック競合は、不安定で遅いポッドを装っている可能性があります。
11. torch.onnx.export はワンクリック ボタンではありません
CI はエクスポート、ORT ロード、および最小限のゴールデン推論を実行する必要があります。制御フローまたはカスタム操作を含むモデルでは、サブグラフの分割が必要になる場合があります。ORT の安定したサブグラフ、CPU マイクロサービスまたはリモート RPC 上の不安定なカーネルです。トレーニング数値とトレーニング後の量子化台帳を分離しておきます。トレーニング損失曲線では量子化ドリフトを説明しません。
12.クロージャ: ラップトップはコントラクトを検証し、プールは約束を保持します
(1) 現在のアプローチの限界: ラップトップ上で長時間実行されるマルチセッション ORT+CoreML は、IDE、ブラウザ、および呼び出しでユニファイド メモリと競合します。動的コンパイル パスにより、厳密な上限 SLO が困難になります。
(2) リモート Apple Silicon が役立つ理由: 専用ノードは、メタルとユニファイド メモリの利点を維持しながら、熱とメモリを分離します。同じバケット ハーネスを変更せずに移動します。
(3) MACGPU フィット: チームメイトのラップトップを借りる代わりに、バッチ推論用にリモート Mac の容量を低摩擦で試用したい場合は、MACGPU がレンタル可能なノードとパブリック ヘルプ エントリ ポイントを提供します。以下の CTA は、ログインなしのプランを示しています。
(4) 最終ゲート: プロバイダーのログ、バケット化された p95、およびコンパイル分割がアタッチされるまで、外部に対してスループットを約束しません。
13。プロファイリング分野: メタルカウンターと ORT ログ
アクティビティ モニターとインストゥルメントは便利ですが、どのノードがどの EP で実行されたかを示す ORT の詳細ログを置き換えるものではありません。一般的な障害モードは、サポートされていない単一の op がフュージョンをブロックしたため、グラフが CPU 上で GEMM の多い領域をサイレント実行したときに、メタル占有が追跡されることです。ペアonnxruntime関心のあるテンソル ランクをスイープする短い合成バッチを使用してロギングします。ホスト間で数値が一致しない場合は、ホイール ハッシュ、macOS のマイナー バージョン、Rosetta が Python インタープリターに関与しているかどうかを比較します。 Apple Silicon のパフォーマンスは、偶発的な x86 Python チェーンの影響を受けやすくなります。 arm64 検証をトレーニング ストーリーだけでなく、推論 SLO の一部として扱います。
14. 量子化と数値: CoreML EP では INT8 は無料ではありません
トレーニング後の量子化により重みを縮小できますが、精度と EP カバレッジは相互作用します。一部の INT8 パターンは CoreML EP で正常にコンパイルされます。他のものは、スタブを強制的にデカントするか、CPU にフォールバックするサブグラフを拡張します。単一の検証分割でトップ 1 の精度だけでなく、各バケットの FP32 ゴールデン テンソルに対するレイヤーごとのエラー バジェットを文書化します。サービスで FP16 アクティベーションと INT8 重みが混在している場合は、CI がサイレント グラフ変更を拒否できるように、それをエクスポート メタデータで明示的にキャプチャします。 macOS セキュリティ アップデート後に数値のドリフトが発生した場合は、モデルのせいにする前にゴールデン ハーネスを再実行します。コンパイラと BNNS リビジョンはマージンで動作を移動します。
15. 統合メモリ上のマルチセッションの公平性とキューイング
2 つの ORT セッションがラップトップを共有する場合、公平性は OS だけでは保証されません。セッションごとのメモリ上限と制限されたワーク キューをアプリケーション層で確立します。単一セッションの最高スループットではなく、同時セッション下で p99 を測定します。統合メモリの競合は、平均が移動する前にテールの増加として現れます。チームメイトがビデオ通話を実行している間に予測可能な遅延が必要な場合は、リモート Apple Silicon を緊急のオーバーフローではなく、アーキテクチャの一部として扱います。同時実行クラス (インタラクティブ、バッチ、CI) を文書化し、それらをホストにマッピングして、オンコールで爆発範囲を推論できるようにします。
16. 既存のサイトガイドへのリンク
Core ML ツールチェーンの比較については、Core ML と MLX の実稼働記事を使用してください。コンテナ化されたローカル推論のオーバーヘッドについては、Docker Colima LLM ガイドを参照してください。荷物を机から移動するには、SSH と VNC のリモート Mac 選択ガイドに従ってください。ホイール ダイジェスト、プロバイダーの順序、バケット テーブルをリストした 1 つのマークダウン付録をリポジトリに保存しておくと、新入社員が四半期ごとに同じ ORT フットガンを再発見することがなくなります。法律や調達によってクラウド GPU がブロックされている場合でも、リモート Mac プールは資本を購入せずに Apple Silicon の容量を追加する実用的な方法であり続けます。コンパイル パスが制御されると、経済性は依然として 1 ドルあたり測定可能な 95 ペソに左右されます。すべての macOS マイナー アップグレードを推論スタックのセムバー バンプとして扱い、ロールアウト前に完全なバケット マトリックスを再実行します。