Polydesk-logotype
Polydesk.ai — Header

Metal

Metal est l’API graphique et de calcul GPU développée par Apple, qui permet aux développeurs d’exploiter directement le GPU des appareils Apple (iPhone, iPad, Mac, Apple TV, Vision Pro) pour le rendu graphique, le calcul parallèle, et depuis Metal 4, le machine learning natif.

Dans l’écosystème Apple, Metal joue un rôle analogue à celui de CUDA chez NVIDIA et de Vulkan dans le monde multi-plateforme : c’est la couche logicielle qui fait le pont entre les applications et le silicium du GPU. Pour l’IA locale sur Mac, Metal est le backend GPU utilisé par llama.cpp, Ollama, MLX, et tous les outils qui font tourner des modèles sur Apple Silicon. Avec Metal 4, annoncé à la WWDC 2025, Apple a franchi un cap en faisant du machine learning un citoyen de première classe de son API graphique, avec des tenseurs natifs et la possibilité d’intégrer de l’inférence directement dans les shaders.

Metal en bref
Éditeur
Apple
Version actuelle
Metal 4 (WWDC 2025, macOS 26 / iOS 26)
Première version
Metal 1.0 (WWDC 2014, iOS 8)
Type
API graphique + calcul GPU + ML
Langages
Metal Shading Language (MSL, basé C++), Swift, Objective-C, C++ (Metal-cpp)
Plateformes
macOS, iOS, iPadOS, tvOS, visionOS
GPU supportés
Tous GPU Apple (Metal 4 : Apple M1+ / A14+)
ML intégré
MTLTensor, ML Encoder, Shader ML, Metal Performance Primitives
Concurrent
CUDA (NVIDIA), Vulkan (multi-plateforme), DirectX 12 (Microsoft)

Metal et l’IA : pourquoi c’est important

Le backend GPU de l’IA locale sur Mac

Quand vous faites tourner un LLM localement sur votre Mac avec Ollama ou llama.cpp, c’est Metal qui accélère l’inférence sur le GPU Apple Silicon. Le backend Metal de llama.cpp est l’un des plus optimisés du projet, aux côtés de CUDA. Il supporte tous les formats de quantification GGUF (Q4_0, K-quants, I-quants, F16) et tire parti de la mémoire unifiée d’Apple Silicon pour charger des modèles sans limitation de VRAM séparée.

MLX, le framework ML d’Apple, utilise Metal comme backend de calcul GPU. Toutes les opérations tensorielle de MLX (multiplications matricielles, convolutions, attention) sont implémentées en Metal Shading Language et compilées en kernels GPU natifs. C’est cette couche Metal qui permet à MLX d’exploiter pleinement l’architecture d’Apple Silicon.

Core ML, le framework de plus haut niveau d’Apple pour l’inférence on-device, utilise aussi Metal en interne pour accélérer les modèles sur le GPU. Quand une app iOS utilise Core ML pour de la reconnaissance d’image ou de la classification de texte, Metal est au travail sous le capot.

L’avantage de la mémoire unifiée

L’un des aspects les plus remarquables de Metal sur Apple Silicon est l’exploitation native de la mémoire unifiée. Sur un système classique avec GPU discret, l’API graphique doit gérer les transferts de données entre la RAM CPU et la VRAM GPU (c’est le fameux cudaMemcpy ou glBufferData). Sur Apple Silicon, CPU et GPU partagent la même mémoire physique. Metal expose cette réalité directement : un buffer créé par le CPU est immédiatement accessible par le GPU, sans copie.

Pour l’IA, cet avantage est concret. Un Mac M4 Max avec 128 Go de mémoire unifiée peut charger un modèle de 100+ Go et l’exécuter sur le GPU sans se soucier de VRAM limitée. Sur un PC, il faudrait un GPU avec 100+ Go de VRAM (qui n’existe pas en consumer) ou distribuer le modèle sur plusieurs GPU.

Metal 4 : le ML comme citoyen de première classe

Metal 4 est la mise à jour la plus ambitieuse de l’API depuis sa création. Annoncée à la WWDC 2025 et disponible dans macOS 26 (Tahoe) et iOS 26, elle introduit le machine learning comme composante native du pipeline graphique.

MTLTensor : les tenseurs natifs

Metal 4 introduit MTLTensor, un nouveau type de ressource aux côtés de MTLBuffer et MTLTexture. Un MTLTensor est une structure de données multi-dimensionnelle conçue pour les workloads ML, directement manipulable par le GPU. C’est une avancée fondamentale : au lieu de devoir encoder les tenseurs dans des buffers génériques et écrire du code de gestion mémoire personnalisé, les développeurs peuvent maintenant travailler avec des tenseurs comme type de données de première classe.

ML Command Encoder

Le nouveau MTL4MachineLearningCommandEncoder permet d’exécuter des réseaux de neurones entiers sur le timeline GPU de Metal, aux côtés des passes de rendu et de compute. L’intérêt est la synchronisation : vous pouvez enchaîner une passe de rendu, une passe ML, et une autre passe de rendu dans le même command buffer, avec des barrières de synchronisation standard. Pas besoin de copier les données entre Metal et un framework ML séparé.

Shader ML : l’inférence dans les shaders

La fonctionnalité la plus révolutionnaire de Metal 4 est Shader ML, qui permet d’intégrer des opérations d’inférence de réseaux de neurones directement dans les shaders Metal. Concrètement, un fragment shader peut initialiser des tenseurs, appeler des opérations de multiplication matricielle via Metal Performance Primitives, et utiliser le résultat pour le shading, le tout dans un seul dispatch GPU. Pas de round-trip CPU, pas de copie mémoire entre frameworks.

Un exemple concret est la compression neurale de matériaux : au lieu de stocker des textures de matériaux volumineuses au format classique block-compressed, un réseau de neurones compact peut reconstruire les textures à la volée dans le shader. Apple démontre une réduction de 50% de la taille des matériaux par rapport à la compression par blocs traditionnelle, sans perte de qualité perceptible.

Qui bénéficie de Shader ML ? Principalement les développeurs de jeux et d’applications graphiques qui veulent intégrer des effets ML (upscaling neural, matériaux neuraux, animation ML, denoising) directement dans leur pipeline de rendu. Pour l’inférence de LLM, Core ML et MLX restent les outils appropriés. Shader ML cible l’intersection entre graphisme et ML, pas le ML pur.

Metal Performance Primitives

Les Metal Performance Primitives (MPP) sont des API haute performance pour les opérations fondamentales du ML : multiplication matricielle, convolution, normalisation. Elles sont optimisées pour chaque génération d’Apple Silicon et exploitent les Neural Accelerators du M5 (via Metal 4 et macOS 26.2). Les MPP sont accessibles à la fois depuis le code hôte (via le ML Encoder) et depuis les shaders (via Shader ML).

Historique des versions de Metal

VersionAnnéeNouveautés clésGPU minimum
Metal 1.02014Lancement, API graphique bas niveau pour iOSApple A7
Metal 22017GPU compute avancé, VR, support macOS natifApple A8 / Mac 2012+
Metal 32022Ray tracing HW, mesh shaders, MetalFX upscalingApple M1 / A14
Metal 42025Tenseurs natifs, Shader ML, ML Encoder, MPPApple M1 / A14

Metal 4 est conçu exclusivement pour Apple Silicon (M1 et supérieur, A14 et supérieur). Les Mac Intel ne sont pas supportés par Metal 4, bien que macOS 26 puisse encore fonctionner sur certains Mac Intel avec Metal 2/3.

Metal vs les alternatives

CritèreMetalCUDAVulkan
PlateformesApple uniquementNVIDIA uniquement (Linux/Windows)Multi-plateforme (Windows/Linux/Android/Mac*)
GPU supportésApple GPUNVIDIA GPUNVIDIA, AMD, Intel, Apple (MoltenVK)
ML intégréOui (Metal 4 natif)Via bibliothèques (cuDNN, etc.)Non natif
Mémoire unifiéeNatif (Apple Silicon)Non (mémoire séparée)Dépend du matériel
Langage shaderMSL (C++)CUDA C/C++GLSL / SPIR-V
Inférence LLMVia llama.cpp, MLXVia llama.cpp, vLLM, TensorRTVia llama.cpp (limité)
Outils debugXcode Metal DebuggerNsight Systems/ComputeRenderDoc, outils vendeur

* Vulkan est supporté sur Mac via MoltenVK, une couche de traduction Vulkan → Metal. Les performances sont bonnes mais pas parfaites.

Verdict : Metal est la seule option pour exploiter pleinement le GPU des appareils Apple. Sur Mac, c’est le backend le plus performant pour l’IA locale. Si vous développez exclusivement pour l’écosystème Apple, Metal (via MLX ou Core ML) est le choix naturel. Si vous avez besoin de portabilité multi-plateforme, Vulkan est plus adapté (avec MoltenVK comme pont vers Apple).

Utiliser Metal pour l’IA en pratique

Exécuter des LLM via Metal

La manière la plus simple d’utiliser Metal pour l’IA est indirecte : via des outils qui l’utilisent en backend. Ollama détecte automatiquement Apple Silicon et utilise Metal via llama.cpp. MLX utilise Metal nativement. Aucune configuration Metal n’est nécessaire de votre côté.

# Ollama utilise Metal automatiquement sur Mac ollama run llama3.2:3b # llama.cpp avec Metal (activé par défaut sur macOS) llama-cli -m model.gguf -ngl 99 -cnv # -ngl 99 offloade toutes les couches sur le GPU (Metal) # MLX LM utilise Metal en backend mlx_lm.chat --model mlx-community/Mistral-7B-Instruct-v0.3-4bit

Core ML pour les développeurs d’apps

Pour les développeurs iOS/macOS, Core ML est le framework recommandé pour intégrer de l’inférence ML dans les apps. Core ML gère automatiquement le dispatch entre CPU, GPU (Metal), et Neural Engine (NPU) selon le modèle et le matériel disponible. Les modèles Core ML (.mlmodel / .mlpackage) peuvent être convertis depuis PyTorch, TensorFlow, ou ONNX via l’outil coremltools.

Programmation Metal directe

Pour les développeurs qui veulent écrire des kernels GPU custom (calcul scientifique, effets graphiques ML, optimisations spécifiques), Metal Shading Language (MSL) est un langage basé C++14 avec des extensions pour le GPU. Avec Metal 4, MSL supporte les types tenseurs et les opérations ML nativement.

// Shader Metal 4 avec Tensor natif kernel void processML( tensor<float, 2> inputTensor [[buffer(0)]], tensor<float, 2> outputTensor [[buffer(1)]], uint2 gid [[thread_position_in_grid]] ) { // Opérations ML directement dans le shader // Metal Performance Primitives disponibles ici float val = inputTensor[gid.y][gid.x]; outputTensor[gid.y][gid.x] = activation(val); }

Performances Metal pour l’IA

Les performances d’inférence LLM sur Metal dépendent principalement de deux facteurs : la bande passante mémoire et le nombre de cœurs GPU. Sur Apple Silicon, la bande passante mémoire est le facteur limitant (la mémoire est partagée avec le CPU).

Puce AppleCœurs GPUBande passante mémoirePerf. 7B Q4 (tok/s)
M1 (8 Go)7-8~68 GB/s~15-20
M2 Pro (32 Go)19~200 GB/s~30-40
M3 Max (48 Go)40~400 GB/s~45-55
M4 Pro (24 Go)20~273 GB/s~35-45
M4 Max (128 Go)40~546 GB/s~55-70
M4 Ultra (192 Go)80~819 GB/s~70-90
Metal vs CUDA sur un même prix Une RTX 4090 (~1500-2000 €) offre ~1 TB/s de bande passante GDDR6X et 24 Go de VRAM. Un Mac Mini M4 Pro (~1800 €) offre ~273 GB/s et 24 Go de mémoire unifiée. Le GPU NVIDIA est nettement plus rapide en bande passante pure (et donc en tokens/s pour un modèle qui tient en VRAM). Mais le Mac peut charger des modèles bien plus gros (jusqu’à 192 Go sur Ultra) que la RTX 4090 (limitée à 24 Go de VRAM). C’est un compromis vitesse vs capacité.

Limites de Metal

La principale limite est l’exclusivité Apple. Metal ne fonctionne que sur les appareils Apple. Si vous développez pour des serveurs Linux, des PC Windows, ou du cloud, Metal n’est pas une option. Votre code Metal n’est pas portable vers d’autres GPU. Toutefois, avec l’ajout d’un backend CUDA à MLX (fusionné en mars 2025), il est désormais possible de prototyper en MLX sur Mac puis de déployer le même code Python sur des GPU NVIDIA sous Linux, sans réécriture. La portabilité se fait au niveau du framework, pas de l’API Metal elle-même.

La seconde est la bande passante mémoire inférieure à celle des GPU discrets haut de gamme. La LPDDR5 d’Apple Silicon ne rivalise pas avec la HBM des GPU serveur ou la GDDR6X des RTX 4090 en bande passante pure. Pour l’inférence de petits modèles, Apple Silicon est très compétitif. Pour les gros modèles et les workloads de training, les GPU NVIDIA restent plus rapides.

La troisième est que NVIDIA a abandonné le support Mac après un conflit avec Apple sur les drivers GPU. Depuis CUDA 10.2 (2019), aucun GPU NVIDIA ne fonctionne sur macOS. Cela signifie que tout l’écosystème CUDA (PyTorch CUDA, TensorRT, vLLM) est inaccessible sur Mac. Metal et MLX comblent ce vide, mais l’écosystème est plus restreint que celui de CUDA.

Metal pour le gaming et au-delà

Bien que cette page se concentre sur l’IA, Metal est avant tout une API graphique complète. Metal 4 apporte des améliorations significatives pour le gaming sur Mac : les placement sparse resources permettent une gestion mémoire plus fine pour les mondes ouverts, MetalFX (l’équivalent Apple de DLSS/FSR) intègre maintenant l’upscaling temporel avec denoising intégré et support d’entrées de taille dynamique, et le processus de compilation de shaders est accéléré grâce au pipeline harvesting et au Common Metal IR (réutilisation des résultats de compilation entre pipelines).

Apple a aussi investi dans le portage de jeux depuis Windows. Le Metal shader converter permet de convertir des shaders HLSL (DirectX) vers Metal avec accès aux fonctionnalités spécifiques du GPU Apple. Le support du développement et du débogage à distance depuis Microsoft Visual Studio facilite le portage pour les studios qui travaillent principalement sous Windows. Le Game Porting Toolkit d’Apple permet de faire tourner des jeux DirectX 12 sous macOS via une couche de traduction, servant de terrain d’évaluation avant un portage natif.

L’intersection gaming/ML est particulièrement intéressante avec Metal 4. Les techniques de neural rendering (matériaux neuraux, animation ML, super-résolution neurale) deviennent possibles directement dans le pipeline de rendu grâce à Shader ML. Un jeu peut utiliser un réseau de neurones compact pour décompresser des textures à la volée, blender des animations, ou appliquer des effets de post-processing ML, sans sortir du pipeline Metal.


Questions fréquentes sur Metal

Metal est-il l’équivalent de CUDA pour Apple ?

En partie. Metal couvre le calcul GPU comme CUDA, mais c’est aussi une API graphique complète (rendu 3D, shaders, ray tracing), ce que CUDA n’est pas. Pour l’IA, Metal via MLX ou llama.cpp joue effectivement le rôle de CUDA : c’est le backend GPU qui accélère l’inférence et l’entraînement. Mais l’écosystème de bibliothèques ML est moins large que celui de CUDA.

Faut-il installer Metal séparément ?

Non. Metal est inclus dans macOS, iOS et les autres OS Apple. Il est disponible par défaut sur tout appareil Apple avec un GPU supporté. Pas d’installation de driver ou de toolkit séparé. Si vous avez un Mac avec Apple Silicon, Metal fonctionne dès la première utilisation.

Metal fonctionne-t-il sur les Mac Intel ?

Metal 2 et 3 fonctionnent sur certains Mac Intel avec des GPU AMD ou Intel. Metal 4 est exclusif à Apple Silicon (M1 et supérieur). Pour l’IA locale, les Mac Intel sont fortement limités : pas de mémoire unifiée, GPU intégré faible, pas de Neural Engine. Un Mac Intel récent peut faire tourner llama.cpp en CPU, mais les performances seront médiocres comparées à un Mac Apple Silicon.

Vulkan fonctionne-t-il sur Mac ?

Vulkan n’est pas supporté nativement par Apple. Cependant, la bibliothèque open source MoltenVK traduit les appels Vulkan en appels Metal, ce qui permet aux applications Vulkan de fonctionner sur Mac avec de bonnes performances. llama.cpp offre un backend Vulkan qui fonctionne via MoltenVK sur Mac, mais le backend Metal natif est généralement plus performant et supporte plus de formats de quantification.

Quelle est la différence entre Metal, Core ML et MLX ?

Metal est l’API GPU bas niveau (comme CUDA ou Vulkan). Core ML est un framework de haut niveau qui utilise Metal en interne pour accélérer l’inférence de modèles ML dans les apps iOS/macOS. MLX est un framework de recherche ML (comme PyTorch) qui utilise aussi Metal en backend. En résumé : Metal est la fondation, Core ML et MLX sont construits dessus.

Polydesk.ai — Footer