Hızla değişen Büyük Dil Modeli (LLM) ortamında, hizmeti kesmeden modelleri güncelleme yeteneği, üretim düzeyindeki uygulamalar için kritik bir gerekliliktir. Kullanıcılar saniyenin altındaki yanıt süreleri ve yüksek erişilebilirlik beklediğinde geleneksel "dünyayı durdurma" güncellemeleri artık uygulanabilir değildir. Bu gönderi, LLM altyapısına özel olarak tasarlanmış mavi-yeşil dağıtım stratejilerinin nasıl uygulanacağını ve bir model sürümünden diğerine kusursuz geçişlerin nasıl sağlanacağını ele almaktadır.
LLM Dağıtım Zorluğunu Anlama
Stateless (durumsuz) mikro hizmetlerin aksine, LLM'ler ağır kaynaklardır. Bir modelin GPU belleğine yüklenmesi dakikalar alabilir ve dağıtım sırasında ani trafik artışları kaynak çakışmalarına neden olabilir. Mavi-yeşil dağıtım, iki özdeş üretim ortamını koruyarak bunu azaltır: Mavi (mevcut canlı sürüm) ve Yeşil (yeni aday sürüm). Trafik başlangıçta yalnızca Mavi'ye akar. Yeşil ortam başlatılıp doğrulandıktan sonra, trafik kademeli olarak Yeşil'e kaydırılır. Sorunlar ortaya çıkarsa, trafik anında Mavi'ye geri döner.
Mimari Bileşenler
LLM'ler için sağlam bir mavi-yeşil kurulumu üç temel bileşen gerektirir:
- Model Kayıt Defteri: Model ağırlıklarının farklı sürümlerini saklar.
- Çıkarım Sunucusu: Model yükleme ve sunumunu yönetir (ör. TGI, vLLM veya Hugging Face Transformers kullanılarak).
- Yük Dengeleyici / Geçit: Ağırlıklara veya etiketlere göre trafik yönlendirmesini yönetir.
Adım Adım Uygulama
1. Yeni Ortamı Başlatma (Yeşil)
Trafik kaydırılmadan önce, Yeşil ortam yeni modeli yüklemelidir. Bu işlem, mevcut Mavi hizmetini engellememek için asenkron olarak tetiklenmelidir.
# dağıtımı orkestrasyon için sözde-python betiği
import subprocess
import time
from kubernetes import client, config
def load_model_green_env(model_id: str):
"""
'green' ad alanında güncellenmiş modelle yeni bir pod dağıtın.
"""
# yeşil dağıtımı ölçeklendirin
deployment_name = "llm-green"
namespace = "prod"
# konteyner görüntüsünü yeni model sürümüne güncelleyin
patch_body = [
{"op": "replace", "path": "/spec/template/spec/containers/0/image",
"value": f"registry.example.com/llm:{model_id}"}
]
api_client = client.PatchClient()
api_client.patch_namespaced_deployment(
name=deployment_name,
namespace=namespace,
body=patch_body
)
# pod hazır olana kadar bekleyin (model GPU'ya yüklendi)
wait_for_pods_ready(namespace, label="env=green", timeout=600)
print(f"Green environment ready with model {model_id}")
2. Trafik Kaydırma Stratejisi
Yeşil model yüklendikten sonra, trafiğin %100'ünü anında değiştirmezsiniz. Bunun yerine, mavi-yeşil çerçevesi içinde bir canary (deneme) kaydırması kullanırsınız. Yeşil'e %1 trafikle başlayın, gecikme ve hata oranlarını izleyin ve kademeli olarak %5, %25 ve sonunda %100'e artırın.
# Örnek: Ağırlıklı yönlendirme için Istio Virtual Service kullanımı
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: llm-service
spec:
hosts:
- "llm.internal"
http:
- route:
- destination:
host: llm-blue
weight: 95
- destination:
host: llm-green
weight: 5
3. Doğrulama ve Geri Alma
Otomatik doğrulama hayati önem taşır. Yeşil uç noktasına standart test sorguları gönderen sentetik sonda kullanın. Şunları kontrol edin:
- Artan gecikme yüzdelikleri (P99).
- Token üretim hataları veya biçimsiz JSON çıktılar.
- GPU bellek taşması uyarıları.
Eğer herhangi bir metrik eşiği aşarsa, otomasyon betiği anında %100 trafiği Mavi'ye geri yönlendirmeli ve Yeşil dağıtımını durdurmaldır.
LLM Mavi-Yeşil Dağıtımları İçin En İyi Uygulamalar
- Model Isıtma: Canlı trafiği almadan önce her zaman Yeşil model üzerinde sahte istemlerden oluşan bir ısıtma partisi çalıştırın. Bu, GPU çekirdeklerinin optimize edildiğinden ve bellek önbelleğinin doldurulduğundan emin olmanızı sağlar.
- GPU Kaynak Yalıtımı: MPS (Multi-Process Service) kullanılmadığı sürece, Mavi ve Yeşil ortamlarının aynı GPU cihazları için yarışmamasını sağlayın. İdeal olarak, ayrı GPU havuzları veya adanmış düğümler kullanın.
- Durum Yönetimi: LLM'ler sohbet geçmişi açısından durumsuzdur (sohbet geçmişi için harici Redis kullanılıyorsa), bu nedenle modelleri değiştirmek güvenlidir. Ancak yerel KV-önbellekleri kullanılıyorsa, geçiş sırasında önbelleğin temizlendiğinden veya geçersiz kılındığından emin olun.
- Gözlemlenebilirlik: Tüm günlükleri ve metrikleri model sürüm kimliğiyle etiketleyin. Bu, Mavi ile Yeşil'in performansını gerçek zamanlı panolarda karşılaştırmanızı sağlar.
Sonuç
LLM'ler için mavi-yeşil dağıtımlarını uygulamak yalnızca erişilebilirlik ile ilgili değildir; güvenle ilgilidir. Yeni model ağırlıklarının riskini bir gölge ortamda izole ederek ve trafiği kademeli olarak kaydırarak, kullanıcılarınızı kalite veya performans düşüşlerinden korursunuz. Modeller büyüdükçe ve daha karmaşıklaştıkça, bu orkestrasyon desenleri LLMOps için standart haline gelecektir. Küçük kaydırmalarla başlayın, doğrulamanızı otomatikleştirin ve Mavi ortamını anında geri alma için her zaman hazır tutun.