Wat is AMD ROCm en hoe installeer ik het?

Laatste update: 09/10/2025
Auteur: Isaac
  • ROCm is een open stack voor IA en HPC met HIP, RCCL en versnelde bibliotheken.
  • ROCm 7 versnelt training en inferentie met FP4/FP6 en verbetert de communicatie.
  • Directe installatie op Ubuntu; WSL2 en multi-GPU beschikbaar sinds 6.1.3.
  • Porteren van CUDA vereist HIPify en aanpassingen; aanzienlijke besparingen door het vermijden van licentiekosten.

AMD ROCm-platform voor AI en HPC

Als je werkt met GPU-acceleratie voor AI of HPC, heb je waarschijnlijk al gehoord van ROCm, AMD's open platform waarmee je hun kaarten kunt gebruiken voor serieuze computertaken op Linux en, in toenemende mate, ook in andere omgevingen. ROCm is ontwikkeld om CPU's en GPU's efficiënt te integreren en realistische computertaken af ​​te handelen met een open aanpak, vrij van licentiebeperkingen.

In de afgelopen cycli heeft AMD de ontwikkeling versneld: ROCm 7 bracht krachtige verbeteringen in prestaties en compatibiliteit, en eerdere 6.x-versies openden de deur naar scenario's zoals WSL2 en multi-GPU-configuraties. Het interessante is dat we het niet langer hebben over een permanente demo , maar over een volwassen en schaalbaar ecosysteem dat steeds aantrekkelijker wordt voor diegenen die op zoek zijn naar alternatieven voor CUDA zonder hun bestaande technologie te hoeven aanpassen.

Wat is AMD ROCm en waarom is het belangrijk?

ROCm (Radeon Open Compute) is een open-source softwarepakket dat drivers, tools, bibliotheken en API's bevat voor het programmeren van AMD GPU's, van kernelniveau tot eindgebruikersapplicaties. Het doel is om een ​​uniforme, krachtige basis te bieden voor generatieve AI en high-performance computing (HPC), met een relatief eenvoudige migratie vanuit bestaande ecosystemen.

Het platform ondersteunt het uitvoeren van intensieve workloads op Linux en is gericht op het maximaliseren van de GPU-prestaties met een geoptimaliseerde runtime, compilers en bibliotheken. Het integreert componenten zoals HIP voor het porteren van CUDA-code , bibliotheken voor collectieve communicatie zoals RCCL, lineaire algebra-acceleratoren en profiling- en debugtools.

Naast de prestaties ligt de waarde van ROCm in het open karakter: geen gesloten licenties en een brede afstemming met ecosystemen voor AI en datawetenschap zoals PyTorch, TensorFlow en ONNX. Dit maakt het een zeer aantrekkelijke optie voor universiteiten, mkb's en laboratoria die willen schalen zonder buitensporige softwarekosten te maken.

Wat ROCm 7 biedt: prestaties, lichtgewicht vormfactoren en meer compatibiliteit

Met versie 7 heeft het platform een ​​aanzienlijke sprong voorwaarts gemaakt. AMD meldt dat het tot 3,5 keer sneller is bij inferentie en 3 keer sneller bij training in bepaalde scenario's, dankzij ondersteuning voor gegevenstypen met lage precisie zoals FP4 en FP6 en verbeteringen aan de communicatiestack en gedistribueerde uitvoering.

Deze kleinere formaten maken het mogelijk om meer data in minder geheugen op te slaan en de doorvoer te versnellen zonder de kwaliteit significant te verminderen onder de juiste werkbelasting. Dit is cruciaal voor LLM's en generatieve AI . De trend naar lagere precisie (van FP32/FP16 naar FP8/FP6/FP4) sluit aan bij de huidige beste praktijken.

Een ander cruciaal punt is de communicatie tussen GPU's. Dankzij de integratie van RCCL (AMD's equivalent van NCCL) verbetert ROCm 7 de orkestratie van GPU-naar-GPU-verkeer , waardoor knelpunten bij het opschalen naar meerdere accelerators worden verminderd. Dit maakt stabielere en efficiëntere gedistribueerde training mogelijk.

Ook op het gebied van compatibiliteit is er vooruitgang geboekt: naast Linux wordt er gewerkt aan ondersteuning voor Windows (nog beperkt, maar er is vooruitgang) en het hardwareaanbod wordt uitgebreid met de Instinct MI300X, recente Radeon-kaarten en zelfs Ryzen AI-platforms. Voor desktopontwikkelaars biedt dit mogelijkheden die verder reiken dan het datacenter.

Softwarestack en sleutelcomponenten in ROCm

ROCm is meer dan alleen een driver: het is een complete stack. Het omvat ontwikkeltools, compilers, numerieke bibliotheken, communicatie-API's en beheertools . Grofweg zijn de belangrijkste componenten:

  • HEUP: Een portabiliteitslaag waarmee CUDA-kernels kunnen worden aangepast aan AMD GPU's. HIPify automatiseert een groot deel van het vertaalproces.
  • RCCL: Collectieve communicatiebibliotheek geoptimaliseerd voor AMD GPU's, zeer nuttig bij gedistribueerde training.
  • MIOpen: primitieven voor neurale netwerken GPU versneld.
  • ROCM BLAS, FFT, Sparse en MAGMA: Belangrijke algebrabibliotheken voor AI/HPC-prestaties.
  • gereedschap zoals rocminfo, rocm-smi, profiling-, debugging- en orkestratiehulpprogramma's (inclusief ondersteuning voor Kubernetes via GPU Operator).

Deze set omvat de volledige ontwikkelingscyclus , van het schrijven en porteren van kernels tot het trainen van modellen en het beheren van clusters met inzicht en controle.

  Volledige vergelijking: Vulkan vs DirectX vs OpenGL voor Windows

Verschillen met CUDA: Wat verandert er in de praktijk?

Iedereen die bekend is met NVIDIA en CUDA weet dat de prestaties er zijn, maar ook dat je afhankelijk bent van één leverancier. ROCm wil die barrière doorbreken met een open en betaalbaarder aanbod. In de praktijk:

  • De stapel is open en vrij, ideaal voor AI-clusters met gecontroleerde kosten.
  • HIP maakt het makkelijker om CUDA-kernels te porten, maar Niet alles is automatisch of 1:1.
  • Hardwarecompatibiliteit is selectiever: Niet alle consumenten Radeons worden officieel ondersteund.
  • Windows-ondersteuning gaat vooruit en WSL2 verschijnt nu in 6.x-takken als bètaversie, uitbreiding van ontwikkelingsscenario's.

Als uw workflow afhankelijk is van propriëtaire, op CUDA gebaseerde tools, kunt u beperkingen ondervinden. Maar als u PyTorch of TensorFlow gebruikt en binnen de open-sourceomgeving werkt , begint ROCm 7 een serieuze productie-ervaring te bieden.

Hardwarecompatibiliteit en vereisten waar u rekening mee moet houden

Een belangrijk verschil is de lijst met officieel ondersteunde GPU's. NVIDIA ondersteunt CUDA voor een groot deel van zijn productlijn , terwijl AMD ROCm officieel beperkt tot specifieke chips (Instinct en bepaalde Radeon-kaarten). Dit betekent niet dat andere GPU's niet werken, maar ze vereisen mogelijk aanpassingen of worden helemaal niet ondersteund.

Eerdere generaties ondersteunden modellen zoals de Instinct MI25, die ongeveer 12,5 TFLOPs FP32 en 768 GFLOPs FP64 bood , maar deze werd vanaf ROCm 5.0 van de lijst met ondersteunde processors verwijderd. Desondanks zou hij met enkele omwegen nog steeds voor experimentele doeleinden kunnen werken.

Daarnaast biedt de Instinct MI50 ongeveer 13,3 TFLOPs FP32 en 6,6 TFLOPs FP64 , en huidige modellen zoals de MI300X leggen de lat hoger met ruim voldoende geheugen en rekenkracht voor LLM's. In de professionele consumentenmarkt is de 48GB Radeon Pro W7900 een interessante optie voor LLM's die 35GB of meer per GPU vereisen.

Een vaak over het hoofd geziene vereiste is de ondersteuning van PCIe Atomics door de CPU/het moederbord. Als uw platform ouder is dan 2017, kunt u compatibiliteitsproblemen ondervinden . Het is raadzaam dit te controleren voordat u aankopen doet of ambitieuze implementaties probeert uit te voeren.

ROCm 6.1.3: Multi-GPU en WSL2 op de radar

Vóór ROCm 7 bracht de 6.1.3-tak praktische verbeteringen met zich mee: ondersteuning voor multi-GPU-configuraties (essentieel voor het schalen van services) en bèta-ondersteuning voor het Windows Subsystem for Linux (WSL2). Dit maakt het mogelijk om AI-tools die voor Linux zijn ontworpen, vanuit een Windows-systeem uit te voeren, een zeer nuttige functie voor hybride werkstations.

Bovendien is er compatibiliteit toegevoegd met TensorFlow, naast PyTorch en ONNX , waardoor de mogelijkheden voor ontwikkelaars die tussen frameworks wisselen, worden uitgebreid. Als je op Windows werkt, maar de daadwerkelijke implementatie op Linux plaatsvindt, kan WSL2 een handige brug vormen voor de ontwikkeling.

Basisinstallatie op Linux (Ubuntu) en verificatie

Voor een pc met Ubuntu 20.04/22.04 LTS is de officiële installatie eenvoudig. De aanbevolen werkwijze is om de AMD-repository toe te voegen, het ontwikkelingsmetapakket te installeren en de GPU te verifiëren.

Bereid het systeem voor met basistools en de AMD-repositorysleutel:

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

Voeg de lijst met repositories toe en werk de pakketindex bij:

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

Installeer de ontwikkelomgeving en de belangrijkste tools:

sudo apt install -y rocm-dev

Om de installatie te controleren, kunt u de gedetecteerde GPU en de driverstatus bekijken. Deze hulpprogramma's zijn opgenomen in de ROCm-stack.

rocminfo
rocm-smi

Hiermee bent u klaar om code te compileren in HIP of PyTorch uit te voeren met een AMD-backend. Als u met Kubernetes werkt, vereenvoudigt de GPU Operator het inrichten van nodes met kant-en-klare drivers en runtime.

Is er een automatische conversie van CUDA? Wat is er eigenlijk?

Een veelgestelde vraag is of een CUDA-project naar ROCm kan worden geconverteerd zonder de code aan te raken. Het korte antwoord: er bestaat geen 100% automatische magische knop . Wat wel bestaat, zijn HIP en de hipify-tools die helpen bij het vertalen van een groot deel van de CUDA API's en kernels.

In praktijkprojecten is een semi-geautomatiseerde migratie met handmatige controles gebruikelijk , vooral in gebieden met specifieke CUDA-afhankelijkheden, niet-standaard extensies of subtiel gedrag. De benodigde inspanning varieert afhankelijk van de omvang van de code en het gebruik van externe bibliotheken.

  Sony Xperia 10 VII-functies: wat u moet weten

In tegenstelling tot andere initiatieven is de ervaring hier ontworpen om aan te sluiten op de C++/HIP-code, waardoor het gemakkelijker is om een ​​gemeenschappelijke basis te behouden . Desondanks is het raadzaam om kritieke modules te prototypen voordat u overgaat tot een volledige migratie.

Geavanceerde handleiding: ROCm draaien op een Vega iGPU (Ryzen APU)

In scenario's die niet officieel worden ondersteund, is er ruimte voor experimenten. Een interessant voorbeeld is een Ryzen 2200G met een geïntegreerde Vega 8 GPU, die ongeveer 1,8 TFLOPs FP32 kan halen bij 1,6 GHz . Het is geen krachtpatser, maar het biedt wel mogelijkheden om te experimenteren met kleinere modellen.

Het doel is dat het systeem de iGPU detecteert via ROCm, de nieuwste beschikbare versie installeert en PyTorch test. In deze gevallen is het, om ervoor te zorgen dat PyTorch de GPU herkent, meestal nodig om PyTorch vanuit de broncode te compileren met specifieke parameters.

Ten eerste is het belangrijk te onthouden dat de iGPU gedeeld geheugen gebruikt met het RAM-geheugen. Wijs in de BIOS de maximaal mogelijke hoeveelheid toe (bijvoorbeeld 2 GB) om wat marge te creëren voor inferentie.

Stap 1: ROCm installeren en de GPU valideren

Volg de hierboven beschreven Ubuntu-procedure. Controleer met rocminfo en opencinfo of het systeem de GPU herkent:

sudo rocminfo
sudo openclinfo

Als de agents worden weergegeven en de GPU in de bijbehorende sectie verschijnt, is de basis gelegd voor de rest van het proces.

Stap 2: Afhankelijkheden voor het compileren van PyTorch met ROCm

Je hebt extra buildtools en -bibliotheken nodig die niet standaard bij het installatieprogramma zijn inbegrepen. Installeer de toolchain en buildhulpprogramma's:

sudo apt install -y python3 python3-pip gcc g++ libatomic1 make \
cmake doxygen graphviz texlive-full

Het voegt ook ROCm-pakketten en -bibliotheken toe die PyTorch tijdens de compilatie zal opvragen. Dit omvat drivers, MIOpen, RCCL en het HIP-ecosysteem.

sudo apt install -y libstdc++-12-dev rock-dkms rocm-dev rocm-libs \
miopen-hip rccl rocthrust hipcub roctracer-dev cmake

Voor MAGMA is het aan te raden Conda als MKL-provider te gebruiken. Installeer Miniconda in je gebruikersmap en laat het pad handmatig staan:

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

Herstart de terminal om de omgeving te laden. Dit geeft je de benodigde MKLROOT wanneer je MAGMA koppelt.

Stap 3: MAGMA voor ROCm bouwen en installeren

Voordat je gaat compileren, identificeer je de LLVM-target van je GPU met behulp van rocminfo of de AMDGPU LLVM-documentatie. Op een Vega 8 zie je doorgaans gfx902, maar voor praktische ondersteuning van deze experimenten is het raadzaam om gfx900 (MI25) als target te gebruiken.

Gebruik die referentie om PYTORCH_ROCM_ARCH en MKLROOT aan te passen en voer de MAGMA-build uit:

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

Deze stap zorgt ervoor dat je de essentiële lineaire algebra voor PyTorch hebt . Als dit niet lukt, pas dan de routes aan of valideer de GPU-target opnieuw.

Stap 4: PyTorch bouwen met ROCm-backend

Kloon de repository en los de Python- afhankelijkheden op . Voeg extra pakketten toe die vaak compilatieproblemen voorkomen:

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

Converteer de CUDA-code naar HIP met behulp van de door AMD geleverde tool. Deze stap past de kernels aan de AMD-backend aan.

sudo python3 tools/amd_build/build_amd.py

Compileer tot slot met de gfx900-target en schakel ROCm in. Pas MAX_JOBS aan op basis van het aantal cores/threads om overbelasting van de machine te voorkomen.

sudo PYTORCH_ROCM_ARCH=gfx900 USE_ROCM=1 MAX_JOBS=4 python3 setup.py install

Heb geduld: de compilatie kan uren duren en hoeft niet op de uiteindelijke machine plaats te vinden als je de afhankelijkheden op een andere machine kopieert.

  Een complete gids voor ambacht en persoonlijk kennismanagement.

Stap 5: Stuurprogrammastabiliteit en testen met MNIST

Om de stabiliteit van de iGPU te verbeteren, moet u het energiebeleid van het AMDGPU-stuurprogramma aanpassen. Controleer de huidige instellingen en zoek naar ppfeaturemask:

find /sys/module/amdgpu/parameters/ -type f -name '*' -exec sh -c 'filename=${1%.*}; echo "File: ${filename##*/}"; cat "$1"' sh {} \;

Laad vervolgens de module met een permissieve waarde voor ppfeaturemask. Deze waarde zorgt doorgaans voor stabiliteit in de beschreven gevallen:

sudo modprobe amdgpu ppfeaturemask=0xfff73fff

Herstart en kloon de PyTorch-voorbeelden. Installeer de MNIST-voorbeeldafhankelijkheden en gebruik een override om PyTorch de iGPU te laten behandelen als 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

Als de PyTorch-backend de GPU als beschikbaar markeert (zelfs als de interne naam "cuda" gebruikt), maakt deze gebruik van de HIP-route. In PyTorch is "cuda" het historische label voor de GPU-backend , ongeacht of de leverancier NVIDIA of AMD is.

Windows, WSL2 en de weg naar gemengde werkstations

Hoewel ROCm primair nog steeds Linux ondersteunt, is ondersteuning voor Windows in ontwikkeling . Versie 6.1.3 wijst al op de mogelijkheid om WSL2 in bèta uit te voeren, waardoor Windows-ontwikkeling met Linux AI-tools mogelijk wordt.

Voor diegenen die in bedrijfs- of onderwijsomgevingen met Windows werken, vereenvoudigt dit de implementatie aanzienlijk : minder wrijving bij het testen, het voorbereiden van omgevingen en vervolgens de overstap naar productie op native Linux of Kubernetes.

Schaalvergroting: Multi-GPU, RCCL en orkestratie

Als je doel gedistribueerde training is, let dan op RCCL en multi-GPU-configuraties. ROCm 6.1.3 introduceerde verbeterde multi-GPU-ondersteuning en ROCm 7 verfijnt de communicatielaag verder om de latentie te verminderen.

Bij Kubernetes-implementaties helpt de GPU Operator bij het configureren van drivers, de runtime en het gereedmaken van nodes voor de workload. Dit vermindert handmatig werk op clusters en zorgt voor reproduceerbaarheid voor CI/CD-teams en -omgevingen.

Kosten, licenties en gebruiksscenario's

Een van de sterke punten van ROCm is de gunstige prijs-kwaliteitverhouding. Doordat er geen propriëtaire licenties nodig zijn , is het mogelijk om betaalbare AI-clusters te bouwen met AMD-hardware en open-source software. Dit is zeer aantrekkelijk voor laboratoria, universiteiten en het mkb.

Dat betekent niet dat ROCm geschikt is voor elke workflow. Als je gebruikmaakt van propriëtaire tools met exclusieve CUDA-ondersteuning , zul je problemen ondervinden. Maar als je technologie-stack draait om PyTorch, TensorFlow, ONNX en het Python-ecosysteem, dan is het een gunstig platform.

Praktische tips om aan de slag te gaan en valkuilen te vermijden

Als je nog niet bekend bent met AMD, probeer dan eerst kleinere modellen. Controleer of de GPU en de drivers correct werken en of de benodigde bibliotheken (MIOpen, RCCL, BLAS/FFT) aanwezig zijn.

Als je al PyTorch of TensorFlow gebruikt, probeer dan eerst niet-essentiële modules te migreren met HIP voordat je alles migreert. Detecteer specifieke CUDA-afhankelijkheden die handmatige aanpassing vereisen en meet de prestaties met en zonder gereduceerde formaten (FP16/FP8/FP6/FP4).

Voor clusters is het belangrijk om de topologie en communicatie vanaf het begin te plannen. RCCL en een goede interconnect-architectuur maken een groot verschil op grote schaal. Overweeg GPU's met veel VRAM als je grote LLM's uitvoert.

De open source-gemeenschap groeit en platforms zoals r/StableDiffusion zijn een constante bron van ideeën en tools. Maak gebruik van technische discussies en repositories met scripts om de implementatie te versnellen of ongebruikelijke problemen op te lossen.

Met al het bovenstaande is het beeld duidelijk: ROCm is uitgegroeid van een pril alternatief tot een robuust platform , waarbij versie 7 de lat hoog legt op het gebied van prestaties (FP4/FP6), communicatie en ondersteuning; versie 6.1.3 de deur opent naar multi-GPU en WSL2; en een redelijk eenvoudige installatieprocedure op Ubuntu. Er zijn compatibiliteitsbeperkingen en wat handmatig werk vereist bij het porteren vanuit CUDA of op onofficiële GPU's, maar in ruil daarvoor biedt het vrijheid, kostenbesparingen en een ervaring die al aanvoelt als een echte productieomgeving.