Serverless Computing
Sunucusuz bilişim, sağlayıcı sunucuları yönetip ölçeklerken kodu isteğe bağlı çalıştırır ve sunucu sayısını sıfıra indirir; ücretlendirme istek başına yapılır. Soğuk başlangıçları ve yapay zekâ kullanımını ele alır.
Sunucusuz bilişim, sağlayıcının kodu yalnızca bir olay tetiklediğinde çalıştırdığı, altta yatan sunucuları otomatik olarak başlatıp ölçeklendirdiği, trafik durduğunda bunları sıfıra indirdiği ve ayrılmış makineler yerine istekler ile çalıştırma süresi için ücret aldığı bir bulut yürütme modelidir. Sunucular hâlâ vardır, ancak geliştiriciler sunucuları hiçbir zaman tahsis etmez, yamalamaz veya boyutlandırmaz. Model, Kasım 2014'te duyurulan AWS Lambda ile yaygınlaştı ve bugün Lambda, Azure Functions ve Cloud Run functions gibi işlev platformlarının yanı sıra Google Cloud Run ve Azure Container Apps gibi sunucusuz kapsayıcıları da kapsıyor. UC Berkeley araştırmacıları, 2019 tarihli "Bulut Programlamayı Basitleştirmek: Sunucusuz Bilişime Berkeley Bakışı" makalesinde bu modelin güçlü yanlarını ve sınırlarını anlattı. Makine öğrenimi için sunucusuz yaklaşım, ani artışlar gösteren veya öngörülemeyen trafiğe sahip model sunumu için uygundur; çünkü ani trafik artışları arasındaki boşta kalan bir GPU sunucusunun ücretini ödemek, işin kendisinden daha pahalıya gelebilir.
Sunucusuz Yürütme Nasıl Çalışır#
Kod, bir işlev veya kapsayıcı imajı olarak paketlenir ve HTTP isteği, nesne depolamaya gelen dosya, kuyruktaki ileti veya zamanlanmış görev gibi tetikleyicilere bağlanır. Bir olay geldiğinde kullanılabilir durumda olan sıcak bir örnek varsa platform, işleyiciyi hemen bu örnekte çalıştırır. Aksi hâlde soğuk başlatma gerçekleştirir: yalıtılmış bir sanal alan oluşturur; örneğin AWS'nin Lambda için geliştirdiği Firecracker mikroVM'lerinden birini başlatır, kodu yükler, dil çalışma zamanını başlatır ve olayı işlemeden önce işleyicinin dışındaki başlatma kodunu çalıştırır. Örnekler durumsuz ve geçicidir; bu nedenle bir isteğin ötesinde korunması gereken her şey harici depolamaya veya veritabanına gider.
Soğuk Başlatmalar ve Makine Öğrenimi Modelleri#
Makine öğrenimi, soğuk başlatmaları pahalı hâle getirir; çünkü başlatma sırasında PyTorch gibi bir çerçeve içe aktarılır ve yüzlerce megabayt yer kaplayabilen model ağırlıkları yüklenir. Standart yaklaşım, modeli örnek başına bir kez, işleyicinin dışında veya ilk kullanımda yükleyerek her sıcak çağrının modeli yeniden kullanmasını sağlamaktır. Bu işleyici, torchvision'dan bir ResNet-50 sınıflandırıcısıyla bu yaklaşımı izliyor:
import time
import torch
import torchvision
model = None # module state survives between invocations while the instance stays warm
def handler(event, context):
"""Classify one image tensor, building the model only on a cold start."""
global model
cold_start = model is None
if cold_start:
model = torchvision.models.resnet50().eval() # built once per instance
with torch.inference_mode():
logits = model(event["image"])
return {"cold_start": cold_start, "class_id": int(logits.argmax())}
for _ in range(3):
start = time.perf_counter()
response = handler({"image": torch.rand(1, 3, 224, 224)}, context=None)
print(response["cold_start"], f"{(time.perf_counter() - start) * 1000:.0f} ms")Apple M5 Pro CPU'da ilk çağrı ağı kurar ve yaklaşık 0,2 saniye sürer; ağı yeniden kullanan iki sıcak çağrının her biri ise yaklaşık 15 ms sürer. Ekipler, daha küçük kapsayıcı imajları, kompakt veya niceleme uygulanmış modeller ve ONNX Runtime gibi daha hafif çalışma zamanları kullanarak kalan soğuk başlatma süresini kısaltır. Alternatif olarak, Lambda ayrılmış eşzamanlılık veya Cloud Run minimum örnekleri gibi en az sayıda sıcak örneği hazır tutarak soğuk başlatmayı ortadan kaldırır; ancak bu durumda boşta geçen süre için yeniden ücret alınır.
Yapay Zekâ İş Yüklerinde Sunucusuz Yaklaşım#
Sunucusuz mimari, olay güdümlü bilgisayarlı görü işlem hatlarına uygundur. Nesne depolamaya yükleme, görüntüyü bir eğitim veri kümesine katılmadan önce veri ön işlemeyle doğrulayıp yeniden boyutlandıran bir işlevi tetikleyebilir. Bir güvenlik alarm sisteminde ise hareket sensörü tek bir kareyi nesne algılama işlevine göndererek yalnızca bir insan bulduğunda uyarı verebilir. Geri kalanını platform sınırları belirler: AWS Lambda, GPU olmadan ve en fazla 10.240 MB bellekle, her çağrıyı en fazla 15 dakika çalıştırır. Bu özellik kompakt modellerle CPU çıkarımına uygundur; uzun eğitim çalıştırmalarını, hatta çok sayıda GPU üzerinde dağıtık eğitimi olanaksız kılar. GPU destekli sunucusuz seçenekler bu açığı kapatmıştır: Cloud Run, sıfıra kadar ölçeklenebilen kapsayıcılara NVIDIA L4 GPU'ları bağlar; Modal gibi platformlar ise GPU süresini saniye başına ücretlendirir.
Ultralytics Platform, YOLO dağıtımlarına aynı ödünleşimi sunar: varsayılan boyutu 1 vCPU ve 2 GiB olan uç nokta ücretsizdir ve boşta olduğunda sıfıra ölçeklenir; boşta durumdan başlatılması yaklaşık bir dakika sürebilir. Özel boyutlar ise bir örneği sıcak tutar ve çalışma süresi boyunca ücretlendirilir.
Sunucusuz Yaklaşım ve İlgili Modeller#
- Hizmet Olarak Altyapı: İstek gelip gelmediğine bakılmaksızın gün boyu çalışan ve ücretlendirilen, işletim sistemi ve ölçeklendirme yönetimini müşterinin yaptığı sanal makineler. Uzun eğitim işleri genellikle burada çalıştırılır.
- Kubernetes: Ekibin işlettiği kümelerdeki kapsayıcıları düzenler. Knative, Kubernetes üzerine istek odaklı sıfıra ölçeklendirme ekler; KServe de modelleri sunmak için bunu kullanır.
- Uç bilişim: Kodu, veriyi üreten cihazlarda veya bu cihazların yakınında çalıştırır. Sunucusuz yaklaşım kodu bir bulut bölgesinde çalıştırır; bazı uç platformları ise kullanıcıların yakınındaki çok sayıda küçük konumda işlevler çalıştırarak ikisini birleştirir.










