tag ModelDeployment
Docker Nedir? AI Geliştirmede Konteyner Teknolojisi (Konteyner Teknolojisi)
Bu sayfada ModelDeployment (Docker Nedir? AI Geliştirmede Konteyner Teknolojisi (Konteyner Teknolojisi)) etiketi ile işaretlenmiş 5 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.
Docker Nedir? AI Geliştirmede Konteyner Teknolojisi (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.
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ı ile 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.
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 Nedir? Mikro Hizmet Mimarisi Rehberi (Mikro Hizmet Mimarisi)
Microservices (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ını yönetebilir, bağımsız olarak geliştirilip test edilebilir ve diğer servislerden bağımsız biçimde dağıtılabilir. Mikro hizmet mimarisi, geleneksel monolitik yapıların karmaşıklığını çözmek amacıyla 2010'lu yılların başında Netflix, Amazon ve Uber gibi büyük teknoloji şirketleri tarafından benimsendi. Monolitik bir uygulamada tüm bileşenler tek bir kod tabanında birbirine sıkıca bağlıdır; bu durum, küçük bir değişikliğin tüm uygulamanın yeniden derlenmesini ve dağıtılmasını gerektirmesi anlamına gelir. Mikro hizmetlerde ise her servis kendi yaşam döngüsüne sahiptir. Yapay zeka ve makine öğrenimi ekosisteminde mikro hizmetler kritik bir rol oynar. Bir AI ürününü bileşenlerine ayırmak, farklı ekiplerin bağımsız çalışmasına ve farklı dillerin ya da çerçevelerin kullanılmasına olanak tanır: örneğin veri önişleme servisi Python ile yazılırken API katmanı Go ile yazılabilir. Model serving, özellikle ayrı bir mikro hizmet olarak tasarlandığında ölçeklendirme kolaylaşır; yoğun talep dönemlerinde yalnızca bu servis ölçeklendirilir, tüm uygulama değil. Mikro hizmetler HTTP/REST, gRPC veya mesaj kuyrukları (Kafka, RabbitMQ) aracılığıyla birbirleriyle iletişim kurar. Her servisin kendi veri deposu olabilir; bu sayede hizmetler arası bağımlılık azalır ve geliştirme hızı artar. Ancak dağıtık sistemlerin getirdiği ağ gecikmesi, servis keşfi, veri tutarlılığı ve izlenebilirlik gibi yeni zorluklar da beraberinde gelir. Docker ve Kubernetes gibi konteyner teknolojileri, mikro hizmetlerin dağıtımını standartlaştırmış ve operasyonel yükü önemli ölçüde azaltmıştır. CI/CD pipeline'ları sayesinde her servis bağımsız olarak test edilip production'a alınabilir.
Model Serving (Model Servis (Çıkarım Sunumu))
Model Serving, eğitilmiş bir makine öğrenimi modelini üretim ortamında gerçek kullanıcılara veya sistemlere sunmak için kullanılan altyapı, araçlar ve süreçlerin bütününü ifade eder. Bir model ne kadar iyi eğitilmiş olursa olsun, bir servis arayüzü olmadan son kullanıcılara değer üretemez; model serving bu kritik boşluğu kapatır. Model serving süreci birkaç temel bileşenden oluşur: çıkarım sunucusu (inference server), model deposu (model registry), yük dengeleyici (load balancer) ve izleme sistemi (monitoring). Bunların bir araya gelmesiyle oluşan sistem, gelen tahmin isteklerini milisaniyeler içinde yanıtlayabilir. Sektörde yaygın olarak kullanılan servis çerçeveleri arasında TorchServe (PyTorch ekosistemi), NVIDIA Triton Inference Server (çok modelli, GPU-optimize), TensorFlow Serving, FastAPI ve BentoML yer alır. Her biri farklı performans, ölçeklenebilirlik ve model formatı gereksinimlerine göre seçilir. Servis modelleri açısından üç ana yaklaşım bulunur: çevrimiçi servis (online serving), gerçek zamanlı ve düşük gecikme süresi gerektiren tahmin isteklerinde kullanılır; toplu iş servisi (batch serving), büyük veri setleri üzerinde toplu tahmin çalıştırılmasına olanak tanır ve gerçek zamanlılık gerekmez; akış servisi (stream serving) ise Kafka veya Pub/Sub gibi mesaj kuyrukları üzerinden sürekli veri akışını işler. Çıkarım hızını artırmak için quantization (kuantizasyon), pruning (budama), ONNX formatına dönüştürme ve TensorRT optimizasyonu gibi teknikler yaygın olarak uygulanır. Kubernetes üzerinde çalışan model serving sistemi, gelen istek yüküne göre yatay olarak ölçeklendirilebilir. Otoscaling, maliyet optimizasyonu açısından kritik öneme sahiptir ve kullanım artışlarında otomatik olarak yeni sunucu instance'ları devreye girer.