GPU ile Ollama Hızlandırma: CUDA ve ROCm Kurulumu

Yerel LLM çalıştırmanın en büyük darboğazı, şüphesiz ki işlem gücüdür. CPU üzerinde çalışan bir model, her token üretiminde saniyeler harcayabilir ve bu durum günlük kullanımı neredeyse imkansız hale getirir. GPU hızlandırma devreye girdiğinde ise aynı model onlarca kat daha hızlı çalışır ve Ollama gerçekten kullanılabilir bir araca dönüşür. Bu yazıda hem NVIDIA (CUDA) hem de AMD (ROCm) GPU’lar için Ollama kurulumunu adım adım ele alacağız, yaygın hataları ve çözümlerini paylaşacağız.

Neden GPU Hızlandırma Bu Kadar Önemli?

Bir örnek verelim: llama3.1:8b modelini CPU üzerinde çalıştırdığınızda, orta seviye bir sunucuda saniyede 3-5 token üretimi elde edersiniz. Aynı modeli bir NVIDIA RTX 3080 üzerinde çalıştırdığınızda bu rakam 60-80 token/saniyeye çıkar. Farkı daha somut yapalım: 500 kelimelik bir yanıt için CPU’da 3-4 dakika beklerken, GPU ile bu süre 10 saniyenin altına düşer.

GPU hızlandırmanın temel avantajları:

  • Paralel işlem: GPU binlerce çekirdeğiyle matris çarpımlarını eş zamanlı hesaplar
  • Bant genişliği: Modern GPU’lar CPU’ya kıyasla çok daha yüksek bellek bant genişliğine sahiptir
  • VRAM yönetimi: Model ağırlıkları VRAM’de tutulunca her istekte tekrar yükleme yapılmaz
  • Katman dağıtımı: Model VRAM’e sığmıyorsa, katmanlar GPU ve CPU arasında dağıtılabilir

NVIDIA GPU: CUDA Kurulumu

Sistem Gereksinimlerini Kontrol Etme

Önce GPU’nuzun CUDA destekleyip desteklemediğini ve hangi compute capability değerine sahip olduğunu öğrenin. Ollama için CUDA 11.8 veya üzeri gereklidir ve GPU’nuzun compute capability değeri en az 5.0 olmalıdır.

# GPU bilgilerini görüntüle
lspci | grep -i nvidia

# Eğer nvidia-smi zaten kuruluysa
nvidia-smi

# Kernel modülü yüklü mü?
lsmod | grep nvidia

NVIDIA Sürücü Kurulumu (Ubuntu/Debian)

Sürücü seçimi kritik bir adımdır. Ubuntu’nun önerdiği ubuntu-drivers aracını kullanmak en güvenli yoldur:

# Sistemi güncelle
sudo apt update && sudo apt upgrade -y

# Ubuntu GPU sürücü yönetim aracını kur
sudo apt install ubuntu-drivers-common -y

# Önerilen sürücüleri listele
ubuntu-drivers devices

# Otomatik olarak önerilen sürücüyü kur
sudo ubuntu-drivers autoinstall

# Veya belirli bir sürüm için (örneğin 545)
sudo apt install nvidia-driver-545 -y

# Yeniden başlat
sudo reboot

Kurulum sonrası doğrulama:

# Sürücü ve GPU bilgisi
nvidia-smi

# Beklenen çıktı formatı:
# +-----------------------------------------------------------------------------+
# | NVIDIA-SMI 545.23.08    Driver Version: 545.23.08    CUDA Version: 12.3     |
# |-------------------------------+----------------------+----------------------+
# | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
# | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |

CUDA Toolkit Kurulumu

CUDA Toolkit’i NVIDIA’nın resmi deposundan kurmak en sağlıklı yöntemdir. Dikkat edilmesi gereken nokta: CUDA Toolkit sürümünün sürücü sürümünüzle uyumlu olması gerekir.

# NVIDIA CUDA deposunu ekle (Ubuntu 22.04 örneği)
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update

# CUDA Toolkit kur (12.3 örneği)
sudo apt install cuda-toolkit-12-3 -y

# PATH ve LD_LIBRARY_PATH ayarla
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

# CUDA kurulumunu doğrula
nvcc --version

Ollama’yı CUDA ile Kurma

# Resmi Ollama kurulum scripti CUDA'yı otomatik algılar
curl -fsSL https://ollama.com/install.sh | sh

# Servis durumunu kontrol et
sudo systemctl status ollama

# GPU'nun kullanılıp kullanılmadığını doğrula
ollama run llama3.2:3b "Merhaba, GPU kullanıyor musun?"

# Ayrı bir terminalde GPU kullanımını izle
watch -n 1 nvidia-smi

Ollama çalışırken nvidia-smi çıktısında GPU Util değerinin yükseldiğini ve Memory-Usage kısmında model ağırlıklarının yüklendiğini görmelisiniz. Eğer GPU Util sıfır kalıyorsa, bir şeyler ters gidiyor demektir.

CUDA Sorunlarını Giderme

Gerçek dünyada en sık karşılaşılan senaryo şudur: Ollama kurulu ve çalışıyor, ancak GPU’yu kullanmıyor. Bunu teşhis etmek için:

# Ollama loglarını kontrol et
sudo journalctl -u ollama -f

# GPU'nun Ollama tarafından görülüp görülmediğini test et
ollama run llama3.2:3b ""
# /info komutunu dene (bazı sürümlerde mevcut)

# CUDA kütüphanelerinin erişilebilir olup olmadığını kontrol et
ldconfig -p | grep libcuda
ldconfig -p | grep libcublas

# Ollama'nın ortam değişkenlerini kontrol et
sudo systemctl cat ollama

# Gerekirse CUDA path'i servis dosyasına ekle
sudo systemctl edit ollama

Servis dosyasına eklenmesi gereken satırlar:

# /etc/systemd/system/ollama.service.d/override.conf içeriği
[Service]
Environment="PATH=/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Environment="LD_LIBRARY_PATH=/usr/local/cuda/lib64"

# Değişiklikleri uygula
sudo systemctl daemon-reload
sudo systemctl restart ollama

AMD GPU: ROCm Kurulumu

AMD GPU’lar için durum NVIDIA’ya kıyasla biraz daha karmaşıktır. ROCm (Radeon Open Compute) ekosistemi son yıllarda ciddi şekilde olgunlaştı, ancak desteklenen GPU listesine dikkat etmek gerekiyor.

Desteklenen AMD GPU’lar

Ollama ile ROCm kullanımı için resmi olarak desteklenen GPU ailelerinin başında RDNA2 (RX 6000 serisi), RDNA3 (RX 7000 serisi) ve kurumsal tarafta Instinct MI serisi gelir. Bazı RDNA1 kartlar (RX 5000 serisi) deneysel destek ile çalışabilir.

ROCm Kurulumu (Ubuntu 22.04)

# Sistem gereksinimlerini kontrol et
uname -m && cat /etc/os-release

# ROCm deposunu ekle
sudo apt update
wget https://repo.radeon.com/amdgpu-install/6.1.1/ubuntu/jammy/amdgpu-install_6.1.60101-1_all.deb
sudo dpkg -i amdgpu-install_6.1.60101-1_all.deb
sudo apt update

# ROCm ve GPU sürücülerini kur
sudo amdgpu-install --usecase=rocm,graphics -y

# Kullanıcıyı gerekli gruplara ekle
sudo usermod -a -G render,video $USER

# Oturumu yeniden aç veya reboot
sudo reboot

Kurulum sonrası doğrulama:

# ROCm kurulumunu doğrula
rocminfo

# GPU'yu listele
rocm-smi

# HIP (CUDA muadili) versiyonunu kontrol et
hipcc --version

# Ollama'nın GPU'yu görmesi için HSA değişkenleri
echo 'export HSA_OVERRIDE_GFX_VERSION=11.0.0' >> ~/.bashrc  # RX 7000 için
source ~/.bashrc

Resmi Olarak Desteklenmeyen AMD GPU’lar için Geçici Çözüm

Pek çok sysadmin’in karşılaştığı gerçek dünya senaryosu: Elinizdeki RX 6600 veya RX 6700 gibi bir kart, Ollama’nın desteklediği listede yok ama ROCm destekliyor. Bu durumda HSA_OVERRIDE_GFX_VERSION değişkeni hayat kurtarıcıdır:

# GPU mimarisini öğren
rocminfo | grep "gfx"

# Çıktıdaki gfx değerine göre ayarla
# RX 6600/6700 (gfx1032/gfx1031) için:
export HSA_OVERRIDE_GFX_VERSION=10.3.0

# RX 6800/6900 (gfx1030) için:
export HSA_OVERRIDE_GFX_VERSION=10.3.0

# Ollama servisine bu değişkeni ekle
sudo systemctl edit ollama
# Override dosyası içeriği
[Service]
Environment="HSA_OVERRIDE_GFX_VERSION=10.3.0"
Environment="ROCR_VISIBLE_DEVICES=0"

# Servisi yeniden başlat
sudo systemctl daemon-reload
sudo systemctl restart ollama

# Test et
ollama run mistral:7b "GPU hızlandırma çalışıyor mu?"

Katmanlı GPU Yüklemesi ve VRAM Optimizasyonu

Model VRAM’inize sığmıyorsa panik yapmayın. Ollama, modeli katmanlara bölerek bir kısmını GPU’da, kalanını CPU RAM’inde tutabilir. Bu hybrid mod, saf CPU çalışmasına kıyasla hala çok daha hızlıdır.

# VRAM kullanımını gerçek zamanlı izle (NVIDIA)
nvidia-smi dmon -s mu -d 1

# Kaç katmanın GPU'ya yüklendiğini görmek için Ollama API'sini kullan
curl http://localhost:11434/api/show -d '{"name": "llama3.1:70b"}' | python3 -m json.tool

# Modeli çalıştırırken log seviyesini artır
OLLAMA_DEBUG=1 ollama run llama3.1:8b "Test"

Ortam değişkenleri ile GPU katman sayısını kontrol etmek:

# OLLAMA_GPU_LAYERS değişkeni ile katman sayısını zorla
# -1: Tüm katmanları GPU'ya yükle (varsayılan davranış)
# 0: GPU kullanma, CPU modunda çalış
# 20: İlk 20 katmanı GPU'ya yükle

sudo systemctl edit ollama
# [Service] altına ekle:
# Environment="OLLAMA_GPU_LAYERS=35"

# Birden fazla GPU varsa
# Environment="CUDA_VISIBLE_DEVICES=0,1"
# Environment="OLLAMA_GPU_LAYERS=-1"

Performans Karşılaştırması ve Benchmark

Kurulum tamamlandıktan sonra gerçek performansı ölçmek için basit bir benchmark yapabilirsiniz:

#!/bin/bash
# gpu_benchmark.sh - Ollama GPU performans testi

MODEL="llama3.2:3b"
PROMPT="Türkiye'nin en uzun nehirlerini listele ve her biri hakkında kısa bilgi ver."

echo "=== Ollama GPU Benchmark ==="
echo "Model: $MODEL"
echo "Tarih: $(date)"
echo ""

# GPU bilgisi
if command -v nvidia-smi &> /dev/null; then
    echo "GPU: $(nvidia-smi --query-gpu=name --format=csv,noheader)"
    echo "VRAM: $(nvidia-smi --query-gpu=memory.total --format=csv,noheader)"
elif command -v rocm-smi &> /dev/null; then
    rocm-smi --showproductname
fi

echo ""
echo "Test başlatılıyor..."
START_TIME=$(date +%s%N)

RESPONSE=$(ollama run $MODEL "$PROMPT" 2>/dev/null)
TOKEN_COUNT=$(echo "$RESPONSE" | wc -w)

END_TIME=$(date +%s%N)
ELAPSED=$(( (END_TIME - START_TIME) / 1000000 ))

echo "Tamamlandı!"
echo "Süre: ${ELAPSED}ms"
echo "Yaklaşık kelime sayısı: $TOKEN_COUNT"
echo "Ortalama hız: $(echo "scale=2; $TOKEN_COUNT / ($ELAPSED / 1000)" | bc) kelime/saniye"
chmod +x gpu_benchmark.sh
./gpu_benchmark.sh

Docker ile GPU Hızlandırmalı Ollama

Production ortamında Docker kullanıyorsanız, GPU desteğini container’a aktarmak için ek adımlar gerekir:

# NVIDIA Container Toolkit kurulumu
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | 
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | 
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

sudo apt update
sudo apt install nvidia-container-toolkit -y

# Docker'ı NVIDIA runtime için yapılandır
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

# GPU destekli Ollama container'ı başlat
docker run -d 
    --gpus all 
    --name ollama 
    -v ollama:/root/.ollama 
    -p 11434:11434 
    --restart unless-stopped 
    ollama/ollama

# AMD GPU için (ROCm)
docker run -d 
    --device /dev/kfd 
    --device /dev/dri 
    --group-add video 
    --group-add render 
    --name ollama-amd 
    -v ollama:/root/.ollama 
    -p 11434:11434 
    --restart unless-stopped 
    ollama/ollama:rocm

# Model indir ve test et
docker exec ollama ollama pull llama3.2:3b
docker exec ollama ollama run llama3.2:3b "Docker üzerinden GPU testi"

Monitoring ve Uyarı Sistemi

GPU’nuzu sürekli olarak izlemek, hem performans sorunlarını erken tespit etmek hem de donanım sağlığını korumak açısından kritiktir:

#!/bin/bash
# gpu_monitor.sh - GPU sıcaklık ve kullanım monitörü

TEMP_THRESHOLD=85  # Celsius
UTIL_LOG="/var/log/gpu_stats.log"

while true; do
    TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
    
    if command -v nvidia-smi &> /dev/null; then
        TEMP=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader)
        UTIL=$(nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader | tr -d ' %')
        MEM_USED=$(nvidia-smi --query-gpu=memory.used --format=csv,noheader)
        MEM_TOTAL=$(nvidia-smi --query-gpu=memory.total --format=csv,noheader)
        
        echo "$TIMESTAMP | Sıcaklık: ${TEMP}°C | Kullanım: ${UTIL}% | Bellek: $MEM_USED / $MEM_TOTAL" >> $UTIL_LOG
        
        if [ "$TEMP" -gt "$TEMP_THRESHOLD" ]; then
            echo "UYARI: GPU sıcaklığı $TEMP°C - Eşik değer: ${TEMP_THRESHOLD}°C" | 
                mail -s "GPU Sıcaklık Uyarısı" [email protected]
        fi
    fi
    
    sleep 60
done

Sık Karşılaşılan Hatalar ve Çözümleri

Gerçek dünyadan derlediğimiz en yaygın sorunlar:

“CUDA error: no kernel image is available for execution on the device”

Bu hata genellikle GPU compute capability uyumsuzluğundan kaynaklanır. Çözüm: Ollama’nın son sürümünü kullanmak veya CUDA Toolkit sürümünü güncellemek.

“Failed to load dynamic library ‘libcuda.so.1′”

  • ldconfig -p | grep libcuda komutu ile kütüphanenin konumunu bulun
  • /etc/ld.so.conf.d/cuda.conf dosyası oluşturup CUDA kütüphane yolunu ekleyin
  • sudo ldconfig komutunu çalıştırın

ROCm: “No GPU detected” sorunu

  • ls /dev/kfd ve ls /dev/dri çıktılarını kontrol edin
  • Kullanıcının render ve video gruplarında olduğunu doğrulayın: groups $USER
  • rocminfo komutunun herhangi bir GPU döndürüp döndürmediğini test edin

Ollama GPU’yu görüyor ama model yüklemiyor

  • Yeterli VRAM olduğundan emin olun: nvidia-smi --query-gpu=memory.free --format=csv
  • Daha küçük bir model veya quantization seviyesi deneyin (örneğin q4_0 yerine q2_k)
  • OLLAMA_MAX_VRAM ortam değişkeni ile VRAM limitini manuel ayarlayın

Sonuç

GPU hızlandırmalı Ollama kurulumu, ilk bakışta karmaşık görünse de adımları sırayla takip ettiğinizde oldukça yönetilebilir bir süreçtir. NVIDIA tarafında CUDA ekosistemi olgunluğu sayesinde kurulum genellikle sorunsuz geçer. AMD tarafında ise ROCm her geçen gün daha iyi hale geliyor ve özellikle RDNA2/RDNA3 ailesinde ciddi performans elde etmek mümkün.

En kritik noktaları özetleyelim: Sürücü, CUDA/ROCm ve Ollama sürümlerinin birbiriyle uyumlu olması gerekir. Kurulum sonrası mutlaka nvidia-smi veya rocm-smi ile GPU’nun tanındığını, ardından Ollama logları ile GPU’nun aktif kullanıldığını doğrulayın. VRAM’iniz modeli tam olarak almıyorsa, hybrid mod ile katman dağıtımından yararlanın.

Bu kurulumu tamamladıktan sonra, yerel LLM deneyiminizin tamamen farklı bir boyuta geçtiğini fark edeceksiniz. Saniyeler içinde yanıt veren bir yerel model, hem geliştirme süreçlerini hızlandırır hem de API maliyetlerinden tamamen kurtulmanızı sağlar. Bir sonraki adım olarak Ollama üzerine Open WebUI kurmayı ve birden fazla GPU’yu aynı anda kullanan multi-GPU senaryolarını incelemenizi öneririm.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir