Polydesk-logotype
Polydesk.ai — Header

Vulkan

Vulkan est une API open standard de graphisme 3D et de calcul GPU développée par le Khronos Group, conçue pour offrir un accès bas niveau, haute performance et multi-plateforme aux GPU de tous les fabricants : NVIDIA, AMD, Intel, Qualcomm, ARM, Samsung, et Apple (via MoltenVK).

Dans le contexte de l’IA, Vulkan joue un rôle croissant comme backend de calcul GPU universel. C’est l’API qui permet à llama.cpp de faire tourner des LLM sur des GPU AMD et Intel sans nécessiter ROCm ou un SDK propriétaire. C’est aussi le backend Vulkan de GPT4All qui a ouvert l’accélération GPU aux cartes AMD dès 2023. Contrairement à CUDA (NVIDIA uniquement) ou Metal (Apple uniquement), Vulkan fonctionne sur pratiquement tous les GPU modernes, ce qui en fait le backend de dernier recours universel pour l’IA locale.

Vulkan en bref
Organisme
Khronos Group (consortium ouvert, 150+ entreprises)
Version actuelle
Vulkan 1.4 (décembre 2024, spec 1.4.346 de mars 2026)
Type
API graphique + compute GPU, standard ouvert
Licence
Open Standard (royalty-free)
GPU supportés
NVIDIA, AMD, Intel, Qualcomm, ARM Mali, Samsung, Apple (MoltenVK)
Plateformes
Windows, Linux, Android, macOS (MoltenVK), Nintendo Switch
Langages shader
GLSL, HLSL, Slang (compilés en SPIR-V)
Prédécesseur
OpenGL
Rôle IA
Backend compute pour llama.cpp, GPT4All, Docker Model Runner, frameworks mobiles

Qu’est-ce que Vulkan exactement ?

Une API bas niveau, explicite et multi-plateforme

Vulkan est le successeur spirituel d’OpenGL, mais avec une philosophie radicalement différente. Là où OpenGL cachait la complexité du GPU derrière une API de haut niveau (ce qui entraînait des comportements imprévisibles selon les drivers), Vulkan expose le GPU de manière explicite. Le développeur gère directement l’allocation mémoire, la synchronisation entre CPU et GPU, la compilation des pipelines, et la soumission des commandes. C’est plus verbeux et plus complexe, mais ça offre un contrôle total et des performances prévisibles.

Vulkan est comparable à DirectX 12 (Microsoft, Windows uniquement) et Metal (Apple uniquement) en termes de philosophie bas niveau. Sa force est d’être multi-plateforme et multi-vendeur : le même code Vulkan peut fonctionner sur un GPU NVIDIA sous Windows, un GPU AMD sous Linux, un GPU Qualcomm sous Android, et même un GPU Apple via la couche de traduction MoltenVK. Aucune autre API graphique n’offre cette portabilité.

Vulkan Compute : le calcul GPU généraliste

Au-delà du graphisme, Vulkan expose un sous-ensemble compute qui permet d’utiliser le GPU pour du calcul généraliste (GPGPU). Les compute shaders Vulkan permettent d’exécuter des opérations parallèles sur le GPU sans aucun composant graphique. C’est cette capacité compute qui rend Vulkan pertinent pour l’IA : les multiplications matricielles au cœur de l’inférence de réseaux de neurones peuvent être implémentées comme des compute shaders Vulkan.

L’extension Cooperative Matrix (VK_KHR_cooperative_matrix) est particulièrement importante pour l’IA. Elle fournit un opérateur natif de multiplication matricielle qui permet aux vendeurs GPU d’exposer leurs unités tensorielle (Tensor Cores NVIDIA, Matrix Cores AMD) via Vulkan. Les développeurs peuvent écrire du code d’inférence portable qui exploite automatiquement les accélérateurs matériels de chaque GPU.

Vulkan et l’intelligence artificielle

Le backend Vulkan de llama.cpp

llama.cpp, le moteur d’inférence de référence pour l’IA locale, propose un backend Vulkan qui fonctionne sur tous les GPU compatibles Vulkan 1.2+. C’est l’option la plus simple pour faire tourner un LLM sur un GPU AMD ou Intel sans installer ROCm ou un SDK propriétaire : Vulkan est déjà inclus dans les drivers GPU standard.

Cependant, le backend Vulkan de llama.cpp a des limitations par rapport au backend CUDA natif :

CritèreVulkan (llama.cpp)CUDA (llama.cpp)
GPU supportésNVIDIA, AMD, Intel, tous Vulkan 1.2+NVIDIA uniquement
Quantifications supportéesQ4_0, Q4_1, F16Tous (Q4_0, K-quants, I-quants, F16)
Performance (même GPU NVIDIA)~70-85% de CUDA100% (référence)
InstallationAucune (driver GPU suffit)CUDA Toolkit requis
Flash AttentionNonOui
Multi-GPULimitéOui
Quand choisir Vulkan vs CUDA vs ROCm Sur NVIDIA : utilisez CUDA, c’est le plus rapide et le plus complet. Sur AMD : utilisez ROCm/HIP si vous pouvez l’installer (meilleures performances, tous les formats de quantification). Sinon, Vulkan est l’option « ça marche tout de suite » sans installation supplémentaire, avec la limitation des quants Q4_0/Q4_1 uniquement. Sur Intel : Vulkan est souvent la seule option pratique. Sur Mac : utilisez Metal (natif et plus performant que Vulkan via MoltenVK).

Autres usages IA de Vulkan

Docker Model Runner a ajouté le support Vulkan en 2025, permettant l’inférence accélérée de LLM dans des conteneurs Docker sur n’importe quel GPU compatible Vulkan, sans configuration spécifique. La détection du matériel est automatique.

Sur mobile, Vulkan Compute est utilisé par des frameworks d’inférence ML comme Tencent ncnn, Alibaba MNN, et PyTorch Mobile pour accélérer l’inférence de modèles sur les GPU mobiles (Qualcomm Adreno, ARM Mali, Samsung Xclipse). C’est un domaine où Vulkan est particulièrement pertinent car OpenCL n’est pas disponible sur tous les appareils Android, tandis que Vulkan est quasi-universel sur les smartphones modernes.

Le Khronos Group développe aussi des extensions spécifiques au ML pour Vulkan. Les extensions ARM VK_ARM_data_graph et VK_ARM_tensors introduisent l’exécution de graphes de calcul ML et le support natif des tenseurs directement dans l’API Vulkan, similaires à ce qu’Apple a fait avec Metal 4 (MTLTensor). Le Roadmap 2026 de Vulkan inclut des améliorations de la gestion des descripteurs (VK_EXT_descriptor_heap) qui bénéficient aussi aux workloads compute/ML.

Vulkan 1.4 : les nouveautés

Vulkan 1.4, annoncé en décembre 2024 et adopté par tous les grands vendeurs GPU en 2025, consolide de nombreuses extensions précédemment optionnelles dans le cœur de la spécification :

Push descriptors et dynamic rendering local reads sont maintenant obligatoires, simplifiant le code applicatif. Le streaming transfers est garanti : toutes les implémentations doivent fournir soit une queue de transfert dédiée, soit le support de Host Image Copy, pour permettre le transfert de données CPU→GPU sans impacter le rendu. La résolution 8K avec 8 render targets est garantie sur toutes les implémentations conformes. Les extensions de maintenance jusqu’à VK_KHR_maintenance6 sont intégrées au cœur.

Les drivers conformes Vulkan 1.4 sont disponibles chez AMD, ARM, Imagination, Intel, Mesa (Linux open source), Nintendo, NVIDIA, Qualcomm, et Samsung. C’est l’un des taux d’adoption les plus rapides pour une version Vulkan.

L’écosystème Vulkan

SPIR-V : le langage intermédiaire

Vulkan n’accepte pas directement du code shader en texte. Les shaders sont compilés en SPIR-V (Standard Portable Intermediate Representation for Vulkan), un bytecode binaire portable. Vous écrivez vos shaders en GLSL, HLSL, ou Slang, puis un compilateur (glslc, dxc, slangc) les compile en SPIR-V. Ce SPIR-V est ensuite transmis au driver Vulkan qui le compile en code machine natif pour le GPU cible.

SPIR-V est aussi le vecteur par lequel le Khronos Group étend les capacités ML de Vulkan : l’inclusion de graphes de calcul et de types de données IA dans SPIR-V permet de supporter des workloads ML sans modifier fondamentalement l’API Vulkan elle-même.

MoltenVK : Vulkan sur Apple

Apple ne supporte pas Vulkan nativement (Apple promeut Metal). Cependant, le projet open source MoltenVK traduit les appels Vulkan en appels Metal, ce qui permet aux applications Vulkan de fonctionner sur macOS et iOS. Les performances sont bonnes (proche de Metal natif pour la plupart des workloads), bien que certaines extensions Vulkan récentes ne soient pas supportées.

Le backend Vulkan de llama.cpp fonctionne sur Mac via MoltenVK, mais le backend Metal natif est préférable car il est plus performant et supporte plus de formats de quantification.

Kompute : Vulkan Compute simplifié

Le projet open source Kompute (soutenu par la Linux Foundation) fournit un framework de calcul GPU généraliste basé sur Vulkan, conçu pour simplifier l’utilisation de Vulkan Compute pour le ML et le GPGPU. Il supporte des milliers de cartes graphiques multi-vendeur (AMD, Qualcomm, NVIDIA) et offre une API C++ et Python plus accessible que l’API Vulkan brute.

Vulkan vs les alternatives

CritèreVulkanCUDAMetalDirectX 12OpenCL
Multi-plateformeOui (Windows, Linux, Android, Mac*)Non (NVIDIA, Linux/Win)Non (Apple)Non (Windows)Oui (variable)
Multi-vendeur GPUOui (tous)Non (NVIDIA)Non (Apple)Oui (Win)Oui (variable)
Graphisme + ComputeOuiCompute seulOuiOuiCompute seul
Maturité MLÉmergenteExcellenteBonne (Metal 4)LimitéeEn déclin
Complexité APIÉlevée (explicite)ModéréeModéréeÉlevéeModérée
Standard ouvertOui (Khronos)Non (propriétaire)Non (propriétaire)Non (Microsoft)Oui (Khronos)

* Via MoltenVK (couche de traduction Vulkan → Metal).

Verdict : Vulkan est la seule API graphique et compute véritablement multi-plateforme et multi-vendeur. Pour l’IA, c’est le filet de sécurité universel : si aucun SDK propriétaire (CUDA, ROCm, Metal) n’est disponible, Vulkan fonctionnera. Mais pour les performances maximales en IA, les backends natifs restent préférables. Vulkan brille comme solution portable, comme backend mobile (Android), et comme option d’entrée de gamme pour l’IA locale sur GPU non-NVIDIA.

Historique

Le Khronos Group a annoncé Vulkan en mars 2015 sous le nom de code « glNext », comme successeur d’OpenGL. La version 1.0 est sortie en février 2016. Le projet s’appuie sur le travail de Mantle, une API bas niveau créée par AMD, dont le code a été donné au Khronos Group comme base pour Vulkan.

Vulkan 1.1 (2018) a ajouté le support multi-GPU et les sous-groupes. Vulkan 1.2 (2020) a intégré de nombreuses extensions et amélioré le modèle mémoire. Vulkan 1.3 (2022) a ajouté le dynamic rendering et la synchronisation améliorée. Vulkan 1.4 (2024) a consolidé les extensions prouvées et augmenté les minimums garantis. Le Roadmap 2026 prévoit un nouveau système de descripteurs (VK_EXT_descriptor_heap) et des améliorations au support des swapchains.

Le rythme de mises à jour de la spécification est continu : la version 1.4.346 date du 13 mars 2026. Les drivers conformes sont disponibles quasi-immédiatement chez les principaux vendeurs, ce qui témoigne de la maturité de l’écosystème.

Utiliser Vulkan pour l’IA en pratique

Compiler llama.cpp avec Vulkan

La manière la plus courante d’utiliser Vulkan pour l’IA est via llama.cpp. Voici comment compiler et utiliser le backend Vulkan :

# Prérequis : Vulkan SDK (pour la compilation uniquement) # Linux : sudo apt install libvulkan-dev # Windows : installer le SDK depuis vulkan.lunarg.com # Compiler llama.cpp avec le backend Vulkan git clone https://github.com/ggml-org/llama.cpp cd llama.cpp cmake -B build -DGGML_VULKAN=ON cmake --build build --config Release # Exécuter un modèle avec accélération Vulkan ./build/bin/llama-cli -m model-q4_0.gguf -ngl 99 -cnv # Lancer le serveur API avec Vulkan ./build/bin/llama-server -m model-q4_0.gguf -ngl 99 --port 8080
Format de quantification sur Vulkan Le backend Vulkan de llama.cpp ne supporte que les formats Q4_0, Q4_1 et F16. Si vous avez un modèle en Q4_K_M (le format le plus recommandé habituellement), il ne fonctionnera pas avec le backend Vulkan. Téléchargez spécifiquement la version Q4_0 du modèle pour Vulkan. La qualité est légèrement inférieure à Q4_K_M mais reste tout à fait utilisable pour le chat et le Q&A.

Vérifier le support Vulkan sur votre machine

# Linux / Windows vulkaninfo --summary # Ou plus simplement, vérifier que le driver est détecté vulkaninfo | head -20 # Sur GPU AMD sous Linux sans ROCm # Vulkan est inclus dans le driver Mesa : aucune installation supplémentaire

Sur Windows, Vulkan est inclus dans les drivers NVIDIA (GeForce Experience / NVIDIA App), AMD (Adrenalin), et Intel (Arc/Graphics Driver). Sur Linux, le driver Mesa open source fournit Vulkan pour AMD (RADV) et Intel (ANV). Aucune installation séparé du SDK Vulkan n’est nécessaire pour l’exécution ; le SDK n’est requis que pour la compilation.

Ollama et Vulkan

Ollama détecte automatiquement les GPU AMD compatibles et utilise le backend approprié (ROCm si disponible, sinon Vulkan en fallback sur certaines configurations). Docker Model Runner utilise aussi Vulkan automatiquement si un GPU compatible est détecté. L’expérience utilisateur est simplifiée : pas de configuration manuelle dans la plupart des cas.

Limites pour l’IA

La principale limite de Vulkan pour l’IA est l’absence d’un écosystème de bibliothèques ML comparable à celui de CUDA (cuBLAS, cuDNN, TensorRT) ou même de ROCm (rocBLAS, MIOpen). Il n’existe pas de « vkBLAS » ou « vkDNN » optimisé par un vendeur GPU. Les développeurs qui veulent faire du ML via Vulkan doivent soit écrire leurs propres kernels compute, soit utiliser un framework intermédiaire comme Kompute.

La seconde est la limitation des formats de quantification dans llama.cpp. Le backend Vulkan de llama.cpp ne supporte que Q4_0, Q4_1 et F16, car les K-quants et I-quants nécessitent des opérations que le backend Vulkan n’implémente pas (encore). C’est un problème concret car Q4_K_M est généralement le format recommandé pour le meilleur rapport qualité/taille.

La troisième est la complexité de l’API. Vulkan est notoirement verbeux : créer une texture prend des dizaines de lignes de code. Pour le compute/ML, cette verbosité décourage les développeurs ML habitués à PyTorch ou TensorFlow. Les efforts de standardisation ML au sein de Vulkan (Cooperative Matrix, tenseurs ARM, graphes de calcul) sont prometteurs mais encore émergents.

Adoption et écosystème

Vulkan a été largement adopté dans le gaming, avec des titres majeurs comme Half-Life: Alyx, Path of Exile 2, Doom Eternal, et de nombreux jeux Android. Les moteurs de jeu Unreal Engine et Godot supportent Vulkan nativement. Sur Linux, Vulkan est devenu l’API graphique de référence (notamment via Proton/Steam Play pour les jeux Windows sur Linux).

Dans le calcul scientifique et le HPC, l’adoption de Vulkan Compute reste modeste face à CUDA et OpenCL. Mais la tendance est à la convergence : le Khronos Group travaille activement à faire de Vulkan une API unifiée pour le graphisme, le compute, le ML, et le traitement vidéo (encodage/décodage H.264/H.265/AV1 intégré depuis Vulkan 1.3.274).

L’écosystème d’outils est riche : le Vulkan SDK (LunarG) fournit les couches de validation, les outils de débogage, et les compilateurs shader. RenderDoc est le debugger graphique open source de référence pour Vulkan. Les validation layers de Vulkan, qui interceptent les erreurs d’utilisation de l’API au runtime, sont considérées comme un modèle du genre dans l’industrie graphique.


Questions fréquentes sur Vulkan

Vulkan est-il meilleur que CUDA pour l’IA ?

Non, pas en termes de performance ou d’écosystème ML. CUDA offre des bibliothèques optimisées (cuBLAS, cuDNN), un écosystème mature, et de meilleures performances sur GPU NVIDIA. Vulkan est utile quand CUDA n’est pas disponible (GPU AMD, Intel) ou quand la portabilité multi-vendeur est prioritaire. Pour l’inférence de LLM sur un GPU AMD sans ROCm, Vulkan est souvent la solution la plus simple.

Mon GPU est-il compatible Vulkan ?

Quasi-certainement, si votre GPU a moins de 8 ans. Tous les GPU NVIDIA depuis Maxwell (GeForce GTX 750+), AMD depuis GCN 1.0 (Radeon HD 7000+), Intel depuis Skylake (Gen9, HD Graphics 520+), et tous les GPU mobiles récents (Qualcomm Adreno, ARM Mali, Samsung Xclipse) supportent Vulkan. Vérifiez avec la commande vulkaninfo sur votre système.

Faut-il installer Vulkan séparément ?

Non. Vulkan est inclus dans les drivers GPU de tous les principaux fabricants (NVIDIA, AMD, Intel). Sur Linux, le driver Mesa open source inclut Vulkan pour AMD et Intel. Sur Android, Vulkan est intégré au système. Le Vulkan SDK (LunarG) est utile uniquement pour les développeurs qui écrivent du code Vulkan directement.

Vulkan fonctionne-t-il sur Mac ?

Pas nativement. Apple promeut Metal et ne fournit pas de driver Vulkan. 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 peut utiliser Vulkan via MoltenVK sur Mac, mais le backend Metal natif est préférable.

Le backend Vulkan de llama.cpp va-t-il supporter les K-quants ?

C’est un sujet ouvert dans la communauté llama.cpp. Le support des K-quants dans le backend Vulkan nécessite l’implémentation d’opérations de déquantification spécifiques. C’est techniquement possible mais demande un travail de développement significatif. Pour l’instant, si vous avez besoin de K-quants sur AMD, le backend ROCm/HIP est la meilleure option.

Polydesk.ai — Footer