2026 : location Mac M4 inter-régions — ONNX Runtime CoreML EP : sessions d’inférence batch, threads et matrice de décision sur timeouts de file (mémoire unifiée)

14 avril 2026 · ~9 min · Équipe technique MacCompute · Guide

Sur un Mac mini M4 loué (Singapour, Tokyo, Séoul, Hong Kong, US Ouest), ONNX Runtime + CoreML EP sert souvent au scoring par lots. Matrice : sessions chaudes, threads, lot B, NVMe, Wq/Wc, exports Bash et liste prudente — sans gain fixe promis. Voir aussi MPS / MLX, Core ML mlmodelc ; Tarifs / Achat sans compte.

Frictions sur un M4 distant

  1. Sessions. Chaque InferenceSession retient graphes, poids et caches EP en mémoire unifiée — la prolifération pousse ANE et NVMe en compétition.
  2. Threads. Intra-op ORT + OpenMP + Accelerate peuvent sursouscrire les cœurs P et gonfler le p95.
  3. Timeout unique. Mélanger attente file et calcul CoreML favorise relances destructrices et diagnostics flous.

Matrice de décision (paramètres)

Garde-fous puis balayage de B et sessions selon mémoire et disque. Repères jour/mois qualitatifs — croiser avec latence & TCO.

Profil Sessions chaudes Threads intra / inter Lot B I/O NVMe intégrée Timeouts Wq / Wc Indication jour / mois
API stable, poids déjà chauds 16 Go : 1 principale ; 24 Go : 1–2 avec plafond dur Intra 2–4, inter 1 au départ ; baissez si OpenMP sursouscrit Augmentez B jusqu’à inflexion du p95, puis reculez d’un cran Précharge unique ; évitez copies modèle complètes en parallèle Wq court ; Wc au p95 batch + marge mesurée Mensuel si débit régulier
Jobs en rafale (CI, scoring nocturne) Réutiliser une session par empreinte de modèle ; reconstruire si hash change Garder inter à 1 sauf parallélisme de graphe évident B modéré ; privilégier la stabilité de latence Stager ONNX et données sur NVMe locale avant les boucles Wq serré ; Wc plus large seulement en phase de profilage À la journée pour pics courts
Hôte multi-locataire Sémaphore global par famille de modèles Moins de threads par locataire ; équité avant saturation Petit B par locataire + contrôle d’admission Préfixes scratch isolés ; surveillez les pics d’écriture partagés Exposer les deux timeouts aux métriques ; dégrader avant kill dur Mensuel intermédiaire si l’isolement impose un SKU plus large

Pas de garantie de performance. Le routage ANE/GPU et la couverture d’opset dépendent du graphe, de la précision et de la version ORT — reprofilez sur l’image louée.

Variables d’environnement exécutables et liste de concurrence

systemd, CI ou entrée conteneur — ajuster après mesure. Défauts prudents.

# shell worker macOS — ajuster après profilage
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}"  # 0 verbeux .. 4 fatal

Les SessionOptions Python gardent les threads explicites :

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

Logguez les fournisseurs résolus à chaque changement d’options EP : une mineure ORT peut tout décaler.

  • Plafonner les sessions chaudes avant d’augmenter B.
  • Une équipe OpenMP dominante par processus ; répartir les cœurs entre processus sciemment.
  • Tracer identifiant de session, hash modèle, fournisseurs et durée murale par lot.
  • Sous charge : réduire B, puis Wc, puis ajouter des nœuds — pas des relances aveugles.
  • Publier les échecs via DLQ signée ou webhooks de synthèse plutôt que des pertes silencieuses.

Cinq étapes avant d’augmenter la concurrence

  1. Épingler wheel ORT + digest image ; pip freeze.
  2. Préchauffe unique ; p50/p95 ; cold start hors SLA si besoin.
  3. Dichotomie B jusqu’à inflexion latence ou RAM.
  4. Métriques séparées Wq vs Wc.
  5. Re-benchmark après changement de région.

Signaux utiles en métriques

  • Octets résidents par session versus pics de compilation.
  • Temps mural par élément (durée du lot divisée par B).
  • Part des lots proches de Wc sur une fenêtre de dix minutes.

Choisir région et forfait sur pages publiques

Colocalisez poids et features. Sans connexion : Singapour, Japon, Corée, Hong Kong, US Ouest ; synthèse Achat, index blog, Aide.

FAQ

Garder CPUExecutionProvider ? Souvent oui en repli ; mesurez les deux chemins.

Augmenter intra-op ? Pas automatiquement linéaire — profilez plutôt que d’extrapoler.

Manifeste image ? Voir Aide pour la liste d’outils supportée.

Synthèse

ORT CoreML EP : sessions réutilisées, threads alignés, B mesuré, Wq/Wc séparés, OMP/vecLib + SessionOptions, reprofilage après région ou mineure ORT. Slug : 2026-remote-mac-m4-onnxruntime-coreml-batch-inference-matrix.html.

Choisir région et forfait