Skip to content

Workshop Setup: uv, PyTorch 2.5+, CUDA, WSL2, Mac MPS, Triton, FlashAttention, Nsight

Modern Python + PyTorch + CUDA + Triton + FlashAttention + Nsight setup from scratch. Step-by-step for Linux, WSL2, macOS (Apple Silicon), Windows native. Why uv package manager beats pip/conda, sanity test.

Şükrü Yusuf KAYA
32 min read
Beginner
Atölye Kurulumu: uv, PyTorch 2.5+, CUDA, WSL2, Mac MPS, Triton, FlashAttention, Nsight
🛠️ Bu dersi atlamak fiyat öder
Sonraki 76 modül boyunca her gün bu ortamı kullanacaksın. Bugün doğru kurulum, ileride 50+ saatlik debug acısını engelliyor. Bu rehberi olabildiğince versiyon-tarafsız yazdık — Python 3.10/3.11/3.12, PyTorch 2.5/2.6, CUDA 12.4/12.6 hepsi geçerli. Asıl önemli olan prensip ve sıra.

Donanım Gereksinimleri#

Hangi donanımla başlayabilirsin? Üç senaryo:

Senaryo A: Sıfır Donanım — Sadece Bulut#

Minimum: Bir laptop (8GB RAM), kararlı internet, Google Colab ücretsiz hesap. Yapabileceklerin: Modül 0-10 kolay; Modül 14+ Colab Pro (10/ay)ile;ag˘ırlablarModal(10/ay) ile; ağır lab'lar Modal (5-50 kredi). İlk maliyet: $0-30 / 6 ay.

Senaryo B: Tüketici GPU (NVIDIA 30/40 serisi)#

Önerilen: RTX 4070 (12GB), 4080 (16GB), 4090 (24GB), veya kullanılmış RTX 3090 (24GB). Yapabileceklerin: 7B model FP16 inference (4090), 8B model QLoRA fine-tuning (3090/4090), tüm kod lab'ları lokal. İlk maliyet: $600-2000.

Senaryo C: Profesyonel Çoklu-GPU#

Önerilen: 2x RTX 4090, veya 1-2x A6000 Ada (48GB), veya cloud H100. Yapabileceklerin: 70B model fine-tune (2x 4090 + LoRA), pretraining deneyleri. İlk maliyet: 400015000lokal,veyacloud(4000-15000 lokal, veya cloud (2-3/saat H100).
Önerim: Senaryo A ile başla. İhtiyaç hissettiğinde B'ye geç. C nadiren gerek; Modal/Runpod ile saatlik kirala.
⚠️ AMD GPU notları
ROCm artık olgun ama LLM ekosisteminin %95'i CUDA üzerinde. AMD MI300X mükemmel donanım ama açık-kaynak araçların gecikmesi var. Sen başlangıçta NVIDIA seç; AMD'yi advanced modüllerde (Modül 36) tartışacağız. Apple Silicon (M1/M2/M3/M4) MPS ile çoğu lab çalışır; ama bazı kütüphaneler (Triton, FlashAttention, bitsandbytes) macOS'ta sınırlı.

İşletim Sistemi Seçimi#

Sıralama (LLM mühendisliği için gerçek dünya dağılımı):
  1. Linux native (Ubuntu 22.04/24.04, Pop!_OS) — En iyi. Tüm kütüphaneler, profiling araçları, performans en iyi. Cloud sunucuların %99'u Linux.
  2. WSL2 (Windows + Ubuntu) — Çok iyi. Linux deneyimi Windows'ta. Bazı I/O gecikmeleri var ama LLM iş yükü için göz ardı edilebilir.
  3. macOS (Apple Silicon) — İyi (geliştirme), kısıtlı (eğitim). MPS ile inference rahat; pre-training/fine-tuning sınırlı.
  4. Windows native — Önerilmez. PyTorch çalışır ama Triton, FlashAttention, bitsandbytes problemli. WSL2'ye geç.
Sonuç: Windows kullanıcısı → WSL2. Mac kullanıcısı → macOS ama ağır iş için cloud Linux. Linux kullanıcısı → şanslısın, başla.

Python Sürümü#

2026 itibarıyla LLM ekosistemi sweet spot'u: Python 3.11. Sebepler:
  • PyTorch 2.5+ tam destek (3.10, 3.11, 3.12)
  • vLLM Python 3.9-3.12 destekliyor (3.13 henüz değil)
  • HuggingFace transformers her sürümle çalışır
  • Triton 2.5+ 3.10-3.12 destekliyor
  • 3.13 henüz bazı binary wheel'lar için erken — kaçın
  • 3.10 hâlâ destekleniyor ama 3.11 daha hızlı (10-20%)
  • 3.9 artık çoğu kütüphanede deprecated — kaçın
Karar: Python 3.11 kur. Diğer sürümler de çalışır ama 3.11 en stabil noktayı tutuyor.

Neden
uv
(pip/conda/poetry/pipenv yerine)?#

uv
(Astral'in geliştirdiği, Ruff/ruff'un kardeşi) 2024'te yayınlandı, 2025'te endüstri standardı oldu. Neden:
Özellikuvpipcondapoetry
Kurulum hızı10–100x hızlı (Rust)YavaşYavaşOrta
Bağımlılık çözümüÇok hızlı (PubGrub)Yavaş, basitYavaşOrta
Python sürüm yönetimi✓ Otomatik kurar
Sanal ortam✓ Otomatik✗ (
venv
ayrı)
Lock dosyası
uv.lock
✗ (
requirements.txt
)
Tek binary
HuggingFace ekosistemi uyumu✓ Tam✓ Tam⚠️ Yer yer⚠️ Yer yer
Sonuç:
uv
başlangıç için en hızlı, en az hata, en az "PyTorch'um çalışmıyor" sorununa yol açan araç.
Bu kursta her ortamı
uv
ile kuracağız. Eğer mevcut
conda
/
poetry
workflow'un varsa o da çalışır, ama yardım sorduğunda
uv
ile cevap verme önceliği veririz.
bash
# Linux / WSL2 / macOS
curl -LsSf https://astral.sh/uv/install.sh | sh
 
# Windows PowerShell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
 
# Sonra terminali yeniden başlat veya:
source $HOME/.cargo/env # Linux/macOS
 
# Doğrulama
uv --version
# uv 0.5.x veya üstü görmen lazım
uv paket yöneticisini kur — tek satırlık installer.

İlk Projeni Kur#

Kurs için bir proje dizini açalım. Tüm modüllerde kullanacağız.
bash
# Çalışma dizinini oluştur
mkdir -p ~/llm-muhendisligi && cd ~/llm-muhendisligi
 
# uv projesi başlat — Python 3.11 ile
uv init --python 3.11
# Bu komut: pyproject.toml + .python-version + örnek main.py + venv otomatik
 
# Sanal ortamı aktive et (otomatik oluşturuldu)
source .venv/bin/activate # Linux/macOS/WSL
# .venv\Scripts\activate # Windows PowerShell
 
# Doğrula
python --version
# Python 3.11.x görmelisin
which python
# .../llm-muhendisligi/.venv/bin/python görmelisin
Projeyi başlat, sanal ortamı aktive et.

PyTorch 2.5+ Kurulumu (En Kritik Adım)#

PyTorch kurulumu işletim sistemine ve GPU'na göre değişir. En kötü hata kaynağı: yanlış CUDA versiyonlu wheel.
Genel kural: PyTorch'un kendi installer yardımcısını kullan: pytorch.org/get-started/locally — sana doğru komutu yazar. Aşağıdakiler 2026 başı için güncel komutlar.
Önkoşul: NVIDIA sürücüsü ve CUDA toolkit kurulu olmalı.
# Önce NVIDIA sürücüsünü kontrol et nvidia-smi # CUDA Version: 12.x görmelisin (sürücü versiyonu) # Yoksa: https://www.nvidia.com/Download/index.aspx # PyTorch 2.5 + CUDA 12.4 (önerilen 2026 başı) uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124 # CUDA 12.1 alternatifi (eski sürüm sistemler için) uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 # Doğrulama python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))" # 2.5.1+cu124 # True # NVIDIA GeForce RTX 4090 (veya benzeri)
Yaygın hatalar:
  • torch.cuda.is_available() == False
    : sürücü ve PyTorch CUDA versiyonu uyumsuz.
    nvidia-smi
    'deki CUDA versiyonu PyTorch wheel versiyonundan büyük olmalı. Sürücüyü yükselt.
  • undefined symbol: ...
    : eski CUDA kalıntısı.
    uv pip uninstall torch torchvision torchaudio
    sonra yeniden kur.

Çekirdek LLM Kütüphaneleri#

PyTorch kurulu. Şimdi kursun her modülünde kullanacağımız kütüphaneleri yükleyelim.
bash
# Aktif sanal ortamda:
uv pip install \
transformers \
datasets \
accelerate \
peft \
trl \
bitsandbytes \
sentencepiece \
tokenizers \
einops \
wandb \
jupyter \
ipykernel \
matplotlib \
pandas \
numpy \
scipy \
scikit-learn \
tqdm \
rich \
typer
 
# vLLM (Linux only, CUDA)
uv pip install vllm
 
# Triton (Linux + CUDA otomatik gelir; macOS sınırlı)
# Triton PyTorch ile birlikte gelir — ayrıca kurmaya gerek yok
 
# FlashAttention (Linux + Ampere/Hopper)
uv pip install flash-attn --no-build-isolation
 
# Doğrulama
python -c "import transformers, datasets, accelerate, peft, trl; print('Çekirdek kütüphaneler OK')"
16+ kritik kütüphaneyi tek komutla kur.
⚠️ flash-attn kurulumu uzun sürer
FlashAttention kaynaktan derleniyor (10-30 dakika alabilir, ısınma + CUDA kernel compile). Sabırlı ol. Eğer pre-built wheel mevcutsa bunun yerine:
uv pip install flash-attn --no-build-isolation --find-links https://github.com/Dao-AILab/flash-attention/releases
. Bazı GPU'lar (RTX 30 serisi) hâlâ destekliyor; RTX 20 serisi ve eskisi desteklemiyor.

Nsight Systems — Profiling Cephaneliği#

PyTorch profiler ile başlayacağız ama Senior+ seviyede Nsight Systems kullanmadan inference optimize etmek zor.
Nsight Systems NVIDIA'nın sistem-genelinde profiling aracı. CPU, GPU, NCCL, NVLink — hepsini timeline'da gösterir.
Linux/WSL2 kurulum:
bash
# NVIDIA developer hesabı ile indir:
# https://developer.nvidia.com/nsight-systems
# Linux: .run veya .deb dosyası
 
# Ubuntu için:
sudo dpkg -i NsightSystems-linux-public-2024.5.1.113-3434142.deb
 
# Doğrulama
nsys --version
# NVIDIA Nsight Systems version 2024.5.1.113
 
# Kullanım:
nsys profile -o trace python my_script.py
# trace.nsys-rep dosyası oluşur — GUI ile aç
```
Nsight Systems kurulumu — system-wide profiling.
💡 Nsight ne zaman?
Modül 5 (PyTorch Eng) ve Modül 17 (Distributed Training) için gerekli. Önce kurmak istemezsen şimdilik atla — o modüllerde detaylı kuracağız. Şimdi kurmak istersen GUI macOS'ta da çalışır (Windows host'ta) — uzaktan trace dosyasını oradan aç.

Editör & Notebook Kurulumu#

VS Code (önerilen)#

  • Visual Studio Code — ücretsiz, çoklu platform
  • Extensions:
    • Python (Microsoft)
    • Pylance — type checking
    • Jupyter — notebook desteği
    • GitHub Copilot veya Cursor entegrasyonu — AI-assisted coding
    • Ruff — hızlı linter+formatter
    • WSL extension (Windows kullanıcıları için)
    • Remote - SSH — uzak GPU sunucularına

Cursor (VS Code fork)#

  • cursor.com — VS Code'un AI-native versiyonu, çoğu LLM Engineer'ın ana editörü
  • VS Code extension'ları çoğunlukla çalışır

Jupyter#

uv pip install jupyterlab notebook ipykernel # Çekirdek kaydet python -m ipykernel install --user --name=llm-muh --display-name="LLM Mühendisliği" # Aç jupyter lab

marimo (alternatif)#

uv pip install marimo marimo edit
Jupyter'ın modern alternatifi — reactive notebook, Git-friendly format.

Sanity Test: 60 Saniyede MNIST#

Ortamın doğru kurulduğunu test etmek için MNIST classifier eğit. Eğer bu çalışıyorsa, kursa hazırsın.
python
# sanity_test.py
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.utils.data import DataLoader
from torchvision import datasets, transforms
import time
 
# Cihaz seç
if torch.cuda.is_available():
device = "cuda"
elif torch.backends.mps.is_available():
device = "mps"
else:
device = "cpu"
print(f"Cihaz: {device}")
print(f"PyTorch: {torch.__version__}")
 
# Veri
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))])
train_data = datasets.MNIST("./data", train=True, download=True, transform=transform)
test_data = datasets.MNIST("./data", train=False, transform=transform)
train_loader = DataLoader(train_data, batch_size=128, shuffle=True)
test_loader = DataLoader(test_data, batch_size=1000)
 
# Basit MLP
class Net(nn.Module):
def __init__(self):
super().__init__()
self.fc1 = nn.Linear(784, 256)
self.fc2 = nn.Linear(256, 10)
def forward(self, x):
x = x.view(-1, 784)
x = F.relu(self.fc1(x))
return self.fc2(x)
 
model = Net().to(device)
opt = torch.optim.AdamW(model.parameters(), lr=1e-3)
 
# Eğit (1 epoch)
start = time.time()
model.train()
for x, y in train_loader:
x, y = x.to(device), y.to(device)
opt.zero_grad()
loss = F.cross_entropy(model(x), y)
loss.backward()
opt.step()
elapsed = time.time() - start
 
# Değerlendir
model.eval()
correct = 0
with torch.no_grad():
for x, y in test_loader:
x, y = x.to(device), y.to(device)
pred = model(x).argmax(dim=1)
correct += (pred == y).sum().item()
acc = correct / len(test_data)
 
print(f"Eğitim süresi: {elapsed:.1f}s")
print(f"Test accuracy: {acc:.4f}")
assert acc > 0.9, "Bir şeyler yanlış — accuracy çok düşük"
print("✅ Sanity test başarılı!")
60 saniyede biten MNIST testi — ortam kontrolü.
bash
# Çalıştır
python sanity_test.py
 
# Beklenen çıktı:
# Cihaz: cuda (veya mps, cpu)
# PyTorch: 2.5.1+cu124
# Eğitim süresi: 15-60s (GPU/CPU'ya göre)
# Test accuracy: 0.96 civarı
# ✅ Sanity test başarılı!
Sanity testi çalıştır.
🔧 Hata aldıysan
(1)
torch.cuda.is_available()
False ise → sürücü/CUDA versiyonu kontrolü. (2)
RuntimeError: out of memory
→ batch_size'ı 64'e düşür. (3)
ModuleNotFoundError: torchvision
→ ayrı kur:
uv pip install torchvision
. (4) Tüm denemeler başarısızsa → Discord'a hata mesajıyla gel; yukarıdaki 'Yardım İsteme Protokolü' formatında.

Docker Opsiyonu (alternatif)#

Local kurulum yerine Docker da kullanabilirsin — özellikle takım içinde tutarlılık için.
# Dockerfile FROM pytorch/pytorch:2.5.1-cuda12.4-cudnn9-devel RUN apt-get update && apt-get install -y curl git build-essential RUN curl -LsSf https://astral.sh/uv/install.sh | sh ENV PATH="/root/.cargo/bin:${PATH}" WORKDIR /workspace COPY pyproject.toml uv.lock ./ RUN uv pip install --system -r pyproject.toml # Kurs kütüphaneleri RUN uv pip install --system \ transformers datasets accelerate peft trl \ bitsandbytes vllm flash-attn --no-build-isolation
# Build & çalıştır docker build -t llm-muh:latest . docker run --gpus all -it -v $(pwd):/workspace llm-muh:latest bash
Ne zaman Docker? Cloud GPU sunucularda kurulumu hızlı yeniden üretmek için, veya farklı projelerde farklı kütüphane versiyonları kullanırken.

Kurulumunu
uv.lock
ile Sabitle#

uv
her çalıştırmada
uv.lock
üretir — kurulumunu tam olarak sabitler. Bunu Git'e commit et ki başka bir makinede tıpatıp aynı sürümleri alasın.
bash
# Çalışan kurulumu requirements'a aktar
uv pip freeze > requirements.txt
 
# Veya uv.lock'u kullan (önerilen)
uv lock
 
# Yeni makinede tıpatıp kur
uv sync # uv.lock'tan kurar
Kurulumu kilitle ve replikate et.

Git, GitHub & .gitignore#

Tüm kod laboratuvarlarını GitHub'da tut. Hatta her capstone ayrı repo.
cd ~/llm-muhendisligi git init echo "venv/ .venv/ __pycache__/ *.pyc .ipynb_checkpoints/ .env *.log wandb/ runs/ checkpoints/ *.pt *.safetensors *.bin data/ " > .gitignore git add . git commit -m "feat: initial workshop setup" # GitHub'a push gh repo create llm-muhendisligi --public --source=. --remote=origin --push

Son Adım: 3 Kütüphane Sanity#

Şu son kontrolü yap. Bu dördü çalışıyorsa Modül 1'e geçebilirsin.
python
# full_sanity.py
import torch
import transformers
import datasets
import peft
 
print(f"PyTorch : {torch.__version__}")
print(f"Transformers : {transformers.__version__}")
print(f"Datasets : {datasets.__version__}")
print(f"PEFT : {peft.__version__}")
print(f"CUDA available: {torch.cuda.is_available()}")
print(f"MPS available : {torch.backends.mps.is_available()}")
 
# Küçük bir transformer test
from transformers import AutoTokenizer, AutoModel
tok = AutoTokenizer.from_pretrained("bert-base-uncased")
ids = tok("Hello LLM Engineer", return_tensors="pt")
print(f"Tokenized: {ids.input_ids.shape}")
print("✅ Hepsi çalışıyor!")
Tam kontrol — tüm önemli kütüphaneler.

Bu Derste Neler Öğrendik?#

Donanım: Cloud-only başla, ihtiyacına göre büyüt (RTX 4090 sweet spot) ✓ OS sırası: Linux > WSL2 > macOS > Windows native ✓ Python 3.11 önerilen ✓
uv
paket yöneticisi (pip/conda yerine) ✓ PyTorch 2.5+ — platform-specific komut ✓ 20+ çekirdek kütüphane tek komutla ✓ FlashAttention, vLLM, Triton ileri kurulumlar ✓ Nsight Systems profiling — Senior seviye için ✓ VS Code + Cursor + Jupyter/marimo editör ✓ Sanity test: 60s MNIST → başarı

Sıradaki Ders#

0.4 — Cloud Hesaplar: HuggingFace, OpenAI, Anthropic, Together, Modal, Runpod, Lambda Lokal kurulum hazır; şimdi bulut tarafı. Hangi hesabı niye, hangi API anahtarını neye, ücretsiz kredi nereden? Production LLM mühendisi olmanın yarısı doğru cloud kararları.

Frequently Asked Questions

Yes, nothing in this course locks you to uv. You can install the same packages with conda: `conda create -n llm-muh python=3.11 && conda activate llm-muh && pip install torch transformers ...`. Some packages (vLLM, flash-attn) lag in conda — fall back to `pip install` inside the conda env. Recommended: hybrid — conda environment, pip for package installation.

Yorumlar & Soru-Cevap

(0)
Yorum yazmak için giriş yap.
Yorumlar yükleniyor...

Related Content