- ROCm est une pile ouverte pour IA et HPC avec HIP, RCCL et bibliothèques accélérées.
- ROCm 7 accélère la formation et l'inférence avec FP4/FP6 et une communication améliorée.
- Installation directe sur Ubuntu ; WSL2 et multi-GPU disponibles depuis la version 6.1.3.
- Le portage depuis CUDA nécessite HIPify et des ajustements ; des économies importantes en évitant les frais de licence.

Si vous travaillez avec l'accélération GPU pour l'IA ou le HPC, vous avez probablement entendu parler de ROCm, la plate-forme ouverte d'AMD qui vous permet d'exploiter ses cartes pour des calculs sérieux dans Linux et, de plus en plus, dans d’autres environnements également. ROCm est né pour intégrer efficacement le CPU et le GPU et résolvez des charges de calcul réelles avec une approche ouverte, sans restrictions de licence.
Au cours des derniers cycles, AMD a accéléré le développement : ROCm 7 a apporté des améliorations significatives en termes de performances et de compatibilité, et les versions 6.x précédentes ont ouvert la porte à des scénarios tels que WSL2 et les configurations multi-GPU. Ce qui est intéressant, c’est que nous ne parlons plus d’une démo perpétuelle., mais plutôt un écosystème qui mûrit, évolue et commence à attirer ceux qui recherchent des alternatives à CUDA sans hypothéquer leur pile.
Qu'est-ce qu'AMD ROCm et pourquoi est-il important ?
ROCm (Radeon Open Compute) est une pile logicielle open source qui comprend des pilotes, des outils, des bibliothèques et des API pour la programmation des GPU AMD du bas niveau (noyau) aux applications définies par l'utilisateur. L'idée est d'offrir une base unifiée et performante pour IA générative et le calcul haute performance (HPC), avec une migration relativement facile à partir des écosystèmes existants.
La plate-forme prend en charge l'exécution de charges de travail intensives sur Linux et se concentre sur l'exploitation optimale du GPU avec un runtime, des compilateurs et des bibliothèques optimisés. Des composants tels que HIP sont intégrés pour porter le code CUDA, des bibliothèques pour les communications collectives telles que RCCL, des accélérateurs d'algèbre linéaire et des outils de profilage et de débogage.
Outre les performances, la valeur de ROCm réside dans sa nature ouverte : sans licences fermées et avec un large alignement avec les écosystèmes d'IA et de science des données tels que PyTorch, TensorFlow et ONNX. Cela en fait une option très attractive pour les universités, les PME et les laboratoires qui cherchent à évoluer sans coûts logiciels supplémentaires.
Ce que ROCm 7 apporte : des performances, des facteurs de forme légers et une meilleure compatibilité
Avec la version 7, la plateforme a fait un bond en avant significatif. AMD indique qu'elle est jusqu'à 3,5 fois plus rapide en inférence et 3 fois plus rapide en formation dans certains scénarios. piloté par la prise en charge des types de données de faible précision comme FP4 et FP6 et des améliorations à la pile d’exécution et de communication distribuée.
Ces formats réduits permettent de mettre plus de données dans moins de mémoire et d'accélérer le débit sans dégrader sensiblement la qualité sous des charges appropriées, Quelle est la clé des LLM et de l'IA générative ?La tendance vers une précision moindre (de FP32/FP16 à FP8/FP6/FP4) est conforme à l'état de l'art.
Un autre point crucial est la communication entre les GPU. Avec l'intégration de RCCL (l'équivalent AMD de NCCL), ROCm 7 améliore l'orchestration du trafic GPU-GPU, réduisant les goulots d'étranglement lors de la mise à l'échelle vers plusieurs accélérateurs. Cela permet une formation distribuée plus stable et plus efficace.
Il y a également un pas en avant en matière de compatibilité : en plus de Linux, Nous travaillons sur le support pour Windows (encore limité, mais avec des progrès), et la gamme de matériel, y compris les plateformes Instinct MI300X, Radeon récentes et même Ryzen AI. Pour le développeur de bureau, cela ouvre des options en dehors du centre de données.
Pile logicielle et composants clés de ROCm
ROCm est plus qu’un pilote : c’est une pile complète. Inclut des outils de développement, des compilateurs, des bibliothèques numériques, des API de communication et des utilitaires d'administrationD’une manière générale, ses pièces les plus pertinentes sont :
- HIP: Une couche de portabilité permettant d'adapter les noyaux CUDA aux GPU AMD. HIPify automatise une grande partie du processus de traduction.
- RCCL: Bibliothèque de communication collective optimisée pour les GPU AMD, très utile dans la formation distribuée.
- MIOuvrir: primitives pour les réseaux de neurones Accéléré par GPU.
- ROCM BLAS, FFT, Sparse et MAGMA:Bibliothèques d'algèbre clés pour les performances de l'IA/HPC.
- Outils tels que rocminfo, rocm-smi, les utilitaires de profilage, de débogage et d'orchestration (y compris la prise en charge de Kubernetes via GPU Operator).
Avec cet ensemble, le cycle de développement complet est couvert, de l'écriture et du portage des noyaux, à la formation des modèles et à l'exploitation des clusters avec visibilité et contrôle.
Différences avec CUDA : quels changements dans la pratique ?
Qui vient de NVIDIA et CUDA sait que les performances sont là, mais le verrouillage du fournisseur l'est aussi. Le ROCm cherche à sortir de cette impasse avec une proposition ouverte et économiquement plus accessible. En pratique :
- La pile est ouverte et gratuite, idéal pour les clusters d'IA à coûts maîtrisés.
- HIP facilite le portage des noyaux CUDA, mais Tout n’est pas automatique ou 1:1.
- La compatibilité matérielle est plus sélective : Toutes les cartes Radeon grand public ne sont pas officiellement prises en charge.
- Le support Windows progresse et WSL2 apparaît désormais dans les branches 6.x en version bêta, étendre les scénarios de développement.
Si votre flux de travail repose sur des outils fermés et centrés sur CUDA, vous risquez de rencontrer des limites. Mais si vous utilisez PyTorch ou TensorFlow et que vous évoluez vers l'open source, ROCm 7 commence à offrir une expérience de production sérieuse.
Compatibilité matérielle et exigences à prendre en compte
Une nuance importante est la liste des GPU officiellement pris en charge. NVIDIA active CUDA dans une grande partie de son portefeuille, tandis qu'AMD restreint officiellement ROCm à certaines puces (Instinct et certaines Radeon). Cela ne signifie pas que d'autres GPU ne fonctionneront pas, mais ils pourraient nécessiter des ajustements ou ne pas être pris en charge.
Dans les générations précédentes, il y avait un support pour des modèles comme l'Instinct MI25, qui offert ~12,5 TFLOPS FP32 et 768 GFLOPs FP64, mais à partir de ROCm 5.0, il n'était plus répertorié comme pris en charge. Malgré cela, avec certains Ruses peut fonctionner pour expérimenter.
Ci-dessus, l'Instinct MI50 plane ~13,3 TFLOP FP32 et ~6,6 TFLOP FP64, et les modèles actuels comme le MI300X placent la barre plus haut avec une mémoire et une puissance importantes pour les LLM. Pour une utilisation professionnelle, la Radeon Pro W7900 de 48 Go Il est intéressant pour les LLM qui demandent 35 Go ou plus par GPU.
Une exigence souvent négligée est la prise en charge de PCIe Atomics par le processeur/la carte. Si votre plateforme est antérieure à ~2017, vous risquez de rencontrer des plantages.C'est une bonne idée de le valider avant d'aller faire du shopping ou de tenter des déploiements ambitieux.
ROCm 6.1.3 : Multi-GPU et WSL2 sur le radar
Avant ROCm 7, la branche 6.1.3 apportait des choses pratiques : prise en charge des configurations multi-GPU (clé pour la mise à l'échelle des services) et prise en charge bêta du sous-système Windows pour Linux (WSL2). Cela vous permet d'exécuter des outils d'IA basés sur Linux depuis un système Windows. Des nouvelles très utiles pour les postes de travail mixtes.
De plus, la compatibilité a été ajoutée TensorFlow avec PyTorch et ONNX, élargissant les options pour ceux qui alternent entre les frameworks. Si vous travaillez sous Windows mais que votre déploiement actuel est Linux, WSL2 peut constituer une passerelle pratique pour le développement.
Installation de base sur Linux (Ubuntu) et vérification
Pour un ordinateur personnel exécutant Ubuntu 20.04/22.04 LTS, l'installation officielle est simple. Le flux recommandé consiste à ajouter le référentiel AMD, à installer le métapackage de développement et à vérifier le GPU.:
Préparer le système avec des outils de base et la clé du référentiel AMD :
sudo apt update && sudo apt install -y wget gnupg2
wget https://repo.radeon.com/rocm/rocm.gpg.key
sudo gpg --dearmor -o /etc/apt/keyrings/rocm.gpg < rocm.gpg.key
Ajouter la liste des référentiels et mettre à jour l'index du paquet :
echo 'deb [signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/debian/ ubuntu main' | sudo tee /etc/apt/sources.list.d/rocm.list
sudo apt update
Installer la pile de développement et principaux outils :
sudo apt install -y rocm-dev
Pour valider l'installation, vous pouvez vérifier l'état du GPU et du pilote détectés. Ces utilitaires sont fournis dans la pile ROCm:
rocminfo
rocm-smi
Avec cela, vous devriez être prêt à compiler du code dans HIP ou à exécuter PyTorch avec le backend AMD. Si vous travaillez dans Kubernetes, l'opérateur GPU vous facilite la tâche provisionnement des nœuds avec conducteurs et prêt à l'exécution.
Existe-t-il une conversion automatique depuis CUDA ? Qu'est-ce qu'elle propose réellement ?
Une question récurrente est de savoir s'il est possible de convertir un projet CUDA en ROCm sans toucher au code. La réponse courte : il n’existe pas de bouton magique 100 % automatiqueCe qui existe, c'est HIP et les outils hipify qui aident à traduire de nombreuses API et noyaux CUDA.
Dans des projets réels, La chose habituelle est une migration semi-automatique avec des révisions manuelles, notamment dans les domaines où existent des dépendances spécifiques à CUDA, des extensions non standard ou des comportements subtils. L'effort varie selon la taille du code et l'utilisation de bibliothèques tierces.
Contrairement à d’autres initiatives, l’expérience ici est conçue pour converger avec le code C++/HIP, ce qui facilite le maintien d'une base commune. Néanmoins, il est conseillé de réaliser un prototype avec des modules critiques avant de s'engager dans une migration complète.
Guide avancé : Exécution de ROCm sur un iGPU Vega (APU Ryzen)
Dans les scénarios non pris en charge, il est possible de faire des ajustements. Un exemple intéressant est celui d'un Ryzen 2200G équipé d'un iGPU Vega 8. capable d'environ 1,8 TFLOP FP32 à 1,6 GHzCe n'est pas une bête, mais c'est amusant d'expérimenter avec de petits modèles.
L'objectif est que le système détecte l'iGPU via ROCm, installer la dernière version possible et tester PyTorch. Pour que PyTorch reconnaisse le GPU, dans ces cas, il est généralement nécessaire compiler PyTorch à partir de la source avec des paramètres spécifiques.
Tout d’abord, n’oubliez pas que l’iGPU utilise une mémoire partagée avec la RAM. Allouez autant que possible BIOS (par exemple, 2 Go) afin qu’il y ait une marge de manœuvre dans l’inférence.
Étape 1 : installer ROCm et valider le GPU
Utilisez la procédure Ubuntu ci-dessus. Vérifiez avec rocminfo et openclinfo que le système voit le GPU :
sudo rocminfo
sudo openclinfo
Si les agents sont répertoriés et que le GPU apparaît dans la section correspondante, vous avez la base prête pour le reste du processus.
Étape 2 : Dépendances pour la compilation de PyTorch avec ROCm
Vous aurez besoin d’outils de construction et de bibliothèques supplémentaires qui ne sont pas inclus dans le programme d’installation par défaut. Installer la chaîne d'outils et les utilitaires à partir de la construction :
sudo apt install -y python3 python3-pip gcc g++ libatomic1 make \
cmake doxygen graphviz texlive-full
Et ajoute les packages et bibliothèques ROCm que PyTorch demandera lors de la compilation. Inclut les pilotes, MIOpen, RCCL et l'écosystème HIP:
sudo apt install -y libstdc++-12-dev rock-dkms rocm-dev rocm-libs \
miopen-hip rccl rocthrust hipcub roctracer-dev cmake
Pour MAGMA, il est conseillé d'utiliser Conda comme fournisseur MKL. Installez Miniconda dans votre dossier utilisateur et laissez l'itinéraire à portée de main :
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
~/miniconda3/bin/conda init bash
Redémarrez le terminal pour charger l'environnement. Cela vous donnera le MKLROOT nécessaire lorsque vous liez MAGMA.
Étape 3 : Créer et installer MAGMA pour ROCm
Avant de compiler, identifiez la cible LLVM de votre GPU à l'aide de rocminfo ou de la documentation LLVM pour AMDGPU. Sur une Vega 8, vous voyez généralement gfx902, mais un support pratique Pour ces expériences, nous utilisons approximativement le gfx900 (MI25) comme cible.
Avec cette référence, ajuste PYTORCH_ROCM_ARCH et MKLROOT et exécute la version MAGMA :
export PYTORCH_ROCM_ARCH=gfx900
# Clona el repo
git clone https://bitbucket.org/icl/magma.git
pushd magma
# Branch con corrección de memory leak
git checkout 5959b8783e45f1809812ed96ae762f38ee701972
cp make.inc-examples/make.inc.hip-gcc-mkl make.inc
# Añade linkers y objetivos de GPU al make.inc
echo 'LIBDIR += -L$(MKLROOT)/lib' >> make.inc
echo 'LIB += -Wl,--enable-new-dtags -Wl,--rpath,/opt/rocm/lib -Wl,--rpath,$(MKLROOT)/lib -Wl,--rpath,/opt/rocm/magma/lib' >> make.inc
echo 'DEVCCFLAGS += --gpu-max-threads-per-block=256' >> make.inc
export PATH="${PATH}:/opt/rocm/bin"
if [[ -n "$PYTORCH_ROCM_ARCH" ]]; then
amdgpu_targets=`echo $PYTORCH_ROCM_ARCH | sed 's/;/ /g'`
else
amdgpu_targets=`rocm_agent_enumerator | grep -v gfx000 | sort -u | xargs`
fi
for arch in $amdgpu_targets; do
echo "DEVCCFLAGS += --amdgpu-target=$arch" >> make.inc
done
# Evita conflictos con OpenMP en hipcc
sed -i 's/^FOPENMP/#FOPENMP/g' make.inc
make -f make.gen.hipMAGMA -j $(nproc)
LANG=C.UTF-8 make lib/libmagma.so -j $(nproc) MKLROOT=~/miniconda3
make testing/testing_dgemm -j $(nproc) MKLROOT=~/miniconda3
popd
sudo mv magma /opt/rocm
Cette étape garantit que vous avez Algèbre linéaire clé pour PyTorchSi cela échoue, ajustez les itinéraires ou revalidez la cible GPU.
Étape 4 : Créer PyTorch avec le backend ROCm
Clone le référentiel et résout les dépendances Python. Inclut des packages supplémentaires qui évitent généralement les erreurs de compilation :
git clone https://github.com/pytorch/pytorch.git
cd pytorch
git submodule update --init --recursive
sudo pip3 install -r requirements.txt
sudo pip3 install enum34 numpy pyyaml setuptools typing cffi future \
hypothesis typing_extensions CppHeaderParser argparse
Convertissez le code CUDA en HIP avec l'outil inclus par AMD. Cette étape adapte les noyaux vers le backend AMD :
sudo python3 tools/amd_build/build_amd.py
Enfin, compilez en utilisant la cible gfx900 et activez ROCm. Ajustez MAX_JOBS en fonction de vos cœurs/threads pour éviter de surcharger la machine :
sudo PYTORCH_ROCM_ARCH=gfx900 USE_ROCM=1 MAX_JOBS=4 python3 setup.py install
Sois patient: la compilation peut prendre des heures et il n'est pas nécessaire que ce soit sur l'ordinateur final si vous répliquez les dépendances sur une autre machine.
Étape 5 : Stabilité du pilote et tests avec MNIST
Pour améliorer la stabilité sur iGPU, il est conseillé d'ajuster les politiques d'alimentation du pilote AMDGPU. Vérifier les paramètres actuels et localisez ppfeaturemask :
find /sys/module/amdgpu/parameters/ -type f -name '*' -exec sh -c 'filename=${1%.*}; echo "File: ${filename##*/}"; cat "$1"' sh {} \;
Ensuite, chargez le module avec une valeur permissive pour ppfeaturemask. Cette valeur donne généralement de la stabilité dans les cas décrits :
sudo modprobe amdgpu ppfeaturemask=0xfff73fff
Redémarrez et clonez les exemples PyTorch. Installer les dépendances de l'exemple MNIST et utilisez un remplacement pour que PyTorch traite l'iGPU comme gfx 9.0.0 (MI25) :
git clone https://github.com/pytorch/examples.git
cd examples/mnist
sudo pip3 install -r requirements.txt
sudo HSA_OVERRIDE_GFX_VERSION=9.0.0 python3 main.py --verbose
Si le backend PyTorch marque le GPU comme disponible (même si le nom interne utilise « cuda »), il utilise la route HIP. Dans PyTorch, « cuda » est l'étiquette historique du backend GPU., que le fournisseur soit NVIDIA ou AMD.
Windows, WSL2 et le chemin vers les postes de travail mixtes
Bien que le support principal de ROCm reste Linux, Le support Windows est en routeLa branche 6.1.3 cible désormais la version bêta de WSL2, permettant le développement sur Windows avec les outils d'IA Linux.
Pour ceux qui travaillent dans des environnements d'entreprise ou éducatifs avec Windows, Cela simplifie grandement l’adoption:Moins de frictions pour les tests, la préparation des environnements, puis le passage à la production sur Linux natif ou Kubernetes.
Mise à l'échelle : multi-GPU, RCCL et orchestration
Si votre objectif est une formation distribuée, faites attention au RCCL et à la configuration multi-GPU. ROCm 6.1.3 a introduit une prise en charge multi-GPU plus fine, et ROCm 7 affine encore la couche de communication pour réduire les latences.
Dans les déploiements Kubernetes, l'opérateur GPU aide avec les pilotes, l'exécution et les nœuds prêts pour la charge de travail. Cela réduit le travail manuel en clusters et offre une reproductibilité pour les équipes et environnements CI/CD.
Coût, licences et scénarios d'utilisation
L’un des points forts du ROCm est l’équation coût-bénéfice. Manque de licences fermées, il est possible de mettre en place des clusters d'IA plus économiques avec du matériel AMD et des logiciels open source, ce qui est très attractif pour les laboratoires, les universités et les PME.
Cela ne signifie pas que ROCm est valable pour n’importe quel flux. Si vous dépendez d'outils propriétaires avec support CUDA exclusifVous rencontrerez des obstacles. Mais si votre pile repose sur PyTorch, TensorFlow, ONNX et l'écosystème Python, le terrain est favorable.
Conseils pratiques pour bien démarrer et éviter les pièges
Si vous êtes nouveau sur AMD, essayez d’abord les modèles plus petits. Valide que le GPU et les pilotes répondent bien et que les bibliothèques (MIOpen, RCCL, BLAS/FFT) sont présentes.
Si vous utilisez déjà PyTorch ou TensorFlow, essayez de porter les modules non critiques avec HIP avant de tout déplacer. Détecte les dépendances spécifiques à CUDA qui nécessitent une adaptation manuelle et mesurent les performances avec et sans formats réduits (FP16/FP8/FP6/FP4).
Pour les clusters, planifiez la topologie et la communication dès le départ. RCCL et un bon tissu d'interconnexion Faites la différence à grande échelle. Envisagez des GPU avec beaucoup de VRAM si vous travaillez sur des LLM volumineux.
La communauté open source se développe et des endroits comme r/StableDiffusion sont une source constante d'idées et d'outils. Profitez des threads techniques et des dépôts avec des scripts pour accélérer votre adoption ou résoudre des problèmes rares.
Avec tout ce qui précède, l’image est claire : ROCm est passé d'une alternative naissante à une plateforme puissante, avec une version 7 qui repousse les limites en termes de performances (FP4/FP6), de communication et de support, une version 6.1.3 qui a ouvert la voie au multi-GPU et à WSL2, et une installation relativement simple sur Ubuntu. Des limitations de compatibilité et des manipulations manuelles sont à prévoir lors du portage depuis CUDA ou vers des GPU non officiels, mais en contrepartie, elle offre liberté, économies et une expérience qui rappelle déjà la production réelle.
Écrivain passionné par le monde des octets et de la technologie en général. J'aime partager mes connaissances à travers l'écriture, et c'est ce que je vais faire dans ce blog, vous montrer toutes les choses les plus intéressantes sur les gadgets, les logiciels, le matériel, les tendances technologiques et plus encore. Mon objectif est de vous aider à naviguer dans le monde numérique de manière simple et divertissante.