Observability
Gözlemlenebilirlik, bir sistemin ürettiği günlükler, metrikler ve izlerden sistemin iç durumunu açıklayabilme yeteneğidir. OpenTelemetry'yi ve ML gözlemlenebilirliğini ele alır.
Gözlemlenebilirlik, bir yazılım sisteminin davranışı hakkında yeni soruları yanıtlamaya yetecek ölçüde, yeni kod dağıtmadan sistemin yaydığı telemetriden—başlıca günlükler, ölçümler ve izlerden—sistemin içinde neler olduğunu anlayabilme yeteneğidir. Terim, Rudolf Kálmán'ın bir sistemi, çıktılarından iç durumu belirlenebiliyorsa 1960'ta gözlemlenebilir olarak tanımladığı kontrol teorisinden gelir. Sistemlerin çok sayıda hizmete bölündüğü ve arızaların önceden hazırlanan gösterge panelleriyle örtüşmediği 2010'larda yazılım ekipleri de bu terimi kullanmaya başladı. Makine öğrenimi sistemlerinde gözlemlenebilirlik verileri ve tahminleri de kapsar: modelin hangi girdileri aldığı, ne ürettiği, ne kadar emin olduğu ve bunların zaman içinde nasıl değiştiği.
Günlükler, Ölçümler ve İzler#
Genellikle gözlemlenebilirliğin temel direkleri olarak adlandırılan üç telemetri türü farklı soruları yanıtlar:
- Ölçümler: İstek hızı, hata oranı, gecikme yüzdelikleri, bellek ve GPU kullanımı gibi sayısal zaman serileri; saklama maliyetleri düşüktür ve gösterge panelleriyle uyarılar için uygundur. Google'ın site güvenilirliği mühendisliği kitabı, her hizmette ölçülmesi gereken dört altın sinyal olarak gecikme, trafik, hatalar ve doygunluğu tanımlar.
- Günlükler: Tek tek olayların zaman damgalı kayıtlarıdır. İstek kimliği, model sürümü ve girdi boyutu gibi alanlar içeren JSON biçimindeki yapılandırılmış günlükler, filtreleme ve sayım için en kullanışlı olanlardır.
- İzler: Bir isteğin dokunduğu her hizmette izlediği yol; her biri ad, başlangıç zamanı, süre ve nitelikler içeren span'lerden oluşan bir ağaç olarak kaydedilir ve isteğin zamanını nerede harcadığını gösterir.
OpenTelemetry, OpenTracing ve OpenCensus projelerinin 2019'da birleştirilmesiyle oluşturuldu. Üç sinyalin tümü için satıcıdan bağımsız API'ler, SDK'lar ve bir ağ protokolü (OTLP) sağlar; Prometheus, Grafana ve Jaeger gibi arka uçlar da bu sinyalleri depolar ve görüntüler. Bu örnek, OpenTelemetry Python SDK ile tek bir görüntü sınıflandırma isteğinin izini sürer; istek için bir üst span, her aşama için de bir alt span kaydeder:
import torch
import torchvision
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
from opentelemetry.sdk.trace.export.in_memory_span_exporter import InMemorySpanExporter
# Keep finished spans in memory; a production service exports them over OTLP instead
exporter = InMemorySpanExporter()
provider = TracerProvider()
provider.add_span_processor(SimpleSpanProcessor(exporter))
tracer = provider.get_tracer("classifier")
model = torchvision.models.resnet18().eval()
frame = torch.rand(3, 1080, 1920)
# Trace one request as a parent span with a child span for each stage
with tracer.start_as_current_span("predict", attributes={"model.name": "resnet18", "image.height": 1080}):
with tracer.start_as_current_span("preprocess"):
batch = torchvision.transforms.functional.resize(frame, [224, 224]).unsqueeze(0)
with tracer.start_as_current_span("inference"), torch.inference_mode():
logits = model(batch)
spans = exporter.get_finished_spans()
names = {span.context.span_id: span.name for span in spans}
for span in spans:
parent = names[span.parent.span_id] if span.parent else "-"
print(f"{span.name:<11} {(span.end_time - span.start_time) / 1e6:5.1f} ms parent: {parent}")Apple M5 Pro CPU üzerinde örnek, 1,0-1,4 ms'lik bir preprocess span'i ve 7-9 ms'lik bir inference span'i yazdırır; her ikisinin üst span'i predict olur. Ayrıca 8-10 ms'lik bir predict span'i de yazdırır; böylece iz, istek süresinin çoğunu modelin kullandığını gösterir. Span'ler OTLP üzerinden dışa aktarıldığında, bir isteği işleyen her hizmet aynı iz kimliği altında span'ler ekler; Jaeger gibi bir arka uç da bunları tek bir zaman çizelgesi olarak gösterir.
Gözlemlenebilirlik ve İzleme#
Model izleme, önceden tanımlanmış ölçümler, gösterge panelleri ve uyarı eşikleriyle, örneğin hata oranının %1'i veya çıkarım gecikmesinin hedefi aşması gibi bilinen arıza türlerini takip eder. Gözlemlenebilirlik ise müşteri, model sürümü, kamera veya başka bir niteliğe göre ayrıntılı telemetriyi sonradan dilimleyerek kimsenin beklemediği arızaları araştırmayı mümkün kılan daha geniş bir özelliktir. Google SRE kitabı, izlemenin neyin bozuk ve neden bozuk olmak üzere iki soruyu yanıtlamasını ister; inceleme, üç sinyalin tümünde ilk yanıttan ikinciye ilerler:
Açıklanabilir yapay zekâ, bir modelin girdi özelliklerinden veya iç etkinleşmelerinden hareketle belirli bir çıktıyı neden ürettiğini açıklayan ayrı bir alandır; bu alandaki katkı değerleri ek bir sinyal olarak kaydedilebilir.
Makine Öğreniminde Gözlemlenebilirlik#
Makine öğrenimi sistemleri çoğu zaman sessizce başarısız olur: bir bilgisayarlı görü modeli, kamera yer değiştirdiği, ışık koşulları değiştiği veya yeni bir ürün ortaya çıktığı için tahminleri kötüleşirken her isteğe HTTP 200 yanıtı verebilir. Bu nedenle makine öğrenimi gözlemlenebilirliği, olağan hizmet sinyallerine veri ve tahmin telemetrisini de ekler. Ekipler, veri kaymasını algılamak için görüntü boyutu ve parlaklığı gibi girdi istatistiklerini kaydeder; sınıf sayıları, boş sonuçlar ve ortalama güven gibi tahmin dağılımlarını izler; gerçek değer etiketleri çoğu zaman günler sonra geldiğinde de segment bazında doğruluk hesaplar. Eğitim sırasında geri çağırımlar, her çalıştırmanın kayıp eğrilerini, ölçümlerini ve sistem kullanımını deney izleme araçlarına, örneğin TensorBoard ve MLflow araçlarına gönderir. Yapay zekâ ajanları ve büyük dil modeli uygulamaları için izler her istemi, getirme adımını, araç çağrısını ve yanıtı yakalar; OpenTelemetry GenAI anlamsal kuralları da gen_ai.usage.input_tokens gibi nitelikleri standartlaştırarak token sayılarının ve maliyetlerinin araçlar arasında tutarlı olmasını sağlar.
Ultralytics Platform üzerindeki her özel uç nokta, yerleşik dağıtım izleme özelliklerine sahiptir: istek sayısı, hata oranı ve p95 gecikme kartları; önem düzeyleri ile hata ve uyarı kayıtları için bir Hatalar filtresi içeren Günlükler sekmesi; ayrıca en yaygın sınıfları, zaman içindeki ortalama güveni, görüntü başına tahminleri ve model çıkarım süresini istek gecikmesinden ayrı olarak gösteren tahmin istatistikleri. Her istek başarılı olmaya devam etse bile güven eğrisindeki düşüş veya en yaygın sınıflardaki değişim bu grafiklerde görünür.










