Skip to content

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
Atölye Kurulumu: uv + Python 3.12 + PyOD + anomalib + PyTorch — Sıfırdan Production-Ready Anomaly Detection Ortamı
🛠️ 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 durumunYol
Windows 10/11 + GPU yokYol A: Windows + WSL2
Windows 10/11 + NVIDIA GPUYol 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)#

uv
Astral'ın yazdığı modern Python paket yöneticisi.
pip
ve
virtualenv
'in yerini alıyor — 10-100x daha hızlı, conflict resolution daha iyi.
Bu 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:
uv venv
yerine
python -m venv .venv
,
uv pip install x
yerine
pip install x
. Sadece bağımlılık çözünmesi 5-10x daha yavaş olacak.

Yol 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ınKomut
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
torch.cuda.is_available()
False dönüyorsa: (1)
nvidia-smi
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 —
uv pip uninstall torch torchvision
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).

Adı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 bilim
uv pip install \
numpy \
pandas \
scipy \
scikit-learn \
matplotlib \
seaborn \
plotly \
statsmodels
 
# Anomaly Detection kütüphaneleri
uv pip install \
pyod \
"anomalib[full]" \
"alibi-detect[torch]" \
river \
deepod
 
# Time Series
uv pip install \
"darts[torch]" \
salesforce-merlion \
tsfresh \
ruptures \
neuralprophet \
prophet
 
# Graph (PyG — PyTorch versiyonuyla uyumlu olmalı)
uv pip install torch_geometric
 
# MLOps ve deney
uv pip install \
mlflow \
optuna \
evidently \
nannyml
 
# Notebook
uv pip install \
jupyterlab \
ipywidgets \
jupyterlab-lsp \
python-lsp-server \
jupyterlab-git
 
# Yardımcı
uv pip install \
tqdm \
rich \
typer \
python-dotenv \
pyarrow \
fastparquet
Tam 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.py
import sys
print(f"Python: {sys.version}")
 
import numpy as np
print(f"NumPy: {np.__version__}")
 
import pandas as pd
print(f"Pandas: {pd.__version__}")
 
import sklearn
print(f"scikit-learn: {sklearn.__version__}")
 
import torch
print(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 pyod
print(f"PyOD: {pyod.__version__}")
 
import anomalib
print(f"anomalib: {anomalib.__version__}")
 
from alibi_detect import __version__ as adet_v
print(f"alibi-detect: {adet_v}")
 
import river
print(f"River: {river.__version__}")
 
import darts
print(f"Darts: {darts.__version__}")
 
import merlion
print(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.py
import numpy as np
import matplotlib.pyplot as plt
from pyod.models.iforest import IForest
from 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 fit
clf = IForest(contamination=0.05, random_state=42)
clf.fit(X)
 
# 3. Anomaly score
scores = clf.decision_function(X) # yüksek = daha anomali
y_pred = clf.predict(X) # 0 = normal, 1 = anomali
 
# 4. Metrik
auc = roc_auc_score(y_true, scores)
print(f"ROC-AUC: {auc:.3f}")
# 0.95+ bekliyoruz
 
# 5. Görselleştir
fig, 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
'yi açtığında ortada Gauss kümesi (mavi tonlar) ve dışında dağılmış kırmızı noktalar (yüksek anomaly score) göreceksin. Bu kursta defalarca göreceğin temel desen.
🎉 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
Ctrl+Shift+P
→ "Python: Select Interpreter" →
/home/<user>/projeler/anomaly-detection/.venv/bin/python
(Linux/WSL2) veya
/Users/<user>/projects/anomaly-detection/.venv/bin/python
(Mac) seç.
Notebook'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