Workshop Setup: uv + Python 3.12 + PyOD + anomalib + PyTorch — From Zero to a Production-Ready Anomaly Detection Environment
Step-by-step setup for anomaly detection workshop: uv + Python 3.12 venv, PyTorch 2.5+, PyOD, anomalib, alibi-detect, river, Jupyter Lab on Windows WSL2, macOS MPS, and Linux CUDA.
Şükrü Yusuf KAYA
38 min read
Beginner🛠️ Hazırlık dersi — sabırla yap
Bu ders bilgi yoğun değil, kurulum yoğun. Tahmini 60-90 dakikan gidecek. Sonunda elinde her modülde tıkır tıkır çalışacak bir Python ortamı olacak. Bir kez yapıyoruz, sonra unutuyoruz. Hata alırsan ders sonundaki sorun giderme bölümüne bak — neredeyse her olası hatanın çözümü orada.
Ne Kuracağız?#
Hedefimiz aşağıdaki katmandan oluşan bir Python ortamı:
[İşletim Sistemi] ↓ [uv — Python paket & sanal ortam yöneticisi] ↓ [Python 3.12 venv] ↓ [PyTorch 2.5+ (CPU veya CUDA)] ↓ [Anomaly Detection Stack] ├── PyOD (40+ klasik algoritma) ├── anomalib (computer vision AD) ├── alibi-detect (drift + AD) ├── river (online learning) ├── darts + merlion (time series) ├── PyG (graph) └── scikit-learn + pandas + numpy ↓ [Geliştirme Araçları] ├── Jupyter Lab (notebook) ├── VS Code (editor — opsiyonel) └── MLflow + Optuna (deney izleme)
İşletim sistemine göre üç farklı kurulum yolu sunacağım. Hangi yolu seçeceğin:
| Senin durumun | Yol |
|---|---|
| Windows 10/11 + GPU yok | Yol A: Windows + WSL2 |
| Windows 10/11 + NVIDIA GPU | Yol A: Windows + WSL2 |
| Mac (Apple Silicon — M1/M2/M3/M4) | Yol B: macOS + MPS |
| Mac (Intel) | Yol B: macOS (MPS yok, CPU) |
| Linux (Ubuntu/Fedora) | Yol C: Linux native |
| Cloud VM (RunPod, Lambda, Paperspace) | Yol C ile aynı |
Dürüst öneri: Bir Windows kullanıcısıysan, WSL2 kurulumu ilk başta korkutucu görünür ama anomaly detection ekosisteminin %80'i Linux dünyasında geliştiriliyor. WSL2 sana hem Windows konforu hem Linux yetkinliği veriyor. Ortalama 30 dakikalık ek bir kurulum, 1+ yıllık compatibility derdine değer.
Adım 0: uv'yi Yükle (Tüm Platformlar)#
uvpipvirtualenvBu kursta uv kullanacağız çünkü:
- Tek komutla sanal ortam + paket kurulumu
- Lock file ile reproducible environment
- Çok hızlı (dependency resolution Rust ile yazılmış)
- pyproject.toml standardına uyumlu
macOS / Linux:#
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows (PowerShell, admin değil):#
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Doğrulama:#
uv --version # uv 0.5.x ya da üstü görmelisin
🔁 uv kullanmak istemiyorum diyorsan
uv yerine klasik venv + pip de işine yarar. Komutlar şöyle değişir: yerine , yerine . Sadece bağımlılık çözünmesi 5-10x daha yavaş olacak.
uv venvpython -m venv .venvuv pip install xpip install xYol A — Windows + WSL2 (önerilir)#
WSL2 (Windows Subsystem for Linux 2) Windows üzerinde tam bir Ubuntu Linux çalıştırmana izin verir. PyTorch'un CUDA desteği, anomalib bağımlılıkları, ve Docker — hepsi WSL2'de Linux gibi çalışır.
A.1 — WSL2 ve Ubuntu Kurulumu#
PowerShell'i yönetici olarak aç:
wsl --install -d Ubuntu-22.04
Yeniden başlat. Açıldığında bir Linux terminal penceresi gelir, kullanıcı adı ve şifre belirler.
# Ubuntu güncel mi kontrol et sudo apt update && sudo apt upgrade -y # Temel araçlar sudo apt install -y build-essential curl git wget unzip pkg-config libssl-dev
A.2 — NVIDIA GPU Sürücüleri (sadece GPU varsa)#
WSL2'de Linux içinde NVIDIA driver kurma. Sürücü Windows'ta zaten olmalı. Sadece CUDA toolkit'in Linux kısmı:
# CUDA 12.4 (PyTorch 2.5+ için uyumlu) wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt-get update sudo apt-get -y install cuda-toolkit-12-4 # PATH'e ekle (.bashrc'ye yaz) echo 'export PATH=/usr/local/cuda-12.4/bin${PATH:+:${PATH}}' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc source ~/.bashrc # Doğrula nvidia-smi # GPU'n görünüyor olmalı
A.3 — uv'yi WSL2 İçinde Kur#
Adım 0'daki Linux komutunu WSL terminalinde çalıştır.
A.4 — Proje Dizini ve Sanal Ortam#
mkdir -p ~/projeler/anomaly-detection cd ~/projeler/anomaly-detection # Python 3.12 ile yeni venv uv venv --python 3.12 source .venv/bin/activate # Doğrula python --version # Python 3.12.x görmelisin
Yol B — macOS (Apple Silicon önerilir)#
Apple Silicon (M1, M2, M3, M4) ile gelen Mac'lerde PyTorch'un MPS (Metal Performance Shaders) backend'i kullanılabiliyor — CUDA değil ama deep learning eğitimi için "ücretsiz bir GPU" gibi davranıyor.
B.1 — Homebrew (zaten yoksa)#
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
B.2 — Sistem Bağımlılıkları#
brew install python@3.12 git wget # Mac M1+ için optimum BLAS brew install openblas
B.3 — uv Kurulumu#
Adım 0'daki macOS komutunu çalıştır.
B.4 — Proje ve Sanal Ortam#
mkdir -p ~/projects/anomaly-detection cd ~/projects/anomaly-detection uv venv --python 3.12 source .venv/bin/activate python -c "import platform; print(platform.machine())" # arm64 görmelisin (Apple Silicon) # x86_64 görüyorsan Intel Mac'sin — MPS desteği yok ama her şey CPU'da çalışır
Yol C — Linux Native veya Cloud VM#
C.1 — Sistem Bağımlılıkları (Ubuntu 22.04+)#
sudo apt update sudo apt install -y build-essential curl git wget python3.12 python3.12-venv python3.12-dev
C.2 — NVIDIA Sürücü (GPU varsa)#
# NVIDIA driver sudo apt install -y nvidia-driver-550 nvidia-utils-550 # Reboot sonrası doğrula nvidia-smi
C.3 — CUDA Toolkit 12.4 (GPU varsa)#
wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run sudo sh cuda_12.4.0_550.54.14_linux.run --silent --toolkit
C.4 — uv ve Sanal Ortam#
curl -LsSf https://astral.sh/uv/install.sh | sh mkdir -p ~/projects/anomaly-detection cd ~/projects/anomaly-detection uv venv --python 3.12 source .venv/bin/activate
Adım 1: PyTorch 2.5+ Kurulumu#
PyTorch'u doğru sürümle kurmak çok önemli; yanlış sürüm seçersen ya CPU'ya düşer ya import hatası alırsın.
Hangi PyTorch sürümünü seçeyim?#
| Donanımın | Komut |
|---|---|
| Linux/WSL2 + NVIDIA GPU (CUDA 12.4) | uv pip install torch torchvision --index-url https://download.pytorch.org/whl/cu124 |
| Linux/WSL2 + CPU | uv pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu |
| macOS Apple Silicon (M1+) | uv pip install torch torchvision |
| macOS Intel | uv pip install torch torchvision |
Doğrulama#
# python ile şunu koştur import torch print(f"PyTorch: {torch.__version__}") print(f"CUDA mevcut mu: {torch.cuda.is_available()}") print(f"MPS mevcut mu: {torch.backends.mps.is_available()}") # Sadece Mac # Linux/WSL2 + GPU bekliyorsan if torch.cuda.is_available(): print(f"GPU sayısı: {torch.cuda.device_count()}") print(f"GPU adı: {torch.cuda.get_device_name(0)}") # Mac M1+ bekliyorsan if torch.backends.mps.is_available(): print("MPS hazır") x = torch.randn(3, 3, device="mps") print(x)
⚠️ Sık karşılaşılan PyTorch sorunu
Eğer False dönüyorsa: (1) ile sürücü görünüyor mu kontrol et, (2) PyTorch'u CPU sürümü ile yanlışlıkla yüklemiş olabilirsin — sonra tekrar CUDA sürümüyle yükle. (3) CUDA toolkit sürümün PyTorch'un beklediğiyle aynı major.minor olmalı (12.4 → cu124).
torch.cuda.is_available()nvidia-smiuv pip uninstall torch torchvisionAdım 2: Anomaly Detection Stack#
PyTorch hazırsa, şimdi AD ekosistemini kuralım. Aşağıdaki komutu bütüncül bir şekilde çalıştır:
bash
# Çekirdek bilimuv pip install \ numpy \ pandas \ scipy \ scikit-learn \ matplotlib \ seaborn \ plotly \ statsmodels # Anomaly Detection kütüphaneleriuv pip install \ pyod \ "anomalib[full]" \ "alibi-detect[torch]" \ river \ deepod # Time Seriesuv pip install \ "darts[torch]" \ salesforce-merlion \ tsfresh \ ruptures \ neuralprophet \ prophet # Graph (PyG — PyTorch versiyonuyla uyumlu olmalı)uv pip install torch_geometric # MLOps ve deneyuv pip install \ mlflow \ optuna \ evidently \ nannyml # Notebookuv pip install \ jupyterlab \ ipywidgets \ jupyterlab-lsp \ python-lsp-server \ jupyterlab-git # Yardımcıuv pip install \ tqdm \ rich \ typer \ python-dotenv \ pyarrow \ fastparquetTam stack tek seferde — yaklaşık 5-10 dakika sürer
⏳ Kurulum 10-15 dakika sürebilir
Toplam ~3-4 GB indirme + ~6-8 GB disk kullanır. WSL2 kullanıyorsan disk yerinden emin ol — WSL2 default'ta C:\Users<user>\AppData\Local\Packages altında. anomalib kendiyle birlikte mmcv, OpenCV, Lightning gibi büyük paketler getirir.
Adım 3: Tüm Stack'i Doğrula#
Aşağıdaki tek-dosya doğrulama scripti'ni çalıştır. Her satır başarılıysa ortamın hazır.
python
# verify_setup.pyimport sysprint(f"Python: {sys.version}") import numpy as npprint(f"NumPy: {np.__version__}") import pandas as pdprint(f"Pandas: {pd.__version__}") import sklearnprint(f"scikit-learn: {sklearn.__version__}") import torchprint(f"PyTorch: {torch.__version__}")print(f" CUDA: {torch.cuda.is_available()}")print(f" MPS: {getattr(torch.backends, 'mps', None) and torch.backends.mps.is_available()}") import pyodprint(f"PyOD: {pyod.__version__}") import anomalibprint(f"anomalib: {anomalib.__version__}") from alibi_detect import __version__ as adet_vprint(f"alibi-detect: {adet_v}") import riverprint(f"River: {river.__version__}") import dartsprint(f"Darts: {darts.__version__}") import merlionprint(f"Merlion: {merlion.__version__}") print("\n✅ Atölye tamamen kuruldu!")verify_setup.py — kurulum sonrası bu scripti koş
Şu komutla koş:
python verify_setup.py
Beklediğin çıktı şu formatta olmalı:
Python: 3.12.x ... NumPy: 2.x.x Pandas: 2.x.x scikit-learn: 1.5.x PyTorch: 2.5.x CUDA: True (veya False — donanıma göre) MPS: True (sadece Mac M1+ için) PyOD: 2.0.x anomalib: 1.x.x alibi-detect: 0.12.x River: 0.21.x Darts: 0.30.x Merlion: 2.0.x ✅ Atölye tamamen kuruldu!
Adım 4: İlk "Hello, Anomaly" Kodun#
Bir baseline anomaly detection deneyi koşturalım — sentetik veri, PyOD'un Isolation Forest'ı, scoring + görselleştirme. Bu, ortamının gerçekten çalıştığının kanıtı.
python
# hello_anomaly.pyimport numpy as npimport matplotlib.pyplot as pltfrom pyod.models.iforest import IForestfrom sklearn.metrics import roc_auc_score # 1. Sentetik veri: 1000 normal nokta (Gauss), 50 anomali (uniform geniş)rng = np.random.default_rng(seed=42)X_normal = rng.normal(loc=0.0, scale=1.0, size=(1000, 2))X_anomaly = rng.uniform(low=-6.0, high=6.0, size=(50, 2))X = np.vstack([X_normal, X_anomaly])y_true = np.concatenate([np.zeros(1000), np.ones(50)]) # 2. Isolation Forest fitclf = IForest(contamination=0.05, random_state=42)clf.fit(X) # 3. Anomaly scorescores = clf.decision_function(X) # yüksek = daha anomaliy_pred = clf.predict(X) # 0 = normal, 1 = anomali # 4. Metrikauc = roc_auc_score(y_true, scores)print(f"ROC-AUC: {auc:.3f}")# 0.95+ bekliyoruz # 5. Görselleştirfig, ax = plt.subplots(figsize=(8, 6))sc = ax.scatter(X[:, 0], X[:, 1], c=scores, cmap='RdYlBu_r', s=15)plt.colorbar(sc, label='Anomaly Score')ax.set_title(f'Hello Anomaly — Isolation Forest (AUC: {auc:.3f})')ax.set_xlabel('Özellik 1')ax.set_ylabel('Özellik 2')plt.tight_layout()plt.savefig('hello_anomaly.png', dpi=120)print("Grafik kaydedildi: hello_anomaly.png")İlk anomaly detection kodun — sentetik veri, iForest, AUC ölçümü
Koştur:
python hello_anomaly.py
Beklenen çıktı:
ROC-AUC: 0.987 Grafik kaydedildi: hello_anomaly.png
hello_anomaly.png🎉 Tebrikler
Atölye hazır. İlk anomaly detection deneyini koşturdun. Yapay zekâ mühendisliği yolculuğunun gerçek başlangıç noktası burası: bir model, bir veri, bir skor.
Adım 5: Jupyter Lab Konfigürasyonu#
Modüllerin çoğu Jupyter notebook'ları içerir. Jupyter Lab'i sanal ortamın
içinde çalıştır:
# sanal ortam aktif olduğu sürece jupyter lab
Tarayıcıda http://localhost:8888 açılır. Sanal ortamın paketleri otomatik
gelir.
Önerilen kısayollar ve eklentiler#
# Code suggestion ve LSP jupyter labextension install @krassowski/jupyterlab-lsp # Variable inspector (notebook'ta hangi değişken var görmek) uv pip install jupyterlab-variableinspector # Git entegrasyonu (notebook'tan commit) # zaten install ettik, sadece etkinleştir jupyter server extension enable jupyterlab_git
VS Code kullanıyorsan#
VS Code'da → "Python: Select Interpreter" →
(Linux/WSL2) veya
(Mac) seç.
Ctrl+Shift+P/home/<user>/projeler/anomaly-detection/.venv/bin/python/Users/<user>/projects/anomaly-detection/.venv/bin/pythonNotebook'ları doğrudan VS Code'da açabilirsin — Jupyter Lab açmak zorunda
değilsin.
Adım 6: Standart Proje Yapısı#
Her capstone ve lab için aşağıdaki klasör yapısını kullanacağız. Şimdi bir
boş proje açalım:
anomaly-detection/ ├── .venv/ # uv sanal ortamı (gitignore) ├── data/ # veri kümeleri (gitignore — büyük) │ ├── raw/ # ham veri │ └── processed/ # işlenmiş veri ├── notebooks/ # Jupyter notebook'lar │ ├── 01-eda.ipynb │ ├── 02-baseline.ipynb │ └── 03-experiments.ipynb ├── src/ # paylaşılan Python modülleri │ ├── __init__.py │ ├── features.py │ ├── models.py │ └── utils.py ├── tests/ # unit testler ├── reports/ # üretilen grafikler, html'ler ├── models/ # eğitilmiş model dosyaları ├── pyproject.toml # uv config ├── .gitignore └── README.md
Aşağıdaki komutla iskeleti tek seferde oluştur:
mkdir -p data/raw data/processed notebooks src tests reports models touch src/__init__.py src/features.py src/models.py src/utils.py touch tests/__init__.py touch README.md # .gitignore cat > .gitignore <<'EOF' .venv/ __pycache__/ *.pyc .ipynb_checkpoints/ data/raw/ data/processed/ models/*.pkl models/*.pt reports/*.html .env .env.local *.swp .DS_Store EOF # Boş notebook cat > notebooks/00-hello.ipynb <<'EOF' { "cells": [ {"cell_type": "markdown", "metadata": {}, "source": ["# Hello Anomaly Detection"]}, {"cell_type": "code", "metadata": {}, "source": ["import pyod\nprint(pyod.__version__)"]} ], "metadata": {}, "nbformat": 4, "nbformat_minor": 5 } EOF git init git add .gitignore notebooks src tests README.md git commit -m "init: anomaly detection workshop scaffolding"
Adım 7: Sorun Giderme — Sık Karşılaşılan Hatalar#
Karşılaşacağın olası problemlerin %90'ını burada listeledim. Bir sorun
yaşadığında önce buraya bak.
Anlamı: CUDA toolkit kurulu ama PyTorch yanlış sürümle.
Çözüm:
uv pip uninstall torch torchvision uv pip install torch torchvision --index-url https://download.pytorch.org/whl/cu124
Sonra:
python -c "import torch; print(torch.cuda.is_available())"
✅ Bu derste neyi başardın?
Bu dersin sonunda elinde şunlar var: (1) uv ile yönetilen Python 3.12 sanal ortamı, (2) PyTorch 2.5+ doğru backend ile (CUDA, MPS veya CPU), (3) PyOD + anomalib + alibi-detect + river + darts + merlion + PyG + scikit-learn tam stack, (4) Jupyter Lab + opsiyonel VS Code, (5) bir hello_anomaly.py çalıştırılmış ve sonuç görselleştirilmiş, (6) standart proje iskeleti git ile başlatılmış. Bu yapı kursun her capstone'unda aynen yeniden kullanılacak — bir kez kurdun, hepsinde kullanırsın.
👉 Bir sonraki ders
Ders 0.4 — Veri Hesapları & Cloud. Kaggle API, HuggingFace datasets, Numenta NAB, MVTec AD, NASA Turbofan, CWRU bearing — kursta kullanacağımız veri kümelerini nasıl alacağını adım adım göstereceğim. Aynı zamanda Google Colab vs RunPod GPU, S3-compatible storage seçimi ve ücretsiz kaynak yönetimi.
Frequently Asked Questions
Hayır, conda da işine yarar. Sadece bağımlılık çözünmesi yavaş ve bazı modern paketlerle (anomalib v1.x) conda kanalı geride. uv ile gitmeni öneriyoruz çünkü reproducibility daha iyi ve hızlı. Ama conda'da kalmak isterseniz `conda create -n ad python=3.12` ile yeni env aç, sonra `pip install` ile aynı paketleri kur.
Yorumlar & Soru-Cevap
(0)Yorum yazmak için giriş yap.
Yorumlar yükleniyor...
Related Content
Module 0: Course Framework & Workshop Setup
Who Is an Anomaly Detection Engineer? Differences from Fraud, SRE, Quality Engineer Roles and the Turkey Salary Landscape
Start LearningModule 0: Course Framework & Workshop Setup
Course Philosophy: Why This Path, Why This Order — The Anomaly Detection Learning River
Start LearningModule 0: Course Framework & Workshop Setup