Civitai’dan Model ve LoRA İndirme: Adım Adım Rehber
Stable Diffusion kurulumunu tamamladın, WebUI açılıyor, her şey güzel görünüyor ama gerçek güç modellerde gizli. Varsayılan modelle üretilen görseller seni tatmin etmiyorsa, işte tam burada Civitai devreye giriyor. Civitai, dünyanın en büyük Stable Diffusion model deposu ve topluluğu olarak binlerce checkpoint, LoRA, embedding ve diğer model türlerini barındırıyor. Bu yazıda Civitai’dan model indirmenin tüm yöntemlerini, doğru dosyaları seçmeyi, organize bir dizin yapısı kurmayı ve işleri otomatize etmeyi ele alacağız.
Civitai’ı Tanımak: Ne Bulursunuz?
Civitai’da birkaç farklı model türü bulacaksınız ve bunları karıştırmamak kritik önem taşıyor.
Checkpoint (Ana Model): Tam eğitilmiş model dosyaları. Genellikle 2GB ile 7GB arasında boyutları var. .safetensors veya .ckpt uzantılıyla geliyorlar. Bunlar WebUI’nin models/Stable-diffusion/ klasörüne gidiyor.
LoRA (Low-Rank Adaptation): Ana modelin üzerine ince ayar yapan küçük dosyalar. Boyutları genellikle 10MB ile 300MB arasında değişiyor. models/Lora/ klasörüne yerleştiriyorsunuz.
Embedding (Textual Inversion): Belirli konseptleri veya stilleri öğreten çok küçük dosyalar. embeddings/ klasörüne gidiyor.
VAE: Görselin son kalitesini etkileyen ek bileşen. models/VAE/ klasörüne gidiyor.
Hypernetwork: LoRA’ya benzer ama farklı teknik yaklaşım. models/hypernetworks/ klasörüne gidiyor.
Bu ayrımı bilmeden indirdiğiniz dosyayı nereye koyacağınızı bilemezsiniz ve WebUI onu göremez.
Hesap Açmak ve API Key Almak
Civitai’dan manuel tarayıcı ile indirme yapabilirsiniz ama otomasyon için API key şart. Önce hesap oluşturun, ardından şu adımları izleyin:
- Sağ üst köşedeki profil ikonuna tıklayın
- Account Settings seçeneğine gidin
- API Keys bölümüne inin
- Add API Key butonuna tıklayın
- Key’e anlamlı bir isim verin (örneğin “home-server” veya “workstation”)
- Oluşturulan key’i kopyalayın ve güvenli bir yerde saklayın
Bu key’i sonraki tüm otomatik indirme işlemlerinde kullanacaksınız.
Manuel İndirme: Temel Yöntem
Önce en basit yöntemi anlayalım. Civitai’da bir modelin sayfasına girdiğinizde sağ tarafta Download butonu göreceksiniz. Ama dikkat etmeniz gereken birkaç noktalı var.
Model sayfasında Files sekmesine tıklayın. Aynı modelin birden fazla versiyonu olabilir. Her versiyon farklı bir training run’ı temsil ediyor. Genellikle:
- Full versiyon: Tam boyutlu model, en yüksek kalite
- Pruned versiyon: Gereksiz veriler temizlenmiş, boyut küçük ama kalite aynı
- fp16 versiyon: 16-bit hassasiyetle kaydedilmiş, boyut yarı yarıya küçük
Çoğu durumda pruned-fp16 safetensors versiyonunu tercih edin. Hem disk alanından tasarruf edersiniz hem de kalite farkı ihmal edilebilir düzeyde kalır.
Komut Satırından İndirme
Sunucu üzerinde çalışıyorsanız veya büyük dosyaları daha kontrollü indirmek istiyorsanız wget veya curl kullanın. Önce indirme URL’sini elde etmeniz gerekiyor.
Civitai model URL’leri şu formattadır: https://civitai.com/models/MODEL_ID
API üzerinden dosya URL’si almak için:
# Model bilgilerini çek
curl -s "https://civitai.com/api/v1/models/MODEL_ID"
-H "Authorization: Bearer YOUR_API_KEY" | python3 -m json.tool
Bu komut modelin tüm versiyonlarını ve her versiyondaki dosyaların download URL’lerini gösterir. Oradan doğru URL’yi kopyalayın.
Ardından wget ile indirme:
# Checkpoint indirme örneği
wget -c --content-disposition
--header="Authorization: Bearer YOUR_API_KEY"
"https://civitai.com/api/download/models/VERSION_ID"
-P ~/stable-diffusion-webui/models/Stable-diffusion/
-c parametresi kesilen indirmeyi kaldığı yerden devam ettiriyor, bu büyük dosyalar için hayat kurtarıcı. --content-disposition ise dosyayı orijinal adıyla kaydediyor.
Python ile Otomatik İndirme Scripti
Birden fazla model indirmeniz gerektiğinde veya süreçi otomatize etmek istediğinizde Python scripti işinizi büyük ölçüde kolaylaştırır. Aşağıdaki script hem checkpoint hem LoRA indirmeyi destekliyor:
#!/usr/bin/env python3
import os
import sys
import requests
from pathlib import Path
API_KEY = os.environ.get("CIVITAI_API_KEY", "")
BASE_URL = "https://civitai.com/api/v1"
WEBUI_PATH = Path.home() / "stable-diffusion-webui"
MODEL_DIRS = {
"Checkpoint": WEBUI_PATH / "models" / "Stable-diffusion",
"LORA": WEBUI_PATH / "models" / "Lora",
"TextualInversion": WEBUI_PATH / "embeddings",
"VAE": WEBUI_PATH / "models" / "VAE",
"Hypernetwork": WEBUI_PATH / "models" / "hypernetworks",
}
def get_model_info(model_id):
headers = {"Authorization": f"Bearer {API_KEY}"}
response = requests.get(f"{BASE_URL}/models/{model_id}", headers=headers)
response.raise_for_status()
return response.json()
def download_model(version_id, dest_dir, filename=None):
headers = {"Authorization": f"Bearer {API_KEY}"}
url = f"https://civitai.com/api/download/models/{version_id}"
with requests.get(url, headers=headers, stream=True) as r:
r.raise_for_status()
if not filename:
cd = r.headers.get("content-disposition", "")
filename = cd.split("filename=")[-1].strip('"') if "filename=" in cd else f"model_{version_id}.safetensors"
dest_path = Path(dest_dir) / filename
total = int(r.headers.get("content-length", 0))
downloaded = 0
print(f"İndiriliyor: {filename}")
with open(dest_path, "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)
downloaded += len(chunk)
if total:
pct = downloaded / total * 100
print(f"r{pct:.1f}% tamamlandı", end="", flush=True)
print(f"nTamamlandı: {dest_path}")
if __name__ == "__main__":
if len(sys.argv) < 3:
print("Kullanim: python3 download.py MODEL_ID VERSION_ID")
sys.exit(1)
model_id = sys.argv[1]
version_id = sys.argv[2]
info = get_model_info(model_id)
model_type = info.get("type", "Checkpoint")
dest = MODEL_DIRS.get(model_type, MODEL_DIRS["Checkpoint"])
dest.mkdir(parents=True, exist_ok=True)
download_model(version_id, dest)
Bu scripti çalıştırmadan önce API key’inizi environment variable olarak set edin:
export CIVITAI_API_KEY="buraya_kendi_key_inizi_yazin"
python3 download.py 4384 128713
Dizin Yapısını Düzgün Organize Etmek
Model koleksiyonunuz büyüdükçe dizin yapısı kritik hale geliyor. Benim önerdiğim yapı:
# Dizin yapısını oluştur
mkdir -p ~/stable-diffusion-webui/models/Stable-diffusion/{realistic,anime,artistic}
mkdir -p ~/stable-diffusion-webui/models/Lora/{characters,styles,concepts,poses}
mkdir -p ~/stable-diffusion-webui/models/VAE
mkdir -p ~/stable-diffusion-webui/embeddings/{positive,negative}
# Mevcut model dosyalarını listele
find ~/stable-diffusion-webui/models -name "*.safetensors" -o -name "*.ckpt" | sort
Alt dizinlere göre organize etmek WebUI’daki model seçimini çok daha kolay hale getiriyor. AUTOMATIC1111 WebUI alt dizinleri destekliyor, dolayısıyla realistic/dreamshaper_8.safetensors gibi bir path sorunsuz çalışıyor.
Toplu İndirme: Model Listesinden
Bir projede kullanacağınız modelleri önceden listeleyip toplu indirme yapabilirsiniz. Bunun için basit bir requirements formatı oluşturalım:
# models.txt dosyası oluştur
cat > ~/models.txt << 'EOF'
# FORMAT: MODEL_ID:VERSION_ID:TUR
# Realistic Vision v5.1
4201:130072:Checkpoint
# DreamShaper 8
4384:128713:Checkpoint
# Detail Tweaker LoRA
58390:62833:LORA
# Negative hand embedding
56519:60938:TextualInversion
EOF
Bu dosyayı işleyecek bash scripti:
#!/bin/bash
WEBUI_PATH="$HOME/stable-diffusion-webui"
API_KEY="${CIVITAI_API_KEY}"
MODELS_FILE="${1:-models.txt}"
if [ -z "$API_KEY" ]; then
echo "Hata: CIVITAI_API_KEY environment variable set edilmemis!"
exit 1
fi
while IFS= read -r line; do
# Yorum satirlarini ve bos satirlari atla
[[ "$line" =~ ^#.*$ || -z "$line" ]] && continue
MODEL_ID=$(echo "$line" | cut -d: -f1)
VERSION_ID=$(echo "$line" | cut -d: -f2)
MODEL_TYPE=$(echo "$line" | cut -d: -f3)
case "$MODEL_TYPE" in
"Checkpoint") DEST="$WEBUI_PATH/models/Stable-diffusion" ;;
"LORA") DEST="$WEBUI_PATH/models/Lora" ;;
"VAE") DEST="$WEBUI_PATH/models/VAE" ;;
*) DEST="$WEBUI_PATH/models/Stable-diffusion" ;;
esac
echo ">>> Model indiriliyor: ID=$MODEL_ID, Version=$VERSION_ID"
wget -q -c --content-disposition
--header="Authorization: Bearer $API_KEY"
"https://civitai.com/api/download/models/$VERSION_ID"
-P "$DEST"
echo ">>> Tamamlandi!"
sleep 2 # API rate limit icin kisa bekleme
done < "$MODELS_FILE"
echo "Tum modeller indirildi."
Bu scripti kaydedin ve çalıştırılabilir yapın:
chmod +x ~/download_models.sh
~/download_models.sh ~/models.txt
Safetensors ve CKPT Arasındaki Fark
Bu konuya ayrıca değinmek gerekiyor çünkü sık sorulan bir soru. .ckpt formatı Python pickle kullanan eski formattır ve teorik olarak zararlı kod içerebilir. .safetensors ise Hugging Face’in geliştirdiği güvenli format. Sadece tensor verisi içeriyor, herhangi bir executable code barındırmıyor.
Pratikte ne yapmalısınız:
- Her zaman
.safetensorsformatını tercih edin - Sadece safetensors versiyonu yoksa
.ckptkullanın - Güvenmediğiniz kaynaklardan gelen
.ckptdosyalarını çalıştırmayın
Elinizdeki .ckpt dosyalarını safetensors’a dönüştürmek isterseniz:
# Dönüştürme scripti için gerekli kütüphane
pip install safetensors torch
# Dönüştürme
python3 -c "
import torch
from safetensors.torch import save_file
model = torch.load('model.ckpt', map_location='cpu')
weights = model.get('state_dict', model)
save_file(weights, 'model.safetensors')
print('Donusum tamamlandi.')
"
WebUI’de Model Değişimi ve Reload
Yeni model indirdikten sonra WebUI’yi yeniden başlatmanıza gerek yok. AUTOMATIC1111 üzerinde sayfanın üstündeki checkpoint dropdown’ının yanındaki refresh butonuna tıklayın, yeni model listede görünecek. API üzerinden aynı işlemi yapmak isterseniz:
# WebUI API ile model listesini yenile
curl -s -X POST "http://localhost:7860/sdapi/v1/refresh-checkpoints"
# Mevcut modelleri listele
curl -s "http://localhost:7860/sdapi/v1/sd-models" | python3 -m json.tool | grep title
LoRA Kullanımı: Prompt’a Nasıl Eklenir
LoRA indirdiniz, doğru klasöre koydunuz, şimdi nasıl kullanacaksınız? Prompt içinde özel sözdizimi kullanıyorsunuz:
masterpiece, best quality, <lora:dosya_adi:agirlik>, 1girl, detailed face
Burada dosya_adi uzantısız dosya adı, agirlik ise 0 ile 1 arasında bir değer. Çoğu LoRA için 0.6-0.8 arası iyi sonuç veriyor. Bazı LoRA’lar kendi dokümantasyonlarında önerilen ağırlığı belirtiyor, buna dikkat edin.
Birden fazla LoRA aynı anda kullanabilirsiniz:
masterpiece, <lora:detail_tweaker:0.5>, <lora:lighting_style:0.7>, portrait
Disk Alanı Yönetimi
Modeller ciddi disk alanı tüketiyor. 10-15 checkpoint ve 50 LoRA ile kendinizi 100GB+ bir koleksiyonla bulabilirsiniz. Durum takibi için:
# Model klasörü toplam boyutunu göster
du -sh ~/stable-diffusion-webui/models/
# Türe göre boyut dağılımı
du -sh ~/stable-diffusion-webui/models/*/ | sort -rh
# En büyük dosyaları listele
find ~/stable-diffusion-webui/models -name "*.safetensors" -o -name "*.ckpt"
| xargs ls -lh 2>/dev/null | sort -rh | head -20
# Uzun süre kullanılmayan modelleri bul (30 günden eski)
find ~/stable-diffusion-webui/models -name "*.safetensors" -atime +30
| xargs ls -lh 2>/dev/null
Kullanmadığınız modelleri silmekten çekinmeyin. Civitai hesabınızda veya models.txt dosyanızda kayıtlı olduğu sürece istediğiniz zaman yeniden indirebilirsiniz.
Sık Yapılan Hatalar
Yanlış klasöre koyma: LoRA’yı checkpoint klasörüne veya tersi koymak en yaygın hata. WebUI dosyayı göremez ya da hata verir. Her model türünün kendi klasörü var, buna dikkat edin.
Yarım kalan indirmeler: Özellikle büyük checkpoint dosyalarında internet kesilirse dosya bozuk kalabilir. wget -c ile kaldığı yerden devam edebilirsiniz ama emin olmak için dosya boyutunu kontrol edin:
# Beklenen boyut ile indirilen boyutu karşılaştır
ls -lh ~/stable-diffusion-webui/models/Stable-diffusion/model_adi.safetensors
API key’i koda gömmek: API key’inizi asla kod içine yazmayın. Her zaman environment variable kullanın. .bashrc veya .zshrc dosyanıza şunu ekleyin:
echo 'export CIVITAI_API_KEY="buraya_kendi_key_inizi_yazin"' >> ~/.bashrc
source ~/.bashrc
NSFW içerik ayarları: Civitai hesabınızda NSFW filtreleri açık olduğunda bazı modellerin API üzerinden indirilmesi engellenebiliyor. Account settings’den bu ayarları kontrol edin.
Model Hash Doğrulama
İndirdiğiniz dosyanın bozuk olmadığını ve gerçekten Civitai’da listelendiği model olduğunu doğrulamak için hash kontrolü yapın. Civitai her model dosyası için SHA256 hash bilgisi sağlıyor:
# SHA256 hash hesapla
sha256sum ~/stable-diffusion-webui/models/Stable-diffusion/model_adi.safetensors
# Veya hızlı AutoV2 hash için (WebUI bu formatı kullanır)
python3 -c "
import hashlib
def get_autov2_hash(filepath):
with open(filepath, 'rb') as f:
f.seek(0x100000) # 1MB atla
data = f.read(0x10000) # 64KB oku
return hashlib.sha256(data).hexdigest()[:8]
import sys
print(get_autov2_hash(sys.argv[1]))
" ~/stable-diffusion-webui/models/Stable-diffusion/model_adi.safetensors
Bu hash’i Civitai model sayfasındaki hash bilgisiyle karşılaştırın. Eşleşmiyorsa dosya bozuk ya da değiştirilmiş demektir.
Sonuç
Civitai’dan model indirme kulağa basit gelse de doğru dosyayı seçmek, doğru klasöre koymak, indirme süreçlerini otomatize etmek ve disk alanını yönetmek gerçek bir sistem yöneticisi yaklaşımı gerektiriyor. Manuel tarayıcı indirmesi küçük ölçekli kullanım için yeterli ama ciddiye aldığınız bir kurulum için API destekli scriptler ve organize bir dizin yapısı şart.
Safetensors formatını tercih etmeyi, API key’inizi environment variable olarak yönetmeyi ve model listelerinizi bir dosyada tutmayı alışkanlık haline getirin. Koleksiyonunuz büyüdükçe bu disiplin sizi çok ciddi baş ağrısından kurtaracak. Sonraki adım olarak ComfyUI veya AUTOMATIC1111’in kendi model manager eklentilerini inceleyebilirsiniz, ancak temel indirme ve organizasyon mantığını kavramak her zaman işe yarıyor.
