Model Serving
Model sunumu, eğitilmiş bir modeli ağ API'sinin arkasında barındırır; böylece uygulamalar girdi gönderip tahmin alabilir. Toplu işlemeyi, ölçeklendirmeyi ve sistem durumu kontrollerini ele alır.
Model sunumu, eğitilmiş bir makine öğrenmesi modelinin bir ağ uç noktası (genellikle HTTP veya gRPC) arkasında barındırılmasıdır; böylece uygulamalar girdi gönderip tahmin alabilir. Sunum sistemi ağırlıkları bir kez yükler, CPU'larda veya GPU'larda bellekte tutar, eş zamanlı birçok isteği kabul eder, bunları gruplar hâlinde işler, trafik değiştikçe kopya sayısını artırır veya azaltır, model sürümlerini değiştirir ve sistemin sağlığını bildirir. Google, TensorFlow modellerini üretimde çalıştırmak için TensorFlow Serving'i Şubat 2016'da açık kaynaklı hâle getirdi. Sunum, model paketleme ile tahminlerini izleme arasındaki makine öğrenimi operasyonlarının (MLOps) çalışma zamanı tarafıdır.
Bir Sunum Sistemi İstekleri Nasıl İşler#
Her istek; doğrulamadan, görüntü çözme ve yeniden boyutlandırma gibi ön işlemlerden, bir kuyruktan, modelin kendisinden ve JSON gibi bir yanıt biçimine dönüştüren son işlemlerden geçer. Sunum kararlarının çoğu kuyrukta verilir. Dinamik gruplama, hızlandırıcının tek bir ileri geçişte birden çok girdiyi işlemesi için istekleri birkaç milisaniye bekletir; bu da çıkarım gecikmesini az miktarda artırırken işlem hacmini yükseltir. Kuyruk dolduğunda sunucu yeni istekleri HTTP 429 ile reddeder ve istemcilerin istek hızını azaltmasını sağlar.
Sunum ekipleri p95 ve p99 gibi gecikme yüzdeliklerini, saniyedeki istek sayısı olarak işlem hacmini, hızlandırıcı kullanımını, hata oranını ve sıfırdan ölçeklenen bir kopyanın yanıt verebilmesi için gereken süre olan soğuk başlatma süresini izler. Sürümler kademeli olarak kullanıma alınır: canary sürümünde trafiğin küçük bir bölümü yeni modele yönlendirilir; gölge dağıtımda ise canlı isteklerin kopyaları yanıtları döndürülmeden yeni modele gönderilir.
Bu FastAPI uygulaması, başlangıçta YOLO26 modelini bir kez yükler ve tespitleri JSON olarak döndürür. FastAPI'nin TestClient özelliği, aynı süreçte tam HTTP yığını üzerinden tek bir istek gönderir; bu nedenle örnek sunucu başlatmadan çalışır:
from fastapi import FastAPI
from fastapi.testclient import TestClient
from ultralytics import YOLO
app = FastAPI()
model = YOLO("yolo26n.pt") # Ağırlıkları, sunucu başladığında bir kez yükle
@app.get("/predict")
async def predict(url: str):
"""Detect objects in the image at `url` and return them as JSON."""
results = model(url)
return results[0].summary()
client = TestClient(app)
response = client.get("/predict", params={"url": "https://ultralytics.com/images/bus.jpg"})
print(response.status_code, response.json()[0])Çıktıda durum kodu 200 ve ilk tespit; sınıf adını, güven değerini ve kutu koordinatlarını içeren bir sözlük olarak gösterilir. summary() yapısı, tespit edilen her nesne için bu biçimi üretir. İşleyici async def olduğundan FastAPI bunu tek bir olay döngüsünde çalıştırır ve paylaşılan model aynı anda hiçbir zaman iki isteği işlemez. Paralel çalışması gereken sunucular, her biri kendi modelini yükleyen birden fazla işçi süreci çalıştırır.
Sunum Kalıpları ve Yazılımları#
Bir modelin nasıl sunulacağı, yanıtlarına ne zaman ihtiyaç duyulduğuna bağlıdır; seçenekler kamera akışlarında gerçek zamanlı çıkarımdan gece boyunca çalışan işlere kadar uzanır:
- Çevrimiçi sunum: Kullanıcıya yönelik uygulamalarda ve canlı kamera akışlarında olduğu gibi, çağıran yanıtı beklerken her istek REST veya gRPC üzerinden yanıt alır.
- Toplu sunum: Zamanlanmış bir iş, örneğin bir günlük görüntüleri her gece işleyerek büyük bir veri kümesini çevrimdışı puanlar ve gecikme yerine işlem hacmini optimize eder.
- Akış: Video kareleri veya sensör okumaları geldikçe sonuçlar sürekli gönderilir.
- Uç AI: Model, çoğunlukla optimize edilmiş bir biçime aktarıldıktan sonra doğrudan cihazda çalışır; ağ üzerinden gidip gelmeye gerek kalmaz.
Genel amaçlı sunum yazılımları arasında, eskiden Triton Inference Server olarak bilinen NVIDIA Dynamo-Triton, TensorFlow Serving, Ray Serve, BentoML ve Kubernetes üzerinde KServe bulunur. PyTorch'un TorchServe'i sınırlı bakım aşamasındadır ve başka bir güncelleme planlanmamaktadır. vLLM, SGLang ve TensorRT-LLM gibi LLM sunucuları, token başına üretim için sürekli gruplama ve sayfalanmış KV önbelleği yönetimi ekler. Bu sistemlerin çoğu, modelin, çalışma zamanının ve bağımlılıkların tek bir görüntü olarak sunulması için konteynerlerde çalışır.
Sunum, Dağıtım ve Çıkarım Motorları#
Model sunumu, yakın anlamlı birkaç terimle yakından ilişkilidir. Model dağıtımı, paketleme, altyapı ve aşamalı kullanıma alma dâhil olmak üzere bir modeli üretime alma sürecinin tamamıdır; sunum ise model kullanıma alındıktan sonra isteklere yanıt veren bölümdür. TensorRT, ONNX Runtime veya OpenVINO gibi bir çıkarım motoru, modelin hesaplamalarını yürütür. Sunum sistemi ise bir veya daha fazla motoru ağ iletişimi, kuyruk yönetimi ve ölçeklendirme özellikleriyle bir araya getirir.
Ultralytics Platform, YOLO modellerini özel uç noktalar üzerinden sunar. Bu uç noktaların her biri 42 bölgeden birinde yer alan, tek kiracılı bir hizmettir ve /predict, /health ve oluşturulan /docs rotalarını içerir. Varsayılan boyut, boşta kaldığında sıfıra ölçeklenir ve başlaması yaklaşık bir dakika sürebilir. Modeli değiştirmek uç nokta URL'sini korur; önceki model de yenisi hazır olana kadar hizmet vermeye devam eder.










