Stapsgewijze handleiding voor het inschakelen van de GPU in WSL2 voor machine learning en CUDA

Laatste update: 08/05/2026
Auteur: Isaac
  • Met WSL2 kun je de fysieke Windows GPU gebruiken vanuit een echt Linux-systeem met CUDA- en DirectML-ondersteuning.
  • Het is essentieel om een ​​bijgewerkte Windows-versie, de juiste stuurprogramma's en een goed geconfigureerde WSL2-distributie te combineren.
  • CUDA Toolkit, cuDNN, Docker en frameworks zoals PyTorch of TensorFlow zijn geïntegreerd zonder dat er volledige virtuele machines nodig zijn.
  • De juiste GPU-selectie en monitoring met nvidia-smi zorgen voor optimale prestaties en stabiliteit in machine learning.

GPU-configuratie in WSL2 voor machine learning

Als je op Windows werkt met machine learning, deep learning of data science , heb je je waarschijnlijk wel eens afgevraagd of het de moeite waard is om een ​​aparte Linux-omgeving op te zetten of om op de cloud te vertrouwen. Met officiële GPU-ondersteuning in WSL2 hoef je het niet ingewikkeld te maken: je kunt een echte Linux-omgeving, versneld door CUDA, rechtstreeks op je Windows-pc hebben.

In deze handleiding laten we stap voor stap zien hoe je de GPU inschakelt in WSL2 voor ML en CUDA , wat je op systeemniveau nodig hebt, hoe je de juiste stuurprogramma's installeert, hoe je Ubuntu (of een andere distributie) voorbereidt, hoe je CUDA, cuDNN, Docker, TensorFlow, PyTorch en DirectML integreert en hoe je de meest voorkomende problemen oplost die je onderweg tegenkomt.

Architectuur: hoe de GPU werkt binnen WSL2

WSL2 draait een echte Linux-kernel in een lichtgewicht virtuele machine die door Windows zelf wordt beheerd. Het is geen gebrekkige emulatie: het is echt Linux, met zijn kernel en gebruikersruimte, maar extreem geïntegreerd met het hostsysteem.

Om de GPU vanuit die kernel te benutten, hebben NVIDIA (en Microsoft) een specifieke stack ontwikkeld die de GPU van de Windows-host beschikbaar maakt voor WSL2 . Vanuit Linux-perspectief resulteert dit in de klassieke CUDA-interface via libcuda.so , waardoor software ten onrechte denkt dat het op een "native" Linux-systeem draait.

Dankzij die laag kun je binnen WSL2 nvidia-smi, nvcc, de CUDA Toolkit, cuDNN en vrijwel elk CUDA-compatibel ML-framework (PyTorch, TensorFlow, enz.) gebruiken zonder dat je een zware virtuele machine hoeft in te stellen of altijd afhankelijk hoeft te zijn van de cloud.

Bovendien strekt deze integratie zich uit tot Docker en NVIDIA Container Toolkit , zodat u GPU-compatibele containers kunt uitvoeren alsof het een dedicated Linux-server is: bijvoorbeeld officiële NVIDIA NGC-images voor TensorFlow, PyTorch of andere AI-frameworks.

In het grafische gedeelte kun je met WSLg ook bepalen welke GPU wordt gebruikt voor grafische gebruikersinterface-applicaties in Linux. Dit is erg handig als je computer een Intel iGPU of geïntegreerde AMD GPU heeft en een aparte NVIDIA-kaart, en je de zware taken aan de NVIDIA-kaart wilt overlaten.

Windows-vereisten, GPU en vereiste versies

Vereisten om GPU in WSL2 in te schakelen

Om dit allemaal te laten werken, is het besturingssysteem de eerste vereiste: je hebt Windows 11 of Windows 10 versie 21H2 of later nodig . Eerdere versies bieden geen volwaardige (of geen) GPU-ondersteuning in WSL2.

Op hardwareniveau heb je een moderne GPU met bijgewerkte drivers nodig . Voor pure CUDA heb je een compatibele NVIDIA GPU nodig (bij voorkeur een recente RTX-serie), maar je kunt ook DirectML gebruiken als je GPU van AMD of Intel is, of zelfs als je liever frameworks gebruikt die zijn aangepast voor DirectML op een NVIDIA-kaart.

Daarnaast moet WSL2 een voldoende recente kernelversie gebruiken. Voor GPU-functionaliteit is kernelversie 5.10.43.3 of hoger vereist . U kunt dit controleren via PowerShell met:

wsl cat /proc/versie

Als je de omgeving helemaal opnieuw instelt op een bijgewerkt Windows-systeem, heb je waarschijnlijk al een compatibele versie. Het is echter de moeite waard om dit te controleren, voor het geval je computer al een tijdje geen updates heeft ontvangen of als je de WSL-instellingen handmatig hebt gewijzigd.

Installeer en update WSL2 met een geschikte Linux-distributie.

Installeer WSL2 en Ubuntu voor ML

Voordat je je verdiept in drivers en CUDA, zorg ervoor dat WSL2 correct is geïnstalleerd en geconfigureerd . Voor ML-ontwikkeling wordt aangeraden een op glibc gebaseerde distributie te gebruiken, zoals Ubuntu of Debian, vanwege hun compatibiliteit met NVIDIA-repositories en -pakketten.

Vanuit PowerShell met beheerdersrechten kunt u WSL en de benodigde componenten voor WSL2 inschakelen met behulp van de juiste Windows-opdrachten. In moderne versies van Windows 10/11 is de meest directe manier om `wsl --install` te gebruiken en de distributie te specificeren, bijvoorbeeld:

wsl –install -d Ubuntu-22.04

Zodra de installatie is voltooid, ziet u de nieuwe Ubuntu-app in het Startmenu. De eerste keer dat u deze opent, wordt u gevraagd de basisinstellingen te voltooien (gebruikersnaam, wachtwoord, enz.). De volgende essentiële stap is het bijwerken van de pakketcache en het systeem binnen die distributie.

  Het startmenu herstellen na het uitschakelen van kritieke services in Windows 11

sudo apt update && sudo apt -y upgrade

Daarnaast is het raadzaam ervoor te zorgen dat WSL zelf de nieuwste beschikbare kernel voor Windows gebruikt. Voer in PowerShell het volgende commando uit:

wsl - update

Deze combinatie van stappen resulteert in een bijgewerkte Ubuntu op WSL2 , perfect als basis voor CUDA-installaties, ML-frameworks of zelfs Docker.

Het NVIDIA-stuurprogramma met CUDA-ondersteuning installeren voor WSL2

NVIDIA CUDA-stuurprogramma's voor WSL2

De cruciale factor voor het gebruik van een CUDA GPU in WSL2 is het NVIDIA-stuurprogramma dat op Windows is geïnstalleerd , niet in Linux. Veel mensen denken ten onrechte dat ze het stuurprogramma ook in de Linux-distributie moeten installeren, maar dit is niet nodig voor WSL2.

Je moet het CUDA- en WSL-compatibele stuurprogramma downloaden van de officiële WSL-pagina van NVIDIA (of via een algemene zoekmachine voor stuurprogramma's, waarbij je je GPU en systeem selecteert). Het is belangrijk om geen verouderd stuurprogramma te gebruiken: de ondersteuning voor WSL2 en GPU's is aanzienlijk verbeterd.

Nadat het stuurprogramma op Windows is geïnstalleerd, kunt u met PowerShell controleren of het systeem de GPU en het stuurprogramma correct herkent. Voer een opdracht uit die adapterinformatie weergeeft, of open het NVIDIA-configuratiescherm en controleer de versie. Vanuit WSL geeft `nvidia-smi` een lijst met beschikbare CUDA-apparaten weer wanneer alles correct werkt.

In serveromgevingen (bijvoorbeeld Windows Server met WSL2) is de workflow vergelijkbaar: eerst installeer je WSL en de Linux-distributie, en vervolgens het NVIDIA-stuurprogramma voor Windows Server . Daarna installeer je aan de Linux-kant alleen de CUDA Toolkit en de benodigde bibliotheken, zonder extra GPU-stuurprogramma's in de WSL-kernel.

Het installeren van CUDA Toolkit, cuDNN en basistools binnen WSL2.

Nu WSL en het NVIDIA-stuurprogramma gereed zijn, is het tijd om de ontwikkelomgeving in Linux te configureren. Het doel is om de CUDA Toolkit, cuDNN en basis Python-tools te installeren , zodat je kunt compileren, voorbeelden kunt uitvoeren en comfortabel met ML-frameworks kunt werken.

Er zijn twee benaderingen: de officiële NVIDIA-repositories voor WSL/Ubuntu gebruiken of het nvidia-cuda-toolkit-pakket van je distributie gebruiken. Voor moderne workflows is het het beste om de NVIDIA-repositories te gebruiken die specifiek zijn voor jouw distributie, omdat deze meestal actueler zijn dan generieke pakketten.

Vanuit je Ubuntu-terminal in WSL2 kun je de repositories toevoegen en vervolgens CUDA installeren. Een alternatieve, eenvoudigere aanpak in sommige omgevingen is:

sudo apt -y install python3-pip nvidia-cuda-toolkit

Als je dit pakket gebruikt, zorg er dan voor dat de geïnstalleerde CUDA-versie compatibel is met de PyTorch- of TensorFlow-versies die je wilt gebruiken. Na de installatie is het raadzaam om het pad naar de CUDA-binaries toe te voegen aan je PATH-omgevingsvariabele , bijvoorbeeld door je ~/.bashrc -bestand te bewerken en een regel zoals deze toe te voegen:

export PATH=/home/user/.local/bin${PATH:+:${PATH}}

Na het opslaan en sluiten opent u eenvoudig een nieuwe terminalsessie of voert u `source ~/.bashrc` uit om de wijzigingen door te voeren. Van daaruit kunt u tools zoals nvcc gebruiken of voorbeeldscripts uitvoeren die CUDA gebruiken.

Docker en NVIDIA Container Toolkit gebruiken in WSL2

Docker en GPU in WSL2

In veel machine learning-workflows, met name in grote bedrijven of projecten, is het gebruikelijk om alles in containers te verpakken. Om de GPU van Docker binnen WSL2 te kunnen gebruiken, moet de Docker-engine toegang hebben tot de GPU via de NVIDIA Container Toolkit.

Er zijn twee belangrijke opties: Docker Desktop installeren op Windows en de integratie ervan met WSL2 gebruiken, of de Docker-engine rechtstreeks installeren op de Linux-distributie binnen WSL. In het tweede geval kunt u dat doen met:

curl https://get.docker.com | sh
sudo service docker starten

Nadat Docker is geïnstalleerd, is het tijd om de stabiele NVIDIA Container Toolkit-repository te configureren. Voor Ubuntu binnen WSL kunt u de gebruikelijke stappen volgen: definieer de distributievariabele beginnend bij /etc/os-release, voeg de GPG-sleutel toe en de lijst met NVIDIA-repositories voor nvidia-docker.

Vervolgens installeer je het benodigde pakket met:

sudo apt-get update
sudo apt-get install -y nvidia-docker2

Met deze configuratie kunt u containers starten die de GPU zien met behulp van de optie `--gpus` . Bijvoorbeeld voor een officiële TensorFlow-container op NGC:

docker run –gpus all -it –shm-size=1g –ulimit memlock=-1 –ulimit stack=67108864 nvcr.io/nvidia/tensorflow:20.03-tf2-py3

Binnen die container zijn al veel voorbeelden beschikbaar. Je kunt bijvoorbeeld naar de CNN-voorbeelden van NVIDIA gaan en een vooraf getraind ResNet uitvoeren:

cd nvidia-examples/cnn/python
resnet.py –batch_size=64

In serveromgevingen met meerdere GPU's kunt u ook voorbeeldcontainers zoals de klassieke CUDA nbody proberen om via Docker te controleren of alle kaarten correct reageren:

  Alles wat u moet weten over Windows PE .SDI-bestanden

docker run –rm -it –gpus=all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark -numdevices=5

TensorFlow, PyTorch en DirectML in WSL2

WSL2 is niet beperkt tot pure CUDA: het biedt ook de mogelijkheid om gebruik te maken van TensorFlow-DirectML en PyTorch-DirectML , wat vooral interessant is als je een AMD- of Intel-GPU hebt, of als je DirectML wilt gebruiken met een NVIDIA-kaart.

Het uitgangspunt is hetzelfde: een bijgewerkt GPU-stuurprogramma van de fabrikant, geïnstalleerd op Windows, of het nu AMD, Intel of NVIDIA is. Vervolgens creëer je een virtuele Python-omgeving binnen je Linux-distributie. Een veelgebruikte optie is Miniconda.

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
conda create –name directml python=3.7 -y
conda activeer directml

Nadat de omgeving is geactiveerd, installeer je het gewenste framework. Voor TensorFlow-DirectML :

pip install tensorflow-directml

En voor PyTorch-DirectML moet je eerst een aantal basis BLAS- en LAPACK-afhankelijkheden installeren, en vervolgens het bijbehorende pakket installeren:

sudo apt install liblas3 libomp5 liblapack3
pip install torch-directml

Om te controleren of alles werkt, kunt u een Python-sessie openen en een eenvoudige bewerking uitvoeren (bijvoorbeeld een tensorsom). Controleer vervolgens of er geen fouten optreden en of DirectML-acceleratie wordt gedetecteerd in de uitvoer van het framework.

PyTorch installeren met CUDA-ondersteuning in WSL2

Als je PyTorch wilt gebruiken met traditionele CUDA op een NVIDIA GPU, is de eenvoudigste manier om de versie te installeren die specifiek is ontworpen voor een bepaalde CUDA-versie, bijvoorbeeld CUDA 11.8 . PyTorch biedt specifieke indexen voor compatibele wheels.

Zodra je Python en pip of een Conda-omgeving hebt geïnstalleerd, kun je iets dergelijks uitvoeren:

pip3 install torch torchvision torchaudio –index-url https://download.pytorch.org/whl/cu118

Om te controleren of PyTorch de GPU correct herkent, opent u de interactieve Python-console in WSL2 en voert u het volgende commando uit:

fakkel importeren
torch.cuda.device_count()
torch.cuda.is_beschikbaar()

De eerste opdracht importeert PyTorch, de tweede geeft aan hoeveel CUDA-compatibele apparaten het systeem detecteert, en de derde retourneert True als de GPU beschikbaar is voor het framework. Als er iets misgaat, zijn de gebruikelijke stappen het controleren van de stuurprogramma's, de CUDA-versie en of WSL up-to-date is.

In omgevingen met meerdere GPU's biedt PyTorch ook de mogelijkheid om het gebruik te beperken tot bepaalde kaarten met behulp van omgevingsvariabelen zoals CUDA_VISIBLE_DEVICES of specifieke API's voor apparaatselectie. Dit is handig wanneer de machine wordt gedeeld met meerdere processen of gebruikers.

TensorFlow met CUDA op WSL2 en de volledige ML-workflow

TensorFlow kan in WSL2 ook gebruikmaken van de GPU via CUDA, vooral in combinatie met NVIDIA Docker-images of zorgvuldig samengestelde installaties uit de CUDA- en cuDNN-repositories. De typische workflow omvat:

1) Installeer het NVIDIA-stuurprogramma met CUDA-ondersteuning op Windows.Zoals we al eerder hebben aangegeven, zorgt dit ervoor dat de versie compatibel is met de TensorFlow-release die u gaat gebruiken.
2) Configureer in WSL2 de CUDA Toolkit en cuDNN Volg de officiële NVIDIA CUDA-handleiding in WSL.
3) Gebruik eventueel een NGC-image van TensorFlow met GPU-ondersteuning, die al is aangepast met de juiste CUDA/cuDNN-versies, waardoor compatibiliteitsproblemen met bibliotheken worden voorkomen.

Zodra je omgeving de GPU herkent (je kunt dit controleren met `nvidia-smi` vanuit WSL2), kun je intensieve modellen rechtstreeks vanuit Linux op Windows trainen, zonder volledige virtuele machines of de noodzaak om alles naar de cloud te uploaden. Dit wordt doorgaans gecombineerd met VS Code Remote – WSL en Jupyter voor comfortabel werken op laptops.

Voor beginners is het een goede manier om vertrouwd te raken met de materie door eenvoudige voorbeelden van neurale netwerken uit te proberen, het verbruik in nvidia-smi te monitoren en te experimenteren met batchgrootte, aantal lagen of precisie (FP16/FP32) om te zien hoe de GPU-belasting varieert.

Verificatie en monitoring van GPU-toegang

Het is essentieel om te controleren of alles correct is geconfigureerd voordat je begint met het trainen van grote modellen. Sinds WSL2 is het standaardcommando `nvidia-smi` , dat een lijst met GPU's, het totale en gebruikte geheugen, het GPU-gebruik, de temperatuur, enzovoort weergeeft.

Als de opdracht een bericht retourneert zoals "Geen apparaten gevonden", duidt dit er meestal op dat het Windows-stuurprogramma niet correct is geïnstalleerd of dat WSL niet up-to-date is . In veel gevallen kan dit worden opgelost door:

wsl – afsluiten

en het heropenen van de distributie om de omgeving opnieuw te laden, of het bijwerken van stuurprogramma's en het opnieuw opstarten van het systeem. Er zijn ook aanvullende tools zoals gpustat die een gebruiksvriendelijker overzicht van de GPU-belasting bieden.

  Volledige handleiding voor het stapsgewijs configureren van WSUS (Windows Server Update Services)

Tijdens lange trainingssessies is het raadzaam om een ​​aparte console te gebruiken met nvidia-smi of monitoring scripts om de temperatuur, het geheugengebruik en de systeemcapaciteit in de gaten te houden . Dit helpt bij het opsporen van knelpunten (zoals een tekort aan VRAM) of prestatieproblemen als gevolg van een slechte configuratie.

GPU-selectie in systemen met meerdere grafische kaarten (NVIDIA, AMD, iGPU)

Moderne laptops en desktops hebben vaak meerdere GPU's: bijvoorbeeld een geïntegreerde Intel- of AMD-iGPU en een dedicated NVIDIA-GPU . Sinds WSL2, en met name sinds WSLg voor grafische toepassingen, is het belangrijk om te kunnen kiezen welke GPU te gebruiken.

Microsoft documenteert mechanismen voor het selecteren van de GPU in WSLg, en gebruikers die situaties hebben ondervonden waarin hun applicatie de iGPU gebruikte, hebben het probleem opgelost door de officiële WSLg GPU-selectiehandleiding te volgen die beschikbaar is in de microsoft/wslg GitHub-repository.

Daarnaast kan in omgevingen waar DirectML op meerdere GPU's wordt ondersteund, een specifiek apparaat worden geselecteerd met behulp van de omgevingsvariabele:

export MESA_D3D12_DEFAULT_ADAPTER_NAME=» »

Deze variabele vergelijkt de namen van de adapters met een tekenreeks. Als je bijvoorbeeld "NVIDIA" invoert , wordt de eerste GPU geselecteerd waarvan de naam met NVIDIA begint. Dit is handig wanneer het systeem standaard de verkeerde GPU selecteert (bijvoorbeeld wanneer een geïntegreerde AMD GPU prioriteit krijgt boven een dedicated NVIDIA GPU voor bepaalde machine learning-taken).

In bijzonder lastige gevallen (bijvoorbeeld bij gebruik van FAISS of andere componenten binnen frameworks zoals LangChain of Ollama) kan het voorkomen dat er verbinding wordt gemaakt met de verkeerde GPU, zelfs als NVIDIA zichtbaar is in WSL. In dergelijke situaties is het meestal nodig om de configuratie van WSLg, de eerder genoemde omgevingsvariabele en specifieke bibliotheekinstellingen te combineren om het juiste apparaat af te dwingen.

Beste werkwijzen en oplossingen voor veelvoorkomende problemen

Zodra alles operationeel is, zijn er een aantal goede werkwijzen die een groot verschil maken voor het dagelijkse comfort en de prestaties. De eerste is om altijd met virtuele Python- of conda-omgevingen te werken en deze te activeren voordat je met een training begint:

source ~/.venvs/ml/bin/activate (of het equivalente commando in uw configuratie)

Door een actueel requirements.txt -bestand met de belangrijkste afhankelijkheden bij te houden (bijvoorbeeld met pip freeze > requirements.txt ), is het eenvoudig om de omgeving op een andere machine of na een formatteringsactie probleemloos opnieuw op te bouwen.

Een andere belangrijke aanbeveling is om niet rechtstreeks in /mnt/c/ te werken voor trainingsdata of grote projecten. De schijfprestaties zijn meestal veel beter als je je Linux-thuisdirectory in WSL gebruikt (bijvoorbeeld ~/proyectos_ml ), vooral wanneer je met veel bestanden of grote hoeveelheden data werkt.

Voor interactieve ontwikkeling biedt VS Code met de Remote – WSL-extensie en Jupyter-ondersteuning een zeer prettige ervaring: je bewerkt op Windows, voert uit op Linux met een GPU, en alles is naadloos geïntegreerd. Bovendien kun je tools zoals tmux of screen gebruiken om trainingssessies op de achtergrond te laten doorlopen, zelfs nadat je het terminalvenster hebt gesloten.

Als je de computer deelt of zware processen parallel uitvoert, is het raadzaam om de resourcebeperkingen in het Windows .wslconfig -bestand aan te passen (bijvoorbeeld het RAM-geheugen en het aantal cores dat WSL2 mag gebruiken) en handmatig te bepalen wanneer je zware trainingssessies uitvoert om te voorkomen dat het systeem vastloopt.

Wat betreft het oplossen van problemen, de meest voorkomende problemen zijn onder andere dat nvidia-smi de GPU niet detecteert (vanwege een onjuist stuurprogramma of een verouderde WSL-versie), incompatibiliteiten tussen CUDA-versies en frameworks (PyTorch/TensorFlow), en CUDA-installaties rechtstreeks vanaf internet zonder de officiële WSL-repositories en -handleidingen te volgen, wat vaak leidt tot conflicten tussen bibliotheken. Over het algemeen is het beter om te vertrouwen op de WSL-specifieke repositories en documentatie dan op generieke installaties.

Met al deze elementen correct geconfigureerd – een moderne Windows 11 of 10, een bijgewerkte WSL2, de juiste GPU-drivers, CUDA/cuDNN in de distributie, Docker en/of DirectML naar behoefte – kunt u een krachtige Linux-omgeving voor AI en ML op uw eigen laptop of desktop hebben , zonder het gebruiksgemak van Windows op te geven. Het is een zeer krachtige hybride oplossing die, mits goed afgestemd, u in staat stelt complexe modellen te trainen, workflows te prototypen en code snel te debuggen, zonder sterk afhankelijk te zijn van omslachtige virtuele machines of de cloud.