Yazı

On-Premises AI İş Yükleri İçin Konteynerizasyon Stratejileri

On-Premises AI · MLOps · Best Practices · Intermediate

Docker, Kubernetes ve GPU destekli orkestrasyon kullanarak on-premises ortamda AI eğitim, çıkarım ve işlem hattı iş yüklerini konteynerize etmek için pratik kalıplar.

Kubernetes ve mikro hizmet mimarisini gösteren bulut altyapısı paneli

Konteynerizasyon Neden On-Premises AI İçin Önemli

On-premises AI ekipleri sıklıkla bulut-yerel ekiplerin yıllar önce çözdüğü bir sorunla mücadele eder: ortam tekrar üretilebilirliği. Bir veri bilimcinin iş istasyonunda başarıyla eğitilen bir model, farklı bir CUDA sürümü nedeniyle paylaşılan GPU sunucusunda başarısız olur. Hazırlamada tüm testleri geçen bir çıkarım hizmeti, bir Python bağımlılığının ana bilgisayarda yükseltilmesi nedeniyle üretimde bozulur.

Konteynerler bunu, uygulamayı, bağımlılıklarını ve çalışma zamanı ortamını tek ve taşınabilir bir yapıta paketleyerek çözer. Model eğitimi için oluşturulan bir konteyner görüntüsü, tam Python sürümünü, belirli CUDA araç takımını, sabitlenmiş kütüphane sürümlerini ve eğitim kodunun kendisini içerir.

On-premises dağıtımlar için özellikle konteynerizasyon iki ek avantaj sağlar. Birincisi, aynı fiziksel donanımı birden fazla ekip (kiracı) arasında, bağımlılık çatışmaları olmadan paylaşmayı mümkün kılar. İkincisi, yaşam döngüsü yönetimini basitleştirir — başarısız bir model dağıtımını geri almak, önceki konteyner görüntüsünü yeniden dağıtmak demektir.

AI İş Yükleri İçin Konteyner Görüntüsü Tasarımı

AI konteyner görüntüleri tipik web uygulaması konteynerlerinden önemli şekillerde farklılık gösterir. Daha büyüktürler, donanıma özgü sürücüler gerektirirler ve genellikle görüntüye gömülmemesi gereken büyük veri setlerine erişim gerektirirler.

Çok aşamalı derlemeler kullanın. İlk aşama derleyicileri kurar, yerel uzantıları oluşturur ve özel CUDA çekirdeklerini derler. İkinci aşama yalnızca derlenmiş yapıtları ve çalışma zamanı bağımlılıklarını temiz bir temel görüntüye kopyalar. Bu genellikle görüntü boyutunu %40-60 azaltır.

CUDA temel görüntüsünü açıkça sabitleyin. nvidia/cuda:latest değil, nvidia/cuda:12.4.1-runtime-ubuntu22.04 kullanın. Konteyner ile ana bilgisayar sürücüsü arasındaki CUDA sürüm uyumsuzlukları, GPU konteyner hatalarının en yaygın kaynağıdır.

Model ağırlıklarını uygulama kodundan ayırın. 7B parametreli bir model içeren bir konteyner görüntüsü onlarca gigabayt ağırlığındadır ve çekilmesi önemli zaman alır. Bunun yerine, çıkarım koduyla yalnız bir konteyner oluşturun ve başlangıçta model ağırlıklarını paylaşılan bir depolama biriminden (NFS, Ceph veya yerel SSD önbelleği) yükleyin.

Sağlık kontrolü uç noktaları ekleyin. AI çıkarım konteynerleri canlılık problarını (süreç çalışıyor mu), hazırlık problarını (model yüklendi ve sunmaya hazır mı) ve isteğe bağlı olarak başlangıç problarını (dakikalarca yükleme süresi olan modeller için) açığa çıkarmalıdır.

Eğitim ve Çıkarım İçin GPU Destekli Kubernetes

Kubernetes, AI dahil konteynerleştirilmiş iş yükleri için standart orkestrasyon platformu haline gelmiştir. Ancak Kubernetes üzerinde AI iş yüklerini çalıştırmak, varsayılan zamanlayıcının kutudan çıkar çıkmaz sağlamadığı bir GPU destekli zamanlama gerektirir.

NVIDIA GPU Operator, Kubernetes kümeniz genelinde GPU sürücülerinin, konteyner çalışma zamanı kancalarının, cihaz eklentilerinin ve izleme ihracılarının dağıtımını otomatikleştirir. Bir kez kurun ve NVIDIA GPU'su olan her düğüm otomatik olarak GPU iş yükleri için kullanılabilir hale gelir.

Eğitim iş yükleri için Kubernetes Jobs veya Kubeflow Training Operator gibi özelleştirilmiş bir eğitim operatörü kullanın. Bunlar çok düğümlü dağıtık eğitimi, hatada otomatik yeniden başlatmayı ve gang zamanlamayı ele alır.

Çıkarım iş yükleri için özel metriklere dayalı yatay pod otomatik ölçekleme ile Kubernetes Deployments kullanın. GPU kullanımı ve istek kuyruğu derinliği, AI çıkarımı için CPU veya bellekten daha iyi ölçekleme sinyalleridir.

Tüm GPU'yu gerektirmeyen küçük modeller için GPU zaman dilimletme veya MIG (Çoklu Örnek GPU) düşünün. MIG, tek bir A100'ü her biri izole bellek ve hesaplamaya sahip yedi bağımsız örneğe kadar böler. Bu, çıkarım iş yükleri için kullanımı önemli ölçüde iyileştirir.

On-Premises Konteyner Kayıt Defterini Yönetme

On-premises bir AI dağıtımı, konteyner görüntülerini altyapınız içerisinde depolayan, sürümleyen ve sunan özel bir konteyner kayıt defterine ihtiyaç duyar.

Harbor, on-premises ortamlar için en yaygın şekilde dağıtılan açık kaynaklı kayıt defteridir. Güvenlik açığı taraması, erişim kontrolü, görüntü imzalama ve replikasyon sağlar. Harbor'i AI platformunuzun izin modelini yansıtan rol tabanlı erişim kontrolü ile yapılandırın.

CI/CD işlem hattınızda bir geçiş kapısı olarak görüntü taraması uygulayın. Her konteyner görüntüsü dağıtılmadan önce bilinen güvenlik açıkları için taranmalıdır. AI görüntüleri özellikle savunmasızdır çünkü genellikle CUDA uyumluluğu için sistem kütüphanelerinin eski sürümlerini sabitlerler.

Çöp toplama politikalarını agresif bir şekilde ayarlayın. AI konteyner görüntüleri büyüktür ve temizlik politikası olmayan bir kayıt defteri depolamayı hızla tüketir. Her görüntünün son N etiketli sürümünü tutun. İzlenebilirlik için görüntüleri Git commit SHA'si ve model sürümü ile etiketleyin.

Veri Birimleri ve Depolamayı Ele Alma

AI iş yükleri, tipik konteynerleştirilmiş uygulamalardan temelden farklı depolama gereksinimlerine sahiptir.

Eğitim verileri için: Veri setlerini salt okunur kalıcı birimler olarak bağlayın. On-premises ortamda bu genellikle geniş uyumluluk için NFS veya terabaytlarca veri okuyan yüksek verimli eğitim işleri için BeeGFS veya Lustre gibi paralel bir dosya sistemi anlamına gelir.

Model ağırlıkları için: Nesne depolaması (MinIO) veya paylaşılan bir dosya sistemi tarafından desteklenen özel bir model deposu kullanın. Sık erişilen modeller için, modelin her pod yeniden başlatmada ağ üzerinden okunması gerekmemesi için bir düğüm yerel SSD önbelleği yapılandırın.

İşlem hattı yapıtları için: Tek bir işlem hattı çalıştırmasına kapsamlı ve çalışma tamamlandığında otomatik olarak temizlenen geçici birimler oluşturun.

Depolama katmanında G/Ç verimini izleyin. Eğitim işi performansı genellikle GPU hesaplamasıyla değil, veri yükleme hızıyla darboğazlanır. Eğitim konteynerleriniz veri beklemek için önemli zaman harcıyorsa, çözüm daha hızlı bir depolama arka ucu veya veri ön-getirme stratejisidir — daha fazla GPU değil.

Konteynerlerden Üretim AI Platformuna

Konteynerizasyon hedef değil — güvenilir bir on-premises AI platformunun üzerine inşa edildiği temeldir. AI iş yükleriniz GPU desteği ile Kubernetes üzerinde konteynerlerde çalıştıktan sonra, gözlemlenebilirlik (GPU metrikleri için Prometheus ve Grafana), güvenlik (ağ politikaları ve pod güvenlik standartları) ve otomasyon (ArgoCD veya Flux ile GitOps tabanlı dağıtımlar) ekleyebilirsiniz.

Kritik ilk adım bir iş yükünü uçtan uca konteynerize etmektir: görüntüyü oluşturun, kayıt defterinize itin, GPU erişimi ile Kubernetes üzerinde dağıtın ve çıkarım trafiği sunun. Tüm AI platformunuzu bir anda konteynerize etmeye çalışmayın. Şu anda doğrudan bir GPU sunucusunda çalışan tek bir çıkarım hizmetiyle başlayın.

Bu artımlı yaklaşımı izleyen ekipler genellikle ilk konteynerleştirilmiş çıkarım hizmetlerini iki hafta içerisinde ve tam konteynerleştirilmiş eğitimden çıkarıma kadar işlem hattını iki ila üç ay içerisinde çalışır hale getirir. Getirisi önemlidir: tekrar üretilebilir ortamlar, donanımın paylaşımlı ve verimli kullanımı, basitleştirilmiş geri almalar ve on-premises AI'yi ölçekte sürdürülebilir kılan operasyonel tutarlılık.

Featured image by Growtika on Unsplash.