Instalacija NVIDIA drajvera i CUDA toolkit-a na Linux serveru
Bez ispravnog drajvera nijedan alat iz ovog serijala neće videti grafičku karticu. Neće prijaviti grešku — samo će tiho preći na procesor i raditi deset puta sporije, o čemu govori prethodni tekst.
Postupak je kratak kada se zna redosled, i mučan kada se ne zna. Ovaj tekst pokriva četiri distribucije, proveru da je sve stvarno legalo i tri greške koje odnose najviše vremena.
Šta ti zapravo treba
Ovde se gubi najviše vremena bez potrebe, pa da odmah raščistimo.
| Komponenta | Šta radi | Treba li ti |
|---|---|---|
| Kernel drajver | Omogućava sistemu da vidi karticu | Uvek |
| CUDA runtime | Biblioteke za izvršavanje CUDA koda | Dolazi uz drajver |
| CUDA toolkit | Kompajler nvcc i razvojna zaglavlja |
Samo ako sam kompajliraš |
Za Ollamu i vLLM dovoljan je drajver. Toolkit od nekoliko gigabajta koji svi instaliraju „za svaki slučaj" treba ti tek ako kompajliraš llama.cpp iz izvornog koda. Kreni bez njega.
Verzija drajvera određuje najvišu podržanu CUDA verziju, ne obrnuto. Noviji drajver pokreće starije CUDA aplikacije bez problema, pa je pravilo jednostavno: uzmi najnoviji stabilan drajver iz repozitorijuma svoje distribucije.
Provera pre početka
Da li sistem uopšte vidi karticu:
$ lspci | grep -i nvidia 01:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
Ako ovde nema ničega, drajver nije problem — proveri da li je kartica dobro nalegla, ima li napajanje i da li je u BIOS-u uključena.
Da li već postoji neki drajver:
$ lsmod | grep -E 'nvidia|nouveau' nouveau 2555904 0
Učitan nouveau je otvoreni drajver iz kernela. Za AI ne služi ničemu i mora da se skloni — instalacioni paketi to rade sami, pa ga ne diraj ručno osim ako baš mora.
Ubuntu
Najjednostavniji slučaj. Ubuntu ima alat koji sam prepoznaje karticu i predlaže drajver.
$ sudo apt update $ sudo apt install -y ubuntu-drivers-common $ sudo ubuntu-drivers devices == /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 == modalias : pci:v000010DEd00002204sv... vendor : NVIDIA Corporation model : GA102 [GeForce RTX 3090] driver : nvidia-driver-570-server - distro non-free recommended driver : nvidia-driver-570 - distro non-free driver : xserver-xorg-video-nouveau - distro free builtin
Na serveru bez grafičkog okruženja uzmi varijantu sa nastavkom -server, koja ne povlači X paketе:
$ sudo apt install -y nvidia-driver-570-server $ sudo reboot
Ako ti je svejedno koja verzija, prepusti alatu:
$ sudo ubuntu-drivers install --gpgpu
Debian
Drajver je u non-free komponenti, koja podrazumevano nije uključena.
$ sudo nano /etc/apt/sources.list
Redovima dodaj contrib non-free non-free-firmware:
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
Zatim:
$ sudo apt update $ sudo apt install -y linux-headers-$(uname -r) nvidia-driver firmware-misc-nonfree $ sudo reboot
Zaglavlja kernela nisu opciona — bez njih se modul ne može izgraditi.
Debian je konzervativan, pa je verzija u stabilnom izdanju često nekoliko generacija stara. Za noviju uzmi bookworm-backports ili NVIDIA repozitorijum iz sledećeg odeljka.
RHEL, Rocky, AlmaLinux
Ovde ide NVIDIA repozitorijum. Zameni rhel9 svojom verzijom.
$ sudo dnf install -y epel-release
$ sudo dnf config-manager --add-repo \
https://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64/cuda-rhel9.repo
$ sudo dnf clean all
$ sudo dnf module install -y nvidia-driver:latest-dkms
$ sudo reboot
DKMS varijanta ponovo gradi modul pri svakom ažuriranju kernela. Na serveru je to ono što želiš — bez nje ti kartica nestane posle prvog dnf update koji dotakne kernel.
Ako dnf module ne postoji u tvojoj verziji:
$ sudo dnf install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r) $ sudo dnf install -y nvidia-driver nvidia-driver-cuda
Fedora
Preko RPM Fusion repozitorijuma:
$ sudo dnf install -y \
https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
$ sudo dnf install -y akmod-nvidia
$ sudo reboot
Modul se gradi u pozadini posle instalacije i tome treba nekoliko minuta. Ne restartuj odmah — sačekaj da se izgradnja završi:
$ modinfo -F version nvidia 570.133.07
Dok ova komanda ne vrati verziju, restart će te ostaviti bez drajvera.
Secure Boot
Ako je Secure Boot uključen, kernel odbija nepotpisane module i drajver neće raditi bez obzira na to što je uredno instaliran.
$ mokutil --sb-state SecureBoot enabled
Dve mogućnosti. Prva je isključivanje Secure Boot-a u BIOS-u — najbrže, ali smanjuje zaštitu sistema. Druga je potpisivanje modula sopstvenim ključem.
$ sudo mokutil --import /var/lib/dkms/mok.pub
Alat traži lozinku koju ćeš uneti pri sledećem podizanju sistema. Posle restarta pojavljuje se plavi MOK Manager ekran: izaberi Enroll MOK, potvrdi ključ i unesi lozinku.
Ovaj ekran se pojavljuje samo jednom i traje oko deset sekundi. Ako propustiš prozor, sistem se podiže bez ključa i sve moraš iznova — zato ovaj korak ne radi preko udaljene sesije bez pristupa konzoli.
Provera da sve radi
$ nvidia-smi +-----------------------------------------------------------------------------+ | NVIDIA-SMI 570.133.07 Driver Version: 570.133.07 CUDA Version: 12.8 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 NVIDIA GeForce RTX 3090 Off | 00000000:01:00.0 Off | N/A | | 30% 34C P8 24W / 350W | 0MiB / 24576MiB | 0% Default | +-------------------------------+----------------------+----------------------+
Ovo je jedina provera koja je bitna. CUDA Version u zaglavlju je najviša verzija koju drajver podržava, ne ono što je instalirano.
Da je modul zaista učitan:
$ lsmod | grep nvidia nvidia_uvm 1560576 0 nvidia_drm 77824 0 nvidia_modeset 1290240 1 nvidia_drm nvidia 62881792 2 nvidia_uvm,nvidia_modeset
nvidia_uvm mora biti tu — bez njega CUDA aplikacije ne rade, iako nvidia-smi uredno prijavljuje karticu.
Podešavanje za server
Uključi trajni režim da se drajver ne rasterećuje između poziva:
$ sudo nvidia-smi -pm 1 Enabled persistence mode for GPU 00000000:01:00.0.
Bez toga se pri svakom pokretanju modela gubi nekoliko sekundi na inicijalizaciju. Da preživi restart, napravi servis:
$ sudo systemctl enable --now nvidia-persistenced
Ako paket ne postoji, dodaj sopstvenu jedinicu:
$ sudo tee /etc/systemd/system/nvidia-pm.service > /dev/null <<'EOF' [Unit] Description=NVIDIA persistence mode After=multi-user.target [Service] Type=oneshot ExecStart=/usr/bin/nvidia-smi -pm 1 RemainAfterExit=yes [Install] WantedBy=multi-user.target EOF $ sudo systemctl daemon-reload $ sudo systemctl enable --now nvidia-pm.service
CUDA toolkit, ako ti ipak treba
Samo za kompajliranje. Na Ubuntu:
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb $ sudo dpkg -i cuda-keyring_1.1-1_all.deb $ sudo apt update $ sudo apt install -y cuda-toolkit-12-8
Paket cuda-toolkit-* ne dira drajver. Paket cuda bez nastavka povlači i drajver iz NVIDIA repozitorijuma, što ume da se sudari sa onim iz distribucije — ne instaliraj ga.
Putanja nije podrazumevano u okruženju:
$ echo 'export PATH=/usr/local/cuda/bin:$PATH' | sudo tee /etc/profile.d/cuda.sh $ source /etc/profile.d/cuda.sh $ nvcc --version Cuda compilation tools, release 12.8, V12.8.61
Praktični scenariji
Scenario 1: nvidia-smi ne nalazi karticu
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver.
Redom: da li je modul učitan (lsmod | grep nvidia), da li je Secure Boot uključen (mokutil --sb-state) i da li je bilo restarta posle instalacije. U devedeset odsto slučajeva odgovor je jedan od ta tri.
Scenario 2: sve je radilo, pa je prestalo posle ažuriranja
Novi kernel, a modul nije prebačen. Zato je DKMS obavezan na serveru:
$ dkms status nvidia/570.133.07, 6.8.0-51-generic, x86_64: installed nvidia/570.133.07, 6.8.0-52-generic, x86_64: installed
Ako novi kernel nedostaje u ispisu, izgradi modul ručno:
$ sudo dkms autoinstall
Scenario 3: nvidia-smi radi, ali Ollama ne vidi karticu
Najčešće nedostaje nvidia_uvm. Učitaj ga:
$ sudo modprobe nvidia_uvm
Ako pomogne, dodaj ga u /etc/modules-load.d/nvidia.conf da se učitava sam.
Scenario 4: dve kartice, koristi se samo jedna
Proveri da ih sistem obe vidi, pa ograniči ili proširi vidljivost promenljivom:
$ nvidia-smi -L GPU 0: NVIDIA GeForce RTX 3090 (UUID: GPU-a1b2...) GPU 1: NVIDIA GeForce RTX 3090 (UUID: GPU-c3d4...) $ CUDA_VISIBLE_DEVICES=0,1 ollama serve
Scenario 5: instalacija javlja da nedostaju zaglavlja
ERROR: Unable to find the kernel source tree
Instaliraj zaglavlja za tačno onaj kernel koji je pokrenut, ne za najnoviji dostupan:
$ sudo apt install -y linux-headers-$(uname -r)
Kratka referenca
lspci | grep -i nvidia— da li sistem vidi karticuubuntu-drivers devices— predlog drajvera na Ubuntunvidia-driver-XXX-server— varijanta bez X paketadnf module install nvidia-driver:latest-dkms— RHEL i derivatiakmod-nvidia— Fedora, preko RPM Fusionlinux-headers-$(uname -r)— obavezno pre instalacijemokutil --sb-state— stanje Secure Boot-amokutil --import— upis ključa za potpisivanje modulanvidia-smi— glavna proveralsmod | grep nvidia—nvidia_uvmmora biti tunvidia-smi -pm 1— trajni režimdkms status— modul po kernelimadkms autoinstall— ručna izgradnja posle novog kernelanvidia-smi -L— spisak karticaCUDA_VISIBLE_DEVICES— izbor kartica za proces- Toolkit — samo za kompajliranje, ne za pokretanje
Vežba
- Utvrdi model svoje kartice preko
lspcii pronađi koliko ima memorije. - Instaliraj drajver po uputstvu za svoju distribuciju i potvrdi
nvidia-smiispisom. - Proveri da li je
nvidia_uvmučitan. Ako nije, učitaj ga i podesi da se učitava pri podizanju. - Uključi trajni režim i napravi systemd jedinicu koja ga postavlja posle svakog restarta.
- Pogledaj
dkms statusi objasni šta bi se desilo pri sledećem ažuriranju kernela da DKMS nije u igri.
Sledeći tekst u serijalu: nvidia-smi i nvtop — praćenje GPU-a iz terminala
Povezano:
- AI na Linux serveru — pregled celog serijala
- CPU inferencija naspram GPU inferencije — prethodni tekst
- Ollama: instalacija na Linux serveru — sledeći korak posle drajvera
- Administracija i servisi — systemd i upravljanje servisima
Comments
Post a Comment