Büyük Dil Modellerinin (LLM) dağıtımı artık tek seferlik manuel bir görev değildir. Yapay zeka girişimlerini ölçeklendiren işletmeler için model güncellemelerini güvenilir, güvenli ve otomatik olarak dağıtma yeteneği kritik öneme sahiptir. Bu rehber, gelişmiş LLM eğitim ortamları ile sağlam, geleneksel CI/CD hatları arasındaki boşluğu nasıl köprüleyebileceğinizi ve her model artefaktının hassasiyetle test edilmesini, sürümünün yapılmasını ve dağıtılmasını nasıl sağlayabileceğinizi inceler.
Geleneksel CI/CD Neden LLM'ler İçin İşe Yaramaz?
Standart yazılım CI/CD hatları deterministik kod için tasarlanmıştır. LLM'ler ise belirsizlik (non-determinism), devasa dosya boyutları ve karmaşık bağımlılık zincirleri getirir. Sadece bir .bin veya .safetensors dosyasını bir kayıt defterine (registry) göndermek yeterli değildir. Şu konuları ele alan bir hatta ihtiyacınız var:
- Artefakt Yönetimi: Büyük model ağırlıklarını, çıkarım (inference) kodundan ayrı olarak sürümleme.
- Kalite Kapıları: Dağıtımdan önce model performansının otomatik değerlendirmesi.
- Altyapı Sağlama: Hedef ortamın doğru GPU kaynaklarına sahip olduğundan emin olunması.
Hat Mimarisi Tasarlama
Sağlam bir LLM dağıtım hattı tipik olarak üç ayrı aşamadan oluşur: Derleme (Build), Test/Değerlendirme ve Dağıtım (Deploy). Anahtar nokta, model artefaktını Docker görüntünüzle yan yana birincil sınıf bir vatandaş (first-class citizen) olarak ele almaktır.
1. Derleme Aşaması: Çıkarım Motorunu Konteynerleştirme
Dockerfile'ınız model ağırlıklarını içermemelidir. Bunun yerine, çıkarım çerçevesini (ör. vLLM, TGI veya HuggingFace TGI) ve çalışma zamanında modelinizi artefakt kayıt defterinizden indirmek için gerekli kodu içermelidir. Bu, Docker görüntülerinizin hafif kalmasını ve hızlı derlenmesini sağlar.
# Çıkarım Hizmeti için Dockerfile
FROM nvidia/cuda:12.1.0-runtime-ubuntu22.04
# Bağımlılıkları yükle
RUN apt-get update && apt-get install -y python3-pip git
RUN pip install vllm transformers
# Uygulama kodunu kopyala
COPY . /app
WORKDIR /app
# ENV değişkenlerine göre modeli çeken giriş noktası betiği
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
2. Değerlendirme Kapısı
Bir modeli üretime (production) geçirmeden önce, CI hattınızın otomatik değerlendirmeler çalıştırması gerekir. Bu, ayrılmış bir test setine karşı performans ölçümü (benchmarking) veya belirli gecikme/tokan üretimi metriklerinin kontrol edilmesini içerebilir.
# .github/workflows/llm-deploy.yml
name: LLM Deployment Pipeline
on:
push:
branches: [ main ]
jobs:
build-and-eval:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build Docker Image
run: docker build -t my-llm-service:${{ github.sha }} .
- name: Run Model Evaluation
run: |
python eval_scripts/run_benchmark.py \
--model_id "org/model-v2" \
--threshold 0.85
3. Dağıtım: Dinamik Model Yükleme
Değerlendirme başarılı olduğunda, hat Docker görüntüsünü etiketler ve kayıt defterinize (ör. ECR, GCR veya Docker Hub) gönderir. Dağıtım adımı, Kubernetes dağıtımınızı veya sunucusuz (serverless) yapılandırmanızı günceller ve belirli model sürümünü bir ortam değişkeni olarak geçirir.
# kubernetes/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: llm-inference
spec:
template:
spec:
containers:
- name: inference
image: registry.example.com/my-llm-service:latest
env:
- name: MODEL_ID
value: "org/model-v2"
- name: HF_TOKEN
valueFrom:
secretKeyRef:
name: hf-credentials
key: token
Ölçek İçin En İyi Uygulamalar
- Değiştirilemez Etiketler: Üretim modelleri için asla
latestkullanmayın. Anlamlı sürümleme (semantic versioning) veya commit hash'leri kullanın. - Kanarya Yayınları (Canary Releases): Tam dağıtımdan önce gerçek zamanlı olarak gerilemeleri (regression) izlemek için trafiğin küçük bir yüzdesini yeni model sürümüne yönlendirin.
- Gizli Bilgi Yönetimi: LLM'ler genellikle ağırlıkları indirmek için API anahtarları gerektirir. Kimlik bilgilerini sabit kodlamak yerine gizli bilgi yöneticilerini (AWS Secrets Manager, HashiCorp Vault) kullanın.
Sonuç
LLM'leri geleneksel CI/CD iş akışlarına entegre etmek zihniyet değişikliği gerektirir. Model artefaktlarını uygulama kodundan ayırarak ve titiz değerlendirme kapıları uygulayarak, standart yazılım mühendisliğinde elde ettiğiniz güvenilirlik ve hız seviyesini yapay zeka dağıtımında da sağlayabilirsiniz. Bu süreci otomatikleştirmek yalnızca insan hatasını azaltmakla kalmaz, aynı zamanda hızlı yinelemeyi (iteration) mümkün kılarak ekibinizin altyapı karmaşıklığını yönetmek yerine model kalitesini iyileştirmeye odaklanmasını sağlar.
<<<