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🛠️ 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 (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: 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ı):
- 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.
- 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.
- macOS (Apple Silicon) — İyi (geliştirme), kısıtlı (eğitim). MPS ile inference rahat; pre-training/fine-tuning sınırlı.
- 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)?#
uvuv| Özellik | uv | pip | conda | poetry |
|---|---|---|---|---|
| Kurulum hızı | 10–100x hızlı (Rust) | Yavaş | Yavaş | Orta |
| Bağımlılık çözümü | Çok hızlı (PubGrub) | Yavaş, basit | Yavaş | Orta |
| Python sürüm yönetimi | ✓ Otomatik kurar | ✗ | ✓ | ✗ |
| Sanal ortam | ✓ Otomatik | ✗ (venv | ✓ | ✓ |
| Lock dosyası | ✓ uv.lock | ✗ (requirements.txt | ✓ | ✓ |
| Tek binary | ✓ | ✗ | ✗ | ✗ |
| HuggingFace ekosistemi uyumu | ✓ Tam | ✓ Tam | ⚠️ Yer yer | ⚠️ Yer yer |
Sonuç: başlangıç için en hızlı, en az hata, en az "PyTorch'um çalışmıyor" sorununa yol açan araç.
uvBu kursta her ortamı ile kuracağız. Eğer mevcut / workflow'un varsa o da çalışır, ama yardım sorduğunda ile cevap verme önceliği veririz.
uvcondapoetryuvbash
# Linux / WSL2 / macOScurl -LsSf https://astral.sh/uv/install.sh | sh # Windows PowerShellpowershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # Sonra terminali yeniden başlat veya:source $HOME/.cargo/env # Linux/macOS # Doğrulamauv --version# uv 0.5.x veya üstü görmen lazımuv 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şturmkdir -p ~/llm-muhendisligi && cd ~/llm-muhendisligi # uv projesi başlat — Python 3.11 ileuv 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ğrulapython --version# Python 3.11.x görmelisinwhich python# .../llm-muhendisligi/.venv/bin/python görmelisinProjeyi 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:
- : sürücü ve PyTorch CUDA versiyonu uyumsuz.
torch.cuda.is_available() == False'deki CUDA versiyonu PyTorch wheel versiyonundan büyük olmalı. Sürücüyü yükselt.nvidia-smi - : eski CUDA kalıntısı.
undefined symbol: ...sonra yeniden kur.uv pip uninstall torch torchvision torchaudio
Ç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ğrulamapython -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: . Bazı GPU'lar (RTX 30 serisi) hâlâ destekliyor; RTX 20 serisi ve eskisi desteklemiyor.
uv pip install flash-attn --no-build-isolation --find-links https://github.com/Dao-AILab/flash-attention/releasesNsight 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ğrulamansys --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.pyimport torchimport torch.nn as nnimport torch.nn.functional as Ffrom torch.utils.data import DataLoaderfrom torchvision import datasets, transformsimport 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__}") # Veritransform = 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 MLPclass 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ğerlendirmodel.eval()correct = 0with 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ırpython 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) False ise → sürücü/CUDA versiyonu kontrolü. (2) → batch_size'ı 64'e düşür. (3) → ayrı kur: . (4) Tüm denemeler başarısızsa → Discord'a hata mesajıyla gel; yukarıdaki 'Yardım İsteme Protokolü' formatında.
torch.cuda.is_available()RuntimeError: out of memoryModuleNotFoundError: torchvisionuv pip install torchvisionDocker 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.lockuvuv.lockbash
# Çalışan kurulumu requirements'a aktaruv pip freeze > requirements.txt # Veya uv.lock'u kullan (önerilen)uv lock # Yeni makinede tıpatıp kuruv sync # uv.lock'tan kurarKurulumu 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.pyimport torchimport transformersimport datasetsimport 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 testfrom transformers import AutoTokenizer, AutoModeltok = 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
✓ 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ı
uvSı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
Module 0: Course Framework & Workshop Setup
Who Is an LLM Engineer? The AI Engineering Career Ladder from Junior to Staff
Start LearningModule 0: Course Framework & Workshop Setup
Course Philosophy: Why This Path, Why This Order — The Skeleton of an 8-Month Curriculum
Start LearningModule 0: Course Framework & Workshop Setup