2026年 跨区域リモート Mac M4:ONNX Runtime CoreML 実行プロバイダの批推論セッション、スレッド数、ユニファイドメモリとキュー・タイムアウト意思決定マトリクス

2026年4月14日 · 約4分 · MacCompute テクニカルチーム · ガイド

越境で Mac mini M4 をレンタルし ONNX Runtime CoreML EP で批推論するときのセッション本数・スレッド・バッチ BWqWcを表にまとめます(固定加速比は扱いません)。枠組み比較は MPS/MLX 稿、ネイティブは Core ML mlmodelc 稿へ。料金購入は閲覧のみログイン不要です。

運用上のつまずき(リモート M4)

  • セッション乱立InferenceSession ごとに重み・EP キャッシュがユニファイドメモリを食い、ANE/NVMe と競合しやすい。
  • スレッド二重予約:ORT intra、OpenMP、Accelerate が P コアを取り合い尾が伸びる。
  • 単一タイムアウト:待ちと計算を混ぜると再試行がキャッシュを壊し、原因切り分けが曖昧になる。

意思決定マトリクス

行はガードレール。B/セッションはメモリとディスクで再スイープ。TCO 稿で費用感を裏取り。

セッション intra/inter B NVMe WqWc 課金目安
常時 API 16G 主1/24G 1〜2 厳 2〜4/1 p95 手前 先読1、並列全コピー避 短/p95+
CI 夜間 ハッシュ再利用 inter1 起点 中庸+行列 ローカル置 緊/測定時のみ延
共有 系統セマフォ 本数抑 小+入場 prefix 分 二段計測・降段 中〜月

性能は保証しません。 opset・精度・ANE/GPU 振り分けと ORT マイナーで変動します。

実行可能な環境変数と併行チェックリスト

CI/entrypoint に貼り、計測で上げ下げ。既定は保守的。

export OMP_NUM_THREADS="${OMP_NUM_THREADS:-2}"
export OMP_WAIT_POLICY="${OMP_WAIT_POLICY:-PASSIVE}"
export VECLIB_MAXIMUM_THREADS="${VECLIB_MAXIMUM_THREADS:-2}"
export ORT_LOG_SEVERITY_LEVEL="${ORT_LOG_SEVERITY_LEVEL:-3}"

Python の SessionOptions でスレッドを明示します。

import onnxruntime as ort
so = ort.SessionOptions()
so.intra_op_num_threads = 2
so.inter_op_num_threads = 1
# providers=[('CoreMLExecutionProvider', {...}), 'CPUExecutionProvider']

EP 変更時は解決プロバイダ文字列をログ化。

  • セッション抑制→B
  • プロセスあたり OpenMP は 1 系統を意識。
  • 過負荷は BWc→ノード。無暗な再試行は避ける。

ランブックと信号

  1. ORT 固定+pip freeze
  2. ウォーム1、p50/p95。
  3. B 二分で曲点手前。
  4. WqWc 別アラート。
  5. リージョン替え再ベンチ。

信号:常駐バイトと「バッチ時間÷B」の壁時刻を最低限エクスポート。

公開ページでリージョンとパッケージを選ぶ

データ近傍に置く。シンガポール日本韓国香港米国西部購入

まとめ

ORT CoreML EP:セッション再利用・スレッド・BWqWc。CPU EP は残して両経路を測る。環境変数+SessionOptions 固定、ORT/リージョン変更で再計測。slug2026-remote-mac-m4-onnxruntime-coreml-batch-inference-matrix.html

リージョンとパッケージを選ぶ