越境で Mac mini M4 をレンタルし ONNX Runtime CoreML EP で批推論するときのセッション本数・スレッド・バッチ B・Wq/Wcを表にまとめます(固定加速比は扱いません)。枠組み比較は MPS/MLX 稿、ネイティブは Core ML mlmodelc 稿へ。料金・購入は閲覧のみログイン不要です。
運用上のつまずき(リモート M4)
- セッション乱立:
InferenceSessionごとに重み・EP キャッシュがユニファイドメモリを食い、ANE/NVMe と競合しやすい。 - スレッド二重予約:ORT intra、OpenMP、Accelerate が P コアを取り合い尾が伸びる。
- 単一タイムアウト:待ちと計算を混ぜると再試行がキャッシュを壊し、原因切り分けが曖昧になる。
意思決定マトリクス
行はガードレール。B/セッションはメモリとディスクで再スイープ。TCO 稿で費用感を裏取り。
| 形 | セッション | intra/inter | B | NVMe | Wq/Wc | 課金目安 |
|---|---|---|---|---|---|---|
| 常時 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 系統を意識。
- 過負荷は B→Wc→ノード。無暗な再試行は避ける。
ランブックと信号
- ORT 固定+
pip freeze。 - ウォーム1、p50/p95。
- B 二分で曲点手前。
- Wq/Wc 別アラート。
- リージョン替え再ベンチ。
信号:常駐バイトと「バッチ時間÷B」の壁時刻を最低限エクスポート。
公開ページでリージョンとパッケージを選ぶ
まとめ
ORT CoreML EP:セッション再利用・スレッド・B・Wq/Wc。CPU EP は残して両経路を測る。環境変数+SessionOptions 固定、ORT/リージョン変更で再計測。slug:2026-remote-mac-m4-onnxruntime-coreml-batch-inference-matrix.html