Jak krok za krokem povolit GPU ve WSL2 pro ML a CUDA

Poslední aktualizace: 08/05/2026
Autor: Isaac
  • WSL2 umožňuje používat fyzickou grafickou kartu Windows ze skutečného linuxového systému s podporou CUDA a DirectML.
  • Je nezbytné kombinovat aktualizovaný systém Windows, správné ovladače a dobře nakonfigurovanou distribuci WSL2.
  • CUDA Toolkit, cuDNN, Docker a frameworky jako PyTorch nebo TensorFlow jsou integrovány bez nutnosti plnohodnotných virtuálních strojů.
  • Správný výběr grafické karty a její monitorování pomocí nvidia-smi zajišťuje výkon a stabilitu v ML.

Konfigurace GPU ve WSL2 pro strojové učení

Pokud pracujete se strojovým učením, hlubokým učením nebo datovou vědou ve Windows, pravděpodobně jste se už nejednou zamýšleli nad tím, zda se vyplatí založit samostatné linuxové prostředí, nebo se spoléhat na cloud. Díky oficiální podpoře GPU ve WSL2 není třeba věci komplikovat: můžete mít skutečné linuxové prostředí akcelerované technologií CUDA přímo na svém počítači s Windows.

V této příručce si krok za krokem ukážeme, jak povolit GPU ve WSL2 pro ML a CUDA , co potřebujete na systémové úrovni, jak nainstalovat správné ovladače, jak připravit Ubuntu (nebo jinou distribuci), jak integrovat CUDA, cuDNN, Docker, TensorFlow, PyTorch a DirectML a jak vyřešit nejtypičtější problémy, se kterými se cestou setkáte.

Architektura: jak GPU funguje v rámci WSL2

WSL2 běží na skutečném linuxovém jádru uvnitř lehkého virtuálního stroje spravovaného samotným systémem Windows. Nejedná se o žádnou podřadnou emulaci: je to skutečný Linux se svým jádrem a uživatelským prostorem, ale extrémně integrovaný s hostitelským systémem.

Aby bylo možné využít GPU v rámci tohoto jádra, vyvinuly společnosti NVIDIA (a Microsoft) specifický stack, který zpřístupňuje GPU hostitelského systému Windows protokolu WSL2 . Z pohledu Linuxu to vede ke klasickému rozhraní CUDA prostřednictvím knihovny libcuda.so , což umožňuje softwaru mylně se domnívat, že běží na „nativním“ linuxovém systému.

Díky této vrstvě můžete v rámci WSL2 používat nvidia-smi, nvcc, CUDA Toolkit, cuDNN a prakticky jakýkoli CUDA-kompatibilní ML framework (PyTorch, TensorFlow atd.), aniž byste museli nastavovat náročný virtuální stroj nebo se neustále spoléhat na cloud.

Tato integrace se navíc rozšiřuje i na Docker a NVIDIA Container Toolkit , takže můžete spouštět kontejnery s podporou GPU stejně jako na dedikovaném linuxovém serveru: například oficiální obrazy NVIDIA NGC pro TensorFlow, PyTorch nebo jiné frameworky s umělou inteligencí.

V grafické sekci můžete pomocí WSLg také ovládat, která grafická karta se používá pro aplikace grafického uživatelského rozhraní Linuxu, což je velmi užitečné, pokud má váš počítač integrovanou grafickou kartu Intel nebo integrovanou grafickou kartu AMD a dedikovanou kartu NVIDIA a chcete, aby velká pracovní zátěž šla na kartu NVIDIA.

Požadavky na Windows, grafická karta a požadované verze

Požadavky pro povolení GPU ve WSL2

Aby tohle všechno fungovalo, prvním filtrem je operační systém: potřebujete Windows 11 nebo Windows 10 verze 21H2 nebo novější . Starší verze nemají ve WSL2 vyspělou (nebo žádnou) podporu GPU.

Na hardwarové úrovni budete potřebovat moderní grafickou kartu s aktualizovanými ovladači . Pro čistou CUDA budete potřebovat kompatibilní grafickou kartu NVIDIA (ideálně novější řadu RTX), ale můžete také použít DirectML, pokud máte grafickou kartu AMD nebo Intel, nebo i když dáváte přednost frameworkům přizpůsobeným DirectML na grafické kartě NVIDIA.

WSL2 musí navíc používat dostatečně aktuální jádro. Pro funkce GPU je vyžadována verze jádra 5.10.43.3 nebo vyšší . To můžete ověřit v PowerShellu pomocí:

wsl cat /proc/verze

Pokud nastavujete prostředí od nuly na aktualizovaném systému Windows, s největší pravděpodobností již máte kompatibilní verzi, ale stojí za to ji zkontrolovat, pokud váš počítač nějakou dobu neobdržel aktualizace nebo pokud jste ručně změnili nastavení WSL.

Nainstalujte a aktualizujte WSL2 pomocí vhodné linuxové distribuce

Instalace WSL2 a Ubuntu pro ML

Než se ponoříme do ovladačů a CUDA, ujistěte se, že je WSL2 správně nainstalován a nakonfigurován . Pro vývoj ML se doporučuje použít distribuci založenou na glibc, jako je Ubuntu nebo Debian, kvůli jejich kompatibilitě s repozitáři a balíčky NVIDIA.

Z PowerShellu s oprávněními správce můžete povolit WSL a potřebné komponenty pro WSL2 pomocí příslušných příkazů systému Windows. V moderních verzích Windows 10/11 je nejpřímějším přístupem použití příkazu `wsl --install` a zadání distribuce, například:

wsl –install -d Ubuntu-22.04

Po dokončení instalace se v nabídce Start zobrazí nová aplikace Ubuntu. Při jejím prvním otevření budete vyzváni k dokončení základního nastavení (uživatelské jméno, heslo atd.). Dalším nezbytným krokem je aktualizace mezipaměti balíčků a systému v dané distribuci.

sudo apt update && sudo apt -y upgrade

Dále je vhodné zajistit, aby WSL používalo nejnovější jádro dostupné pro Windows. Z PowerShellu spusťte:

  Jak používat Sudo v Linuxu a bezpečně ho spravovat

wsl - aktualizace

Tato kombinace kroků vám zanechá aktualizovaný Ubuntu na WSL2 , ideální jako základ pro instalace CUDA, ML frameworky nebo dokonce Docker.

Instalace ovladače NVIDIA s podporou CUDA pro WSL2

Ovladače NVIDIA CUDA pro WSL2

Kritickým faktorem pro použití grafické karty CUDA ve WSL2 je ovladač NVIDIA nainstalovaný ve Windows , nikoli v Linuxu. Mnoho lidí se mylně domnívá, že je nutné ovladač nainstalovat i v rámci linuxové distribuce, ale pro WSL2 to není nutné.

Ovladač s podporou CUDA a WSL si musíte stáhnout z oficiální stránky NVIDIA věnované WSL (nebo z obecného vyhledávače ovladačů, kde vyberete svou grafickou kartu a systém). Je důležité nepoužívat zastaralý ovladač: podpora WSL2 a GPU se dočkala podstatných vylepšení.

Jakmile je ovladač nainstalován ve Windows, můžete ověřit, zda systém správně rozpoznává grafickou kartu a ovladač pomocí PowerShellu. Spusťte příkaz, který zobrazí informace o adaptéru, nebo jednoduše otevřete ovládací panel NVIDIA a zkontrolujte verzi. Pokud vše funguje správně, příkaz `nvidia-smi` z WSL vrátí seznam dostupných zařízení CUDA.

V serverových scénářích (například Windows Server s WSL2) je pracovní postup podobný: nejprve nainstalujete WSL a linuxovou distribuci a poté ovladač NVIDIA pro Windows Server . Dále na straně Linuxu nainstalujete pouze sadu nástrojů CUDA a potřebné knihovny, bez jakýchkoli dalších ovladačů GPU v jádře WSL.

Instalace CUDA Toolkit, cuDNN a základních nástrojů v rámci WSL2

S připraveným WSL a ovladačem NVIDIA je čas nakonfigurovat vývojové prostředí v Linuxu. Cílem je mít nainstalované CUDA Toolkit, cuDNN a základní nástroje Pythonu , abyste mohli kompilovat, spouštět příklady a pohodlně pracovat s ML frameworky.

Existují dva přístupy: použití oficiálních repozitářů NVIDIA pro WSL/Ubuntu nebo použití balíčku nvidia-cuda-toolkit z vaší distribuce. Pro moderní pracovní postupy je nejlepší přidat repozitáře NVIDIA specifické pro vaši distribuci, protože jsou obvykle aktuálnější než generické balíčky.

Z terminálu Ubuntu ve WSL2 můžete přidat repozitáře a poté nainstalovat CUDA. Alternativní, jednodušší přístup v některých prostředích je:

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

Pokud používáte tento balíček, ujistěte se, že verze CUDA, kterou instaluje, je kompatibilní s verzemi PyTorch nebo TensorFlow, které plánujete používat. Po instalaci je vhodné přidat cestu k binárním souborům CUDA do proměnné prostředí PATH , například úpravou souboru ~/.bashrc a přidáním řádku takto:

export PATH=/domov/uživatel/.local/bin${CESTA:+:${CESTA}}

Po uložení a zavření jednoduše otevřete novou terminálovou relaci nebo spusťte `source ~/.bashrc` , aby se změny projevily. Odtud můžete použít nástroje jako nvcc nebo spustit ukázkové skripty, které používají CUDA.

Používání Dockeru a NVIDIA Container Toolkit ve WSL2

Docker a GPU ve WSL2

V mnoha pracovních postupech strojového učení, zejména ve velkých podnicích nebo projektech, je běžnou praxí zapouzdřovat vše do kontejnerů. Abyste mohli využít GPU z Dockeru v rámci WSL2, potřebujete, aby měl Docker engine přístup k GPU prostřednictvím sady NVIDIA Container Toolkit.

Existují dvě hlavní možnosti: nainstalovat Docker Desktop na Windows a využít jeho integraci s WSL2, nebo přímo nainstalovat Docker engine na linuxovou distribuci v rámci WSL. V druhém případě to můžete udělat pomocí:

curl https://get.docker.com | sh
spuštění dockeru služby sudo

Jakmile je Docker nainstalován, je čas nakonfigurovat stabilní repozitář NVIDIA Container Toolkit. Pro Ubuntu v rámci WSL můžete postupovat podle typické sekvence: definujte distribuční proměnnou počínaje /etc/os-release, přidejte klíč GPG a seznam repozitářů NVIDIA pro nvidia-docker.

Pak nainstalujete potřebný balíček pomocí:

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

S tímto nastavením můžete spouštět kontejnery, které vidí GPU, pomocí volby `--gpus` . Například pro oficiální kontejner TensorFlow na NGC:

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

V tomto kontejneru je již připraveno mnoho příkladů. Můžete například přejít na příklady CNN od NVIDIA a spustit předtrénovanou ResNet:

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

V serverových prostředích s více GPU můžete také vyzkoušet vzorové kontejnery, jako je klasický CUDA nbody , abyste ověřili, zda všechny karty správně reagují prostřednictvím Dockeru:

Spuštění dockeru –rm -it –gpus=all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark -numdevices=5

TensorFlow, PyTorch a DirectML ve WSL2

WSL2 se neomezuje pouze na čistý CUDA: umožňuje také využít TensorFlow-DirectML a PyTorch-DirectML , což je obzvláště zajímavé, pokud máte grafickou kartu AMD nebo Intel, nebo pokud chcete využít DirectML i s kartou NVIDIA.

  Obnovení a zotavení poškozeného lokálního řadiče domény

Výchozí bod je stejný: aktualizovaný ovladač GPU od dodavatele nainstalovaného ve Windows, ať už se jedná o AMD, Intel nebo NVIDIA. Odtud si v rámci linuxové distribuce vytvoříte virtuální prostředí Pythonu. Běžnou možností je použití Minicondy.

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
aktivace conda directml

Po aktivaci prostředí nainstalujte požadovaný framework. Pro TensorFlow-DirectML :

pip nainstalovat tensorflow-directml

A pro PyTorch-DirectML si nejprve projdete některé základní závislosti BLAS a LAPACK a poté nainstalujete odpovídající balíček:

sudo apt install liblas3 libomp5 liblapack3
pip install torch-directml

Chcete-li ověřit, že vše funguje, můžete otevřít relaci Pythonu a zkusit jednoduchou operaci (například tenzorový součet) a zkontrolovat, zda se nevyskytují žádné chyby a zda je ve výstupu frameworku detekována akcelerace DirectML.

Instalace PyTorchu s podporou CUDA ve WSL2

Pokud je vaším cílem používat PyTorch s tradičním CUDA na grafické kartě NVIDIA, nejjednodušší je nainstalovat verzi speciálně navrženou pro konkrétní verzi CUDA, například CUDA 11.8 . PyTorch poskytuje specifické indexy pro kompatibilní volanty.

Jakmile budete mít připravené Python a pip nebo prostředí Conda, můžete spustit něco jako:

pip3 instalace pochodně torchvision torchaudio –index-url https://download.pytorch.org/whl/cu118

Chcete-li ověřit, zda PyTorch správně vidí GPU, vstupte do interaktivní konzole Pythonu v rámci WSL2 a spusťte:

dovozní pochodeň
torch.cuda.device_count()
torch.cuda.is_available()

První příkaz importuje PyTorch, druhý vám řekne, kolik zařízení kompatibilních s CUDA systém detekuje, a třetí vrátí True, pokud je GPU pro framework k dispozici. Pokud se něco pokazí, obvyklými kroky jsou kontrola ovladačů, verze CUDA a aktuálního WSL.

V prostředích s více GPU umožňuje PyTorch také omezit použití na určité karty pomocí proměnných prostředí, jako je CUDA_VISIBLE_DEVICES nebo specifických API pro výběr zařízení, což je užitečné při sdílení počítače s více procesy nebo uživateli.

TensorFlow s CUDA na WSL2 a plným ML flow

TensorFlow může také využít GPU ve WSL2 prostřednictvím CUDA, zejména v kombinaci s obrazy NVIDIA Docker nebo pečlivě spravovanými instalacemi z repozitářů CUDA a cuDNN. Typický postup zahrnuje:

1) Nainstalujte ovladač NVIDIA s podporou CUDA ve WindowsJak jsme již zmínili, zajišťuje se tím, že verze je kompatibilní s verzí TensorFlow, kterou budete používat.
2) Nakonfigurujte ve WSL2 Sada nástrojů CUDA a cuDNN podle oficiálního průvodce NVIDIA CUDA ve WSL.
3) Volitelně použijte obraz NGC TensorFlow s podporou GPU, který je již upraven se správnými verzemi CUDA/cuDNN, čímž se předejde problémům s kompatibilitou knihoven.

Jakmile vaše prostředí rozpozná GPU (můžete si to ověřit pomocí `nvidia-smi` z WSL2), můžete trénovat náročné modely přímo z Linuxu na Windows, bez plnohodnotných virtuálních strojů nebo nutnosti nahrávat vše do cloudu. Obvykle se to kombinuje s VS Code Remote – WSL a Jupyterem pro pohodlnou práci na noteboocích.

Pro začátečníky je dobrým způsobem, jak se seznámit s jednoduchými příklady neuronových sítí, sledovat spotřebu v nvidia-smi a experimentovat s velikostí dávky, počtem vrstev nebo přesností (FP16/FP32), aby se zjistilo, jak se mění zatížení GPU.

Ověřování a monitorování přístupu k GPU

Před zahájením trénování velkých modelů je klíčové ověřit, zda je vše správně nakonfigurováno. Od verze WSL2 je nejvhodnější příkaz `nvidia-smi` , který by měl zobrazit seznam GPU, celkovou a použitou paměť, využití GPU, teplotu atd.

Pokud příkaz vrátí zprávu typu „Nebyla nalezena žádná zařízení“, obvykle to znamená, že ovladač systému Windows není správně nainstalován nebo že WSL není aktuální . V mnoha případech lze tento problém vyřešit takto:

wsl – vypnutí

a znovuotevření distribuce pro opětovné načtení prostředí nebo aktualizace ovladačů a restartování systému. Existují také další nástroje, jako je gpustat , které poskytují uživatelsky přívětivější přehled o zatížení GPU.

Během dlouhých tréninkových sezení je vhodné používat samostatnou konzoli s nvidia-smi nebo monitorovacími skripty pro sledování teploty, využití paměti a kapacity systému . To pomáhá odhalit úzká hrdla (například nedostatek VRAM) nebo problémy s výkonem v důsledku špatné konfigurace.

Výběr grafické karty (GPU) v systémech s více grafickými kartami (NVIDIA, AMD, iGPU)

Moderní notebooky a stolní počítače často mívají více grafických karet: například integrovanou grafickou kartu Intel nebo AMD a dedikovanou grafickou kartu NVIDIA . Od WSL2, a zejména s WSLg pro grafické aplikace, je důležité si umět vybrat, kterou z nich použít.

  Šest nejlepších antivirových programů pro firmy, které pomáhají chránit firemní data

Společnost Microsoft dokumentuje mechanismy pro výběr GPU ve WSLg a uživatelé, kteří se setkali se situacemi, kdy jejich aplikace používala iGPU, problém vyřešili podle oficiálního průvodce výběrem GPU ve WSLg, který je k dispozici v repozitáři microsoft/wslg na GitHubu.

Navíc v prostředích, kde je DirectML podporováno na více GPU, lze konkrétní zařízení vybrat pomocí proměnné prostředí:

export MESA_D3D12_DEFAULT_ADAPTER_NAME=» »

Tato proměnná porovnává řetězce s názvy adaptérů, takže pokud zadáte například „NVIDIA“ , vybere se první grafická karta, jejíž název začíná na NVIDIA. To je užitečný trik, když systém standardně nastaví nesprávnou grafickou kartu (například upřednostňuje integrovanou grafickou kartu AMD před dedikovanou grafickou kartou NVIDIA pro určité úlohy strojového učení).

V obzvláště problematických případech (například při použití FAISS nebo jiných komponent v rámci frameworků jako LangChain nebo Ollama) se může stát, že se připojí k nesprávné grafické kartě, i když je NVIDIA ve WSL viditelná. V těchto situacích je obvykle nutné kombinovat konfiguraci WSLg, výše zmíněnou proměnnou prostředí a specifická nastavení knihovny, abyste vynutili připojení správného zařízení.

Osvědčené postupy a řešení běžných problémů

Jakmile je vše spuštěno a funkční, existuje několik osvědčených postupů, které výrazně ovlivní každodenní pohodlí a výkon. Prvním je vždy pracovat s virtuálními prostředími Pythonu nebo conda a aktivovat je před spuštěním jakéhokoli školení:

zdroj ~/.venvs/ml/bin/activate (nebo ekvivalentní příkaz ve vaší konfiguraci)

Udržování aktuálního souboru requirements.txt s klíčovými závislostmi (například pomocí pip freeze > requirements.txt ) usnadňuje obnovení prostředí na jiném počítači nebo po formátování bez problémů.

Dalším důležitým doporučením je vyhnout se práci přímo v adresáři /mnt/c/ pro trénovací data nebo velké projekty. Výkon disku je obvykle mnohem lepší, pokud používáte domovský adresář Linuxu ve WSL (například ~/proyectos_ml ), zejména při práci s mnoha soubory nebo velkými objemy dat.

Pro interaktivní vývoj nabízí VS Code s rozšířením Remote – WSL a podporou Jupyteru velmi pohodlné prostředí: upravujete ve Windows, spouštíte v Linuxu s GPU a vše je poměrně integrované. Navíc můžete použít nástroje jako tmux nebo screen, aby školení běžela na pozadí i po zavření okna terminálu.

Pokud sdílíte počítač nebo máte paralelně spuštěné náročné procesy, můžete chtít upravit limity zdrojů v souboru Windows .wslconfig (například RAM a počet jader, které WSL2 může použít) a ručně ovládat spuštění náročných tréninkových relací, abyste předešli pádu systému.

Pokud jde o řešení problémů, mezi nejčastější problémy patří nedetekce GPU nvidia-smi (kvůli nesprávnému ovladači nebo zastaralému WSL), nekompatibilita mezi verzemi CUDA a frameworky (PyTorch/TensorFlow) a instalace CUDA přímo z webu bez dodržování oficiálních repozitářů a průvodců WSL, což často vede ke konfliktům knihoven. Obecně je lepší spoléhat se na repozitáře a dokumentaci specifické pro WSL než na generické instalace.

Se všemi těmito prvky správně nakonfigurovanými – moderním Windows 11 nebo 10, aktualizovaným WSL2, správnými ovladači GPU, CUDA/cuDNN v distribuci, Dockerem a/nebo DirectML dle potřeby – můžete mít vysoce výkonné linuxové prostředí pro AI a ML na svém vlastním notebooku nebo stolním počítači , aniž byste obětovali pohodlí Windows. Jedná se o velmi výkonné hybridní řešení, které při správném naladění umožňuje rychle trénovat složité modely, vytvářet prototypy pracovních postupů a ladit kód, aniž byste se museli silně spoléhat na těžkopádné virtuální stroje nebo cloud.

Isaac

Isaac

Vášnivý spisovatel o světě bytů a technologií obecně. Rád sdílím své znalosti prostřednictvím psaní, a to je to, co budu dělat v tomto blogu, ukážu vám všechny nejzajímavější věci o gadgetech, softwaru, hardwaru, technologických trendech a dalších. Mým cílem je pomoci vám orientovat se v digitálním světě jednoduchým a zábavným způsobem.