tag model-deployment
Bu sayfada model-deployment etiketi ile işaretlenmiş 6 yapay zeka kavramını bulabilirsiniz.
Docker, 2013 yılında Solomon Hykes tarafından geliştirilen ve Linux çekirdeğinin konteyner teknolojisini kullanıcı dostu bir API ile erişilebilir kılan açık kaynaklı bir konteynerizasyon platformudur. Temel amacı "bende çalışıyor ama sende çalışmıyor" sorununu ortadan kaldırmaktır: Uygulama kodu, çalışma zamanı, kütüphaneler ve tüm sistem bağımlılıkları bir araya getirilerek "image" adı verilen taşınabilir bir paket oluşturulur; bu paketten çalıştırılan "container", bulut sunucusundan yerel makineye kadar her ortamda aynı davranışı sergiler. Sanal makinelerden (VM) farkı kritik öneme sahiptir. VM'ler tam bir işletim sistemi çalıştırırken Docker container'ları ana sistemin çekirdeğini paylaşır. Bu sayede container'lar saniyeler içinde başlar, megabayt mertebesinde yer kaplar ve çok daha az RAM tüketir. Container'lar sanallaştırma yerine işletim sistemi düzeyinde izolasyon sunar. AI ve makine öğrenimi ekosisteminde Docker birkaç kritik sorunu çözer. Araştırmacılar, farklı Python sürümleri, CUDA versiyonları veya kütüphane kombinasyonları gerektiren deneyleri Dockerfile aracılığıyla yeniden üretilebilir ortamlar olarak tanımlayabilir. Model deployment sürecinde eğitilmiş modeller API sunucularıyla birlikte konteynerize edilerek Kubernetes gibi orkestrasyon araçlarıyla büyük ölçekte dağıtılabilir. MLflow, Kubeflow ve Airflow gibi MLOps araçlarının büyük çoğunluğu Docker'ı temel alır. Temel bileşenler şunlardır: Dockerfile (image'ı tanımlayan yapılandırma dosyası), image (çalıştırılabilir paket), container (çalışan image örneği), registry (Docker Hub gibi image deposu) ve docker-compose (çoklu container uygulamalarını yönetme aracı). docker pull, docker run ve docker build komutları günlük kullanımın temelini oluşturur. GPU destekli AI iş yükleri için NVIDIA Container Toolkit, GPU'ların container'lara aktarılmasını mümkün kılar; böylece farklı CUDA sürümleri gerektiren modeller aynı fiziksel makinede yan yana çalıştırılabilir. Bu özellik özellikle araştırma ortamlarında deney yeniden üretilebilirliğini güçlü biçimde destekler. Endüstride Docker imajları katmanlı yapısı ile verimli depolanır ve dağıtılır.
Docker (Konteyner Teknolojisi)
Docker, 2013 yılında Solomon Hykes tarafından geliştirilen ve Linux çekirdeğinin konteyner teknolojisini kullanıcı dostu bir API ile erişilebilir kılan açık kaynaklı bir konteynerizasyon platformudur. Temel amacı "bende çalışıyor ama sende çalışmıyor" sorununu ortadan kaldırmaktır: Uygulama kodu, çalışma zamanı, kütüphaneler ve tüm sistem bağımlılıkları bir araya getirilerek "image" adı verilen taşınabilir bir paket oluşturulur; bu paketten çalıştırılan "container", bulut sunucusundan yerel makineye kadar her ortamda aynı davranışı sergiler. Sanal makinelerden (VM) farkı kritik öneme sahiptir. VM'ler tam bir işletim sistemi çalıştırırken Docker container'ları ana sistemin çekirdeğini paylaşır. Bu sayede container'lar saniyeler içinde başlar, megabayt mertebesinde yer kaplar ve çok daha az RAM tüketir. Container'lar sanallaştırma yerine işletim sistemi düzeyinde izolasyon sunar. AI ve makine öğrenimi ekosisteminde Docker birkaç kritik sorunu çözer. Araştırmacılar, farklı Python sürümleri, CUDA versiyonları veya kütüphane kombinasyonları gerektiren deneyleri Dockerfile aracılığıyla yeniden üretilebilir ortamlar olarak tanımlayabilir. Model deployment sürecinde eğitilmiş modeller API sunucularıyla birlikte konteynerize edilerek Kubernetes gibi orkestrasyon araçlarıyla büyük ölçekte dağıtılabilir. MLflow, Kubeflow ve Airflow gibi MLOps araçlarının büyük çoğunluğu Docker'ı temel alır. Temel bileşenler şunlardır: Dockerfile (image'ı tanımlayan yapılandırma dosyası), image (çalıştırılabilir paket), container (çalışan image örneği), registry (Docker Hub gibi image deposu) ve docker-compose (çoklu container uygulamalarını yönetme aracı). docker pull, docker run ve docker build komutları günlük kullanımın temelini oluşturur. GPU destekli AI iş yükleri için NVIDIA Container Toolkit, GPU'ların container'lara aktarılmasını mümkün kılar; böylece farklı CUDA sürümleri gerektiren modeller aynı fiziksel makinede yan yana çalıştırılabilir. Bu özellik özellikle araştırma ortamlarında deney yeniden üretilebilirliğini güçlü biçimde destekler. Endüstride Docker imajları katmanlı yapısı ile verimli depolanır ve dağıtılır.
Kubernetes (Kubernetes (K8s))
Kubernetes (K8s), konteynerleştirilmiş uygulamaların dağıtımını, ölçeklenmesini ve yönetimini otomatikleştiren açık kaynaklı bir konteyner orkestrasyon platformudur. İlk olarak Google'ın iç altyapı projesi Borg'dan ilham alınarak 2014 yılında geliştirilen Kubernetes, aynı yıl açık kaynak olarak duyurulmuş ve 2016'da Cloud Native Computing Foundation'a (CNCF) bağışlanmıştır. "K8s" kısaltması, K ile s arasındaki 8 harften türetilmiştir. Yapay zeka ve makine öğrenmesi iş yüklerinde Kubernetes kritik bir altyapı katmanı işlevi görür. Model eğitim pipeline'ları, inference sunucuları ve veri işleme bileşenleri Kubernetes üzerinde GPU node'ları arasında verimli biçimde dağıtılabilir. Horizontal Pod Autoscaler (HPA) mekanizması, gelen istek yüküne göre inference pod sayısını dinamik olarak artırıp azaltır; bu da hem maliyet kontrolü hem de yüksek erişilebilirlik açısından önemlidir. Kubernetes mimarisi iki ana katmandan oluşur: Control Plane ve Worker Node'lar. Control Plane; küme durumunu depolayan etcd veritabanını, API isteklerini işleyen API Server'ı, pod yerleşim kararlarını veren Scheduler'ı ve mevcut durumu istenen durumla eşitleyen Controller Manager'ı barındırır. Worker Node'lar ise pod'ları çalıştıran Kubelet servisi, ağ kurallarını yöneten Kube-proxy ve gerçek konteyner çalışma ortamını (containerd veya CRI-O) içerir. ML ekipleri için Kubeflow, KServe, Seldon Core ve BentoML gibi platformlar, Kubernetes üzerinde çalışan ML spesifik orkestrasyon çözümleri sunar. kubectl komut satırı aracı ve YAML tabanlı manifest dosyaları, Kubernetes kaynaklarını bildirimsel (declarative) biçimde yönetmeyi kolaylaştırır. Helm chart'ları ise karmaşık ML altyapısının paketlenip tekrarlanabilir biçimde kurulmasına olanak tanır. GitOps yaklaşımıyla Argo CD veya Flux gibi araçlar, Git deposundaki değişiklikleri otomatik olarak kümeye uygulayarak ML model güncellemelerinin tam denetlenebilirliğini ve geri alınabilirliğini garanti eder. Kubernetes, modern MLOps disiplininin temel taşlarından biri olarak kabul görmekte ve üretim ortamında model güvenilirliğini artırmaktadır.
LLM Inference (Büyük Dil Modeli Çıkarımı)
LLM inference (büyük dil modeli çıkarımı), eğitimi tamamlanmış bir yapay sinir ağının yeni bir girdi metnine (prompt) yanıt üretmek amacıyla gerçek zamanlı olarak çalıştırılmasıdır. Eğitim sürecinin aksine inference, modelin ağırlıklarını güncellemez; yalnızca ileri besleme (forward pass) gerçekleştirir ve her adımda bir sonraki tokeni tahmin eder. Temel performans metrikleri şunlardır: gecikme (latency — ilk tokenin üretildiği time-to-first-token ve toplam yanıt süresi), verim (throughput — saniyedeki token sayısı, tokens/s) ve maliyet (GPU/CPU saat başına işlenen token miktarı). Bu üç faktörün dengesi, inference altyapısının tasarımını doğrudan yönlendirir. KV Cache (Key-Value Cache), transformer modellerinde her self-attention adımında yeniden hesaplama yapmaktan kaçınmak için önceki token'lerin anahtar ve değer matrislerini GPU belleğinde saklayan bir optimizasyon tekniğidir. Özellikle uzun bağlam pencerelerinde (128K token gibi) VRAM kullanımını önemli ölçüde artırdığından, bellek yönetimi kritik bir tasarım kararı haline gelir. Quantization (sayısallaştırma), model ağırlıklarını FP32'den INT8, INT4 veya GGUF/AWQ formatlarına indirerek bellek tüketimini ve hesaplama süresini düşürür. 4-bit AWQ kuantizasyonu, tam hassasiyetli modele kıyasla 4 kat daha az VRAM gerektirirken yalnızca yüzde 1-3 kalite kaybına yol açar. Büyük ölçekte LLM inference için özelleşmiş çerçeveler geliştirilmiştir: vLLM (PagedAttention ile dinamik KV cache yönetimi ve sürekli batching), TensorRT-LLM (NVIDIA GPU optimizasyonu), TGI (Hugging Face Text Generation Inference) ve llama.cpp (CPU ve Apple Silicon için kuantize çıkarım). Bu araçlar sürekli batching (continuous batching) tekniğiyle binlerce eş zamanlı isteği verimli biçimde işler. Türkiye'deki geliştiriciler için yerel inference seçenekleri şunlardır: 24 GB VRAM'e sahip RTX 3090 ile Gemma 4B veya Llama 3.1 8B tam hassasiyetle; Apple M-serisi Mac'lerde llama.cpp + GGUF Q4 formatıyla 13B modeller; bulut için Google Vertex AI, AWS Bedrock veya Replicate API. Veri gizliliği gerektiren kullanım durumlarında (sağlık, hukuk) yerel inference hem KVKK uyumu açısından hem de gecikme avantajı bakımından öne çıkar.
Microservices (Mikro Hizmet Mimarisi)
Microservices yani mikro hizmet mimarisi büyük ve monolitik bir yazılım uygulamasını her biri kendi sorumluluğuna sahip küçük bağımsız ve birbirleriyle iletişim kuran servisler topluluğuna bölen bir yazılım mimarisi yaklaşımıdır. Her mikro hizmet belirli bir iş işlevini yerine getirir; kendi veritabanına sahip olabilir kendi teknoloji yığınıyla geliştirilir ve bağımsız olarak dağıtılıp ölçeklendirilebilir. Bu mimari Netflix Amazon ve Uber gibi büyük teknoloji şirketleri tarafından popüler hale getirilmiştir. Monolitik mimaride tüm bileşenler tek bir dağıtılabilir birim olarak paketlenir; uygulamanın herhangi bir parçasını güncellemek tüm sistemin yeniden dağıtılmasını gerektirir. Mikro hizmet mimarisinde ise her servis kendi yaşam döngüsüne sahiptir: farklı ekipler farklı servisleri bağımsız olarak geliştirebilir test edebilir ve production ortamına alabilir. Bu esneklik ölçek büyüdükçe geliştirme hızını korumak ve yalnızca yoğun talep gören servisleri ölçeklendirmek açısından kritik bir avantaj sunar. Yapay zeka projeleri için bu mimari özellikle değerlidir. Model serving veri ön işleme A/B testi ve orkestrasyon katmanları ayrı servisler olarak tasarlanabilir; böylece yeni bir model versiyonu canlı ortama alınırken sistemin geri kalanı kesintisiz çalışmaya devam eder. Farklı AI modelleri (NLP görüntü tanıma öneri motoru) her biri kendi kaynağını bağımsız tüketen servisler olarak çalışır; darboğazlar kolayca tespit edilip giderilebilir. Servisler REST gRPC veya mesaj kuyrukları (Kafka RabbitMQ) aracılığıyla iletişim kurar. API gateway dış istemcilerle merkezi iletişim noktası görevi görür. Devre kesici (circuit breaker) desenleri zincirleme hataları önler; servis keşfi mekanizmaları dinamik ölçeklendirmede adres çözümlemesini otomatikleştirir. Docker konteynerleri ile Kubernetes orkestrasyonu mikro hizmet dağıtımının ve yönetiminin temel altyapısını oluşturur. Küçük ekipler için başlangıçta monolitik mimari daha pratik olabilir; ancak sistem karmaşıklığı arttıkça mikro hizmetlere geçişin faydaları belirginleşir.
Model Serving (Model Servis (Çıkarım Sunumu))
Model serving (model sunucu), eğitilmiş bir makine öğrenimi modelini gerçek dünya kullanıcılarına veya sistemlerine çıkarım (inference) hizmeti verecek biçimde dağıtma ve işletme sürecinin tüm bütününü kapsar. Araştırma ortamında yüksek doğruluk sergileyen bir model, güvenilir bir servis altyapısı kurulmadan iş değerine dönüşemez; model serving bu boşluğu dolduran mühendislik disiplinidir. Bir model serving sistemi gelen HTTP veya gRPC isteklerini alır, modeli bellekte etkin biçimde tutar ve tahmin sonuçlarını olabildiğince kısa gecikmeyle geri döndürür. Büyük ölçekli sistemlerde bu süreç saniyede binlerce isteği karşılar. Başarının üç temel metrikle ölçüldüğü kabul görür: gecikme süresi (latency, tek bir isteğin yanıt süresi), verim (throughput, birim zamanda işlenen istek sayısı) ve kullanılabilirlik (availability, sistemin kesintisiz çalışma oranı). Servis modelleri kullanım senaryosuna göre üçe ayrılır. Çevrimiçi servis (online serving) gerçek zamanlı tahmin gereksinimlerini karşılar ve öneri sistemleri ile dolandırıcılık tespitinde yaygındır. Toplu iş servisi (batch serving) büyük veri kümeleri üzerinde önceden planlanmış tahminler yürütür; gecikme toleransı yüksek, işlem hacmi büyük görevler için uygundur. Akış servisi (stream serving) ise Kafka veya Pub/Sub gibi mesaj kuyrukları üzerinden sürekli veri akışını işler; IoT sensör analizi ve gerçek zamanlı anomali tespiti bu kategoride yer alır. Performans optimizasyonu açısından kuantizasyon (quantization), model ağırlıklarını FP32'den INT8 veya FP16'ya indirerek bellek kullanımını ve gecikmeyi azaltır. Dinamik gruplama (dynamic batching), birden fazla isteği bir arada işleyerek GPU verimliliğini artırır. Model önbellekleme (caching) ise tekrar eden sorguların yeniden hesaplanmasını önler. NVIDIA Triton Inference Server, TorchServe, BentoML ve KServe gibi çıkarım sunucuları bu optimizasyonları yönetilen biçimde sunar. Bulut tarafında AWS SageMaker, Google Vertex AI ve Azure ML, tam yönetilen model serving altyapısı olarak öne çıkar.
Shadow Deployment (Gölge Dağıtımı)
Shadow deployment (gölge dağıtımı), yeni bir makine öğrenmesi modelinin mevcut üretim modeliyle eş zamanlı olarak gerçek trafiği işlediği ancak tahminlerini hiçbir zaman kullanıcılara sunmadığı bir dağıtım stratejisidir. Gelen her istek hem mevcut modele (champion) hem de yeni modele (challenger) iletilir; kullanıcı yalnızca champion modelinin yanıtını alırken challenger modelin tahminleri günlüğe kaydedilerek çevrimdışı analiz edilir. Bu yaklaşım, sıfır kullanıcı riski taşıyan en güvenli model test yöntemi olarak öne çıkar: challenger modelde regresyon ya da hata oluşsa bile gerçek kullanıcıların hiçbiri bundan etkilenmez. Netflix, Uber ve yüksek frekanslı işlem şirketleri gibi büyük teknoloji kuruluşları, yeni öneri algoritmalarını veya fiyatlandırma modellerini canlıya almadan önce shadow deployment'ı standart bir kalite kapısı olarak kullanmaktadır. A/B testi farklı kullanıcı segmentlerine farklı modeller sunarken ve canary dağıtımı trafiğin küçük bir bölümünü yeni sisteme yönlendirirken, shadow deployment tam trafiği ikiye katlayarak altyapı maliyetini artırır ancak maksimum güvenliği sağlar. Değerlendirme süreci genellikle 2–14 gün sürer; yüksek hacimli sistemlerde istatistiksel anlamlılığa çok daha hızlı ulaşılır.