33.4 Üzemeltetés, drift és késő címke

33.4.1 1. Cél, előismeret és induló kérdés

A 33.2. Batch és kis szolgáltatás egységben a kiszolgáló oldali szerződést építettük fel: bemeneti séma, kötegelt kérés, késleltetés és modellazonosító. Ott az volt a kérdés, hogy egy kérés érvényes-e. Itt az üzemeltetés következő rétegét vizsgáljuk: mi történik a modell kihelyezése után, amikor a bemeneteket folyamatosan megfigyeljük, de a helyes címkék későn vagy egyáltalán nem állnak rendelkezésre. Az üzemeltető két, gyakran összemosott dolgot akar tudni: (a) változott-e a beérkező adat vagy a modell viselkedése, és (b) romlott-e a modell tényleges pontossága. Az elsőhöz elég a produkciós napló; a másodikhoz hiteles ground truth kell.

Előismeret: a séma és a kérés fogalma a 33.2. Batch és kis szolgáltatás alfejezetből; a független tesztelés és a modellválasztási bizonyíték 32.4. VIII. ellenőrző pont: célhoz illő neurális modell alfejezetből; a küszöb validációs protokollhoz kötése 29.4. Anomáliapontszám rekonstrukcióból alfejezetből; a céleloszlás és a predikcióeloszlás megkülönböztetése 21.4. Osztályarány, súlyozás és céleloszlás alfejezetből.

Induló kérdés. Egy éles osztályozó az elmúlt órában 1000 kérést kapott. Minden kéréshez rögzítettük az inputot, a predikciót és a konfidenciát, de címke egyelőre nincs. Mit tudunk ebből a megfigyelésből a modell pontosságáról? A 3. szakasz tétele szerint a ground-truth accuracy értékéről semmit; a megfigyelés csak a bemeneti eloszlás és a modell kimeneti viselkedésének változásáról adhat jelzést.

33.4.2 2. Alapfogalmak és jelölések

Rögzítsük a GlyphLab-osztályozó produkciós környezetét. A modell három osztályt különböztet meg: K=3K=3, a címkék {0,1,2}\{0,1,2\} rendre vertical, horizontal, diagonal. A bemeneti kép x∈ℝ1×24×24x\in\mathbb R^{1\times 24\times 24}, NCHW alakú, float32, minden pixelérték a [0,1][0,1] intervallumban van.

Definíció (produkciós megfigyelés). A TT időpontig beérkezett NN kérés naplója

𝒟prod={(x(t),ŷ(t),c(t),m(t))}t=1N,\mathcal{D}_{\mathrm{prod}}=\Big\{\big(x^{(t)},\hat y^{(t)},c^{(t)},m^{(t)}\big)\Big\}_{t=1}^{N},

ahol x(t)∈𝒮x^{(t)}\in\mathcal{S} a bemenet, ŷ(t)∈{0,…,K−1}\hat y^{(t)}\in\{0,\ldots,K-1\} a modell által adott osztálypredikció, c(t)∈[0,1]c^{(t)}\in[0,1] a predikcióhoz tartozó konfidencia (például a softmax maximuma), m(t)m^{(t)} pedig a kérést kiszolgáló modellverzió azonosítója. A napló nem tartalmazza a ground truth-ot.

Definíció (séma, schema). A séma 𝒮\mathcal{S} a megengedett bemenetek halmaza:

𝒮Glyph={x∈ℝ1×24×24:0≤xi,j≤1,x minden eleme véges},\mathcal{S}_{\mathrm{Glyph}}=\big\{x\in\mathbb R^{1\times 24\times 24}:\;0\le x_{i,j}\le 1,\;x\text{ minden eleme véges}\big\},

a dtype- és alakfeltétellel együtt. A séma a szerződés statikus része: azt mondja meg, hogy egy input egyáltalán értelmezhető-e a modell számára, nem azt, hogy a modell jól osztályozza.

Definíció (input drift). Jelölje PtrainP_{\mathrm{train}} a tanítóhalmaz eloszlását, PprodP_{\mathrm{prod}} pedig a produkciós bemenetek eloszlását. Rögzített DD eltérésmérő és τ>0\tau>0 küszöb mellett input driftet észlelünk, ha D(Ptrain,Pprod)>τD(P_{\mathrm{train}},P_{\mathrm{prod}})>\tau. Mivel a valódi PprodP_{\mathrm{prod}} nem ismert, a gyakorlatban egy g:𝒮→ℝdg:\mathcal{S}\to\mathbb R^d aggregáló leképezést választunk (például per-pixel átlag és variancia), és a produkciós köteg empirikus átlagát hasonlítjuk a tanítóhalmazból számított referenciához. A DD, gg és τ\tau megválasztása maga is a felügyeleti protokoll része, és mintavételi bizonytalansággal terhelt.

Definíció (delayed label, késő címke). A tt kéréshez tartozó y(t)∈{0,…,K−1}y^{(t)}\in\{0,\ldots,K-1\} ground truth késő címke, ha a kérés időpontjában még nem áll rendelkezésre, hanem egy későbbi időpontban, külön csatornán érkezik meg. A TT időpontig megérkezett címkék halmaza S⊆{1,…,N}S\subseteq\{1,\ldots,N\}, és általában |S|≤N|S|\le N. A napló és a címke összekapcsolásához egy mindkét oldalon szereplő, egyedi request_id szükséges.

Definíció (monitoring, rollback, model card). A monitoring az üzemeltetési naplókból előre rögzített szabályok szerint számított mutatók és riasztási küszöbök összessége. A rollback visszaállítás egy korábbi, mentett modellverzióra, feltéve, hogy a betöltött modell egy független ellenőrző halmazon a mentéskori viselkedést reprodukálja. A model card a modellt kísérő, géppel is olvasható dokumentum, amely rögzíti a bemeneti és kimeneti szerződést, a tanító- és tesztadatot, a mért teljesítményt, az ismert korlátokat és a felhasználási feltételeket.

33.4.3 3. Mely metrika számítható címke nélkül?

A levezetési kötelezettségünk az, hogy pontosan elválasszuk a két metrikacsaládot. A következő állítás azt mondja ki, hogy a ground-truth-ot igénylő metrikák nem azonosíthatók a produkciós megfigyelésből.

Tétel 1 (címke nélküli azonosíthatatlanság). Legyen N≥1N\ge1, K≥2K\ge2, és legyen rögzített a megfigyelhető (𝐱,𝐲̂,𝐜)(\mathbf{x},\hat{\mathbf{y}},\mathbf{c}) hármas, ahol 𝐲̂∈{0,…,K−1}N\hat{\mathbf{y}}\in\{0,\ldots,K-1\}^N. Az accuracy

A(𝐲)=1N∑t=1N𝟙{yt=ŷt}A(\mathbf{y})=\frac1N\sum_{t=1}^{N}\mathbb{1}\{y_t=\hat y_t\}

nem függvénye a megfigyelésnek: léteznek olyan 𝐲1,𝐲2∈{0,…,K−1}N\mathbf{y}_1,\mathbf{y}_2\in\{0,\ldots,K-1\}^N ground-truth vektorok, amelyekre A(𝐲1)≠A(𝐲2)A(\mathbf{y}_1)\ne A(\mathbf{y}_2), miközben a megfigyelhető (𝐱,𝐲̂,𝐜)(\mathbf{x},\hat{\mathbf{y}},\mathbf{c}) mindkét esetben azonos.

Bizonyítás. Konstruktív. Válasszuk minden tt-re y1,t=ŷty_{1,t}=\hat y_t értéket. Ekkor minden indikátor 11, tehát A(𝐲1)=1A(\mathbf{y}_1)=1. Mivel K≥2K\ge2, minden tt-re választhatunk olyan y2,ty_{2,t} értéket, amelyre y2,t≠ŷty_{2,t}\ne\hat y_t. Ekkor minden indikátor 00, tehát A(𝐲2)=0A(\mathbf{y}_2)=0. A két realizáció ugyanazt a predikcióvektort 𝐲̂\hat{\mathbf{y}} hagyja, és az inputok, illetve a konfidenciák definíció szerint azonosak. A megfigyelésből számított bármely determinisztikus függvény értéke tehát azonos, miközben az accuracy értéke 11, illetve 00; a kettő különbözik. ▫\square

A tétel ereje a konstrukció szélsőségességében van: még teljesen determinisztikus predikciósorozat mellett sem lehet eldönteni, hogy a modell mindent eltalált vagy mindent elhibázott, ha a címke nem áll rendelkezésre. Ugyanez az érvelés ismételhető a recall, a precision, a macro-F1, a kalibrációs hiba és a Brier score esetére, mert mindegyik a (y,ŷ)(y,\hat y) párokon értelmezett.

Következmény (metrikák osztályozása). A produkciós naplóból, címke nélkül számítható mutatók pontosan azok, amelyek csak (𝐱,𝐲̂,𝐜,𝐦)(\mathbf{x},\hat{\mathbf{y}},\mathbf{c},\mathbf{m})-től függenek: kérésszám, sémaérvényességi arány, inputeloszlás-mutatók, predikcióeloszlás, konfidenciaeloszlás, késleltetés-percentilisek, szolgáltatási hibaarány. A tényleges teljesítmény mutatói — accuracy, per-class recall, macro-F1, kalibrációs hiba — a hiteles ground truth-ot igénylik. Az input drift kimutatása ezért indikátor, amely további vizsgálatot vált ki; önmagában nem teljesítménymérés.

33.4.4 4. Kézi példa: drift, predikció és késő címke

Legyen a tanítóhalmazból számított per-pixel átlag referenciaértéke μref=0.50\mu_{\mathrm{ref}}=0.50, a per-pixel szórás σref=0.10\sigma_{\mathrm{ref}}=0.10. Egy N=4N=4 kérésből álló produkciós köteg képenkénti átlagintenzitása:

x‾(1)=0.48,x‾(2)=0.52,x‾(3)=0.61,x‾(4)=0.63.\bar{x}^{(1)}=0.48,\quad \bar{x}^{(2)}=0.52,\quad \bar{x}^{(3)}=0.61,\quad \bar{x}^{(4)}=0.63.

A normalizált abszolút eltérés kötegátlaga

D=14∑t=14|x‾(t)−μrefσref|=14(0.2+0.2+1.1+1.3)=0.7.D=\frac14\sum_{t=1}^{4}\left|\frac{\bar{x}^{(t)}-\mu_{\mathrm{ref}}}{\sigma_{\mathrm{ref}}}\right| =\frac14\big(0.2+0.2+1.1+1.3\big)=0.7.

Ha a riasztási küszöb τ=0.5\tau=0.5, akkor a monitoring driftet jelez. A modell mind a négy képre ŷ(t)=0\hat y^{(t)}=0 (vertical) predikciót ad, rendre 0.98,0.97,0.96,0.990.98,0.97,0.96,0.99 konfidenciával. Három nappal később megérkezik a ground truth: y=(0,0,1,1)y=(0,0,1,1). A címkézett accuracy ezen a négy kérésen 2/4=0.502/4=0.50. A példa azt mutatja, hogy a drift-riasztás és a tényleges hiba együtt is felléphet; a következő szakasz viszont azt mutatja, hogy ez nem automatikus oksági kapcsolat.

A teljes monitoring-számítást szemléltető kód:

# lab/n132/monitor_demo.py
import numpy as np

rng = np.random.default_rng(20261020)
mu_ref, sigma_ref = 0.50, 0.10

# Szemléltető produkciós megfigyelés; ez nem mért futás.
means = np.array([0.48, 0.52, 0.61, 0.63], dtype=np.float32)
pred = np.array([0, 0, 0, 0], dtype=np.int64)
conf = np.array([0.98, 0.97, 0.96, 0.99], dtype=np.float32)
y_late = np.array([0, 0, 1, 1], dtype=np.int64)

D = float(np.mean(np.abs((means - mu_ref) / sigma_ref)))
print(f"drift_mutató = {D:.3f}; riasztás = {D > 0.5}")

acc = float(np.mean(pred == y_late))
print(f"címkézett accuracy (N=4) = {acc:.3f}")
# Jellemző kimenet (jelölt szemléltetés):
# drift_mutató = 0.700; riasztás = True
# címkézett accuracy (N=4) = 0.500

33.4.5 5. Delayed label és a naiv átlag torzítása

Ha minden kéréshez megérkezne a címke, akkor a produkciós accuracy torzítatlan empirikus becslését kapnánk. A késő címke azonban szelekciót visz be. Legyen S⊆{1,…,N}S\subseteq\{1,\ldots,N\} a megérkezett címkék halmaza, és tekintsük a naiv becslőt:

ÂS=1|S|∑t∈S𝟙{yt=ŷt}.\hat A_S=\frac1{|S|}\sum_{t\in S}\mathbb{1}\{y_t=\hat y_t\}.

Ez akkor torzítatlan a teljes accuracy-ra nézve, ha a megfigyelési indikátor It=𝟙{t∈S}I_t=\mathbb{1}\{t\in S\} független a hibaeseménytől. Ha viszont a címkézési folyamat a hibás eseteket nagyobb arányban vizsgálja felül, ÂS\hat A_S szisztematikusan alulbecsli a valós pontosságot; ha csak a gyorsan lezárt, könnyű esetek kapnak címkét, felülbecsli.

Kézi ellenpélda a függetlenség hiányára. Legyen N=6N=6, minden predikció 00, a ground truth y=(0,1,1,1,1,1)y=(0,1,1,1,1,1), tehát a teljes accuracy 1/61/6. Tegyük fel, hogy a címke csak azokra az esetekre érkezik meg, ahol a predikció hibás, mert csak a hibákat vizsgálják felül. Ekkor S={2,3,4,5,6}S=\{2,3,4,5,6\}, és ÂS=0/5=0\hat A_S=0/5=0, ami a 00 irányába torzít. Ha viszont a címke csak a hibátlan esetekre érkezik, S={1}S=\{1\} és ÂS=1\hat A_S=1. A monitoring-protokollnak ezért rögzítenie kell a címkeforrás szelekciós szabályát, és a csúszóablakos metrikát csak akkor szabad értelmezni, ha a lefedettség |S|/N|S|/N elég nagy, és a szelekció függetlensége legalább heurisztikusan indokolható.

33.4.6 6. Labor: GlyphOps követési és visszaállítási terv

A feladat egy fiktív üzemeltetési terv a GlyphLab-osztályozóhoz, amelyet a korábbi egységekben tanítottunk. Az alábbi terv a 12.2. Checkpoint és folytathatóság alfejezetben bevezetett checkpoint-szerződésre és a [D09] forrásban leírt state_dict-alapú mentési/betöltési eljárásra épül; a konkrét fájlok és küszöbök a labor saját konfigurációját alkotják.

Modellszerződés. model_id = "glyphnet-v2.0". Bemenet: float32 NCHW (1,24,24)(1,24,24), értékkészlet [0,1][0,1]. Kimenet: 3 logit, az osztályok {0,1,2}\{0,1,2\}. A modell a GlyphLab train splitjén tanult, a legjobb checkpoint a val loss alapján lett kiválasztva; a tesztkiértékelés a clean test 60 képén történt.

Naplózási séma. Minden kérés egy JSONL sor:

{"request_id": "r-0001", "ts": "2026-10-20T09:00:00Z", "schema_ok": true,
 "input_mean": 0.52, "input_var": 0.08, "pred_label": 0,
 "pred_conf": 0.97, "model_id": "glyphnet-v2.0",
 "latency_ms": 3.1, "http_status": 200}

A késő címkék külön JSONL fájlban érkeznek:

{"request_id": "r-0001", "label": 0, "label_ts": "2026-10-23T11:20:00Z", "source": "reviewer"}

Követési mutatók. (1) Sémaérvényességi arány 24 órás ablakon; (2) drift-mutató a per-pixel átlag normalizált abszolút eltéréséből, napi N≥100N\ge100 kérésre; (3) predikcióeloszlás és átlagos konfidencia; (4) a 3 napnál idősebb, lezárt kérésekre csatlakoztatott címkézett accuracy 30 napos csúszó ablakon, csak akkor, ha a join lefedettség legalább 0.8 és a mintaméret legalább 200.

Riasztási küszöbök. Sémaérvényesség 24 h alatt <0.99<0.99; drift-mutató >0.5>0.5; címkézett accuracy <0.85<0.85; HTTP 5xx arány >0.05>0.05.

Rollback-terv. Bármely riasztás emberi vizsgálatot indít. Automatikus visszaállítás csak a címkézett accuracy vagy a sémaérvényesség riasztására történik; a drift-riasztás önmagában csak vizsgálatot vált ki. A visszaállítás lépései: (1) a checkpoints/glyphnet-v1.0.pt state_dict betöltése a deklarált GlyphNet architektúraosztályba; (2) model.eval() mód; (3) a 60 val képen a top-1 predikciók egyezésének ellenőrzése a mentéskori naplóval; (4) a model_id csere és a rollback esemény naplózása. Az (1)–(3) nélkül a visszaállítás nem minősül ellenőrzöttnek.

A monitoring-politika minimális kódja:

# lab/n132/rollback_policy.py
import numpy as np

EXPECTED_SHAPE = (1, 24, 24)

def validate_schema(x):
    if not isinstance(x, np.ndarray):
        return False, "nem numpy.ndarray"
    if x.dtype != np.float32:
        return False, f"dtype={x.dtype}, várt float32"
    if x.shape != EXPECTED_SHAPE:
        return False, f"shape={x.shape}, várt {EXPECTED_SHAPE}"
    if x.min() < 0.0 or x.max() > 1.0:
        return False, "érték [0,1]-en kívül"
    if not np.all(np.isfinite(x)):
        return False, "nem véges érték"
    return True, "OK"

def drift_metric(x_batch, mu_ref, sigma_ref, eps=1e-6):
    # x_batch: (N,1,24,24) float32; mu_ref, sigma_ref: (1,24,24) float32
    mu_prod = x_batch.mean(axis=0, dtype=np.float64).astype(np.float32)
    z = np.abs(mu_prod - mu_ref) / (sigma_ref + eps)
    return float(z.mean())

def join_labels(requests, labels):
    by_id = {r["request_id"]: r for r in requests}
    joined = []
    for lab in labels:
        r = by_id.get(lab["request_id"])
        if r is not None:
            joined.append((r["request_id"], r["pred_label"], lab["label"]))
    return joined

def rollback_decision(metrics, policy):
    reasons = []
    if metrics["schema_valid_rate_24h"] < policy["min_schema_valid_rate"]:
        reasons.append("alacsony sémaérvényesség")
    if metrics["drift"] > policy["max_drift"]:
        reasons.append("input drift riasztás")
    if (metrics["labeled_n"] >= policy["min_labeled_n"]
            and metrics["labeled_accuracy"] < policy["min_accuracy"]):
        reasons.append("alacsony címkézett accuracy")
    if metrics["http_5xx_rate"] > policy["max_5xx_rate"]:
        reasons.append("magas 5xx arány")
    return ("rollback", reasons) if reasons else ("keep", [])

A fenti kód kimenete nem futtatott mérés; a labor átadandó eredménye egy OPERATIONS_PLAN.md dokumentum, amely a fenti küszöböket, a JSONL-sémákat, a join-szabályt és a rollback-lépéseket rögzíti, valamint a fenti szkript a naplófájlra futtatva. A model_id, a küszöbök és a checkpoint-útvonalak a labor saját konfigurációi, nem külső benchmarkból származó állítások.

33.4.7 7. Feladatok

F1 (fogalmi, nehézség 1). Soroljon fel három, a produkciós naplóból címke nélkül számítható mutatót és három, csak hiteles ground truth-tal számítható mutatót. Mindegyikhez adja meg a definíciót a 2. szakasz jelöléseivel. Átadandó: a hat definíció egy-egy képletben vagy pontos szöveges alakban.

F2 (levezetési, nehézség 2). Alkalmazza a Tétel 1 konstrukcióját N=5N=5, K=3K=3 esetre. Legyen a megfigyelt predikcióvektor 𝐲̂=(0,0,1,1,2)\hat{\mathbf{y}}=(0,0,1,1,2). Adjon meg egy 𝐲1\mathbf{y}_1 és egy 𝐲2\mathbf{y}_2 ground-truth vektort, amelyekre A(𝐲1)=1A(\mathbf{y}_1)=1 és A(𝐲2)=0A(\mathbf{y}_2)=0, és indokolja, miért nem számítható ki az accuracy a megfigyelésből. Átadandó: a két vektor, a két accuracy kiszámítása és az azonosíthatatlansági indoklás.

F3 (implementációs, nehézség 2). Írjon validate_schema függvényt a 6. szakasz sémájához, és futtasson négy tesztesetet: helyes input; rossz dtype (például float64); rossz alak (24,24)(24,24); [0,1][0,1]-en kívüli érték. A függvény (bool, str) párt adjon vissza. Átadandó: a függvény kódja, a négy hívás és a várt eredmények logikai értékkel.

F4 (hibakeresési, nehézség 2). Egy szolgáltatás a késő címkéket a request_id helyett a beérkezési sorrend szerint párosítja a kérésekhez. Egy napon a label-feed 20 perces késéssel, a kérések sorrendjétől eltérő sorrendben érkezik. Mi a hiba, mi a következménye, hogyan javítható, és milyen teszttel ellenőrizhető a javítás? Átadandó: a hiba oka, a következmény egy konkrét példán, a javított join-szabály és egy olyan teszt, amelyben a két lista sorrendje eltér.

F5 (kísérleti/transzfer, nehézség 3). Tervezzen 7 napos produkciós megfigyelési protokollt a GlyphOps-osztályozóhoz, ha a késő címke várható késése 3 nap. Határozza meg a megfigyelési egységet, a napi aggregálást, a riasztási küszöböket, a torzítás kezelését és a rollback feltételeit. Indokolja, miért nem használja a 3 napnál fiatalabb ablakot a címkézett accuracy számításához. Átadandó: egy legalább féloldalas protokoll a fenti elemekkel és a korlátok kimondásával.

33.4.8 8. Megoldások és indoklás

F1 megoldás. Címke nélkül számítható:

Csak ground truth-tal számítható:

A két csoport elválasztása a Tétel 1 következménye: az első csoport nem függ yy-tól, a második igen, és a tétel konstrukciója mellett a második értéke megváltozhat azonos megfigyelés mellett.

F2 megoldás. 𝐲1=(0,0,1,1,2)\mathbf{y}_1=(0,0,1,1,2); ekkor minden elem egyenlő a predikcióval, tehát A(𝐲1)=5/5=1A(\mathbf{y}_1)=5/5=1. 𝐲2=(1,1,2,2,0)\mathbf{y}_2=(1,1,2,2,0); minden elem különbözik a predikciótól, tehát A(𝐲2)=0/5=0A(\mathbf{y}_2)=0/5=0. A megfigyelés (𝐱,𝐲̂,𝐜)(\mathbf{x},\hat{\mathbf{y}},\mathbf{c}) mindkét esetben azonos, így a megfigyelésből képzett bármely determinisztikus függvény ugyanazt adja, miközben az accuracy 11 és 00 — ezért az accuracy nem azonosítható.

F3 megoldás. A függvény a 6. szakasz kódjában szerepel. A tesztek:

# lab/n132/test_schema.py
import numpy as np
from rollback_policy import validate_schema

x_ok = np.zeros((1, 24, 24), dtype=np.float32)
x_bad_dtype = np.zeros((1, 24, 24), dtype=np.float64)
x_bad_shape = np.zeros((24, 24), dtype=np.float32)
x_out = np.zeros((1, 24, 24), dtype=np.float32); x_out[0,0,0] = 1.5

for name, x in [("ok", x_ok), ("bad_dtype", x_bad_dtype),
                ("bad_shape", x_bad_shape), ("out_of_range", x_out)]:
    ok, msg = validate_schema(x)
    print(name, ok, msg)
# Várt: ok True OK; bad_dtype False; bad_shape False; out_of_range False.

Az ellenőrzés a (bool, str) szerződést és a négy logikai értéket hasonlítja össze; numerikus tolerancia itt nem kell, mert a séma eldöntési feladat.

F4 megoldás. Hiba: a párosítás a lista indexét használja azonosító helyett. Következmény: ha a sorrend eltér, a label egy másik kérés predikciójához kapcsolódik, és a számított accuracy hamis lesz. Példa: a kérések sorrendje [r1, r2], predikciók [0, 0], a címkék késve [r2: 1, r1: 0] sorrendben érkeznek; a sorrendpárosítás (r1, 1) hibát ad, a helyes (r1, 0). Javítás: a join kulcsa a request_id. Ellenőrzés: olyan teszt, ahol a label-lista szándékosan permutált, és az eredménynek a request_id szerinti párosítást kell adnia:

# lab/n132/test_join.py
from rollback_policy import join_labels
req = [{"request_id": "r1", "pred_label": 0, "pred_conf": 0.9},
       {"request_id": "r2", "pred_label": 0, "pred_conf": 0.8}]
lab = [{"request_id": "r2", "label": 1},
       {"request_id": "r1", "label": 0}]
print(join_labels(req, lab))
# Várt: [('r1', 0, 0), ('r2', 0, 1)] a request_id szerint, nem a beérkezési sorrendben.

F5 megoldás (minta-terv). Megfigyelési egység: kérés; a napló minden kéréshez request_id-t rendel. Napi aggregálás: naponta rögzítjük a sémaérvényességi arányt, a drift-mutatót, a predikcióeloszlást és a 3 napnál idősebb kérésekre csatlakoztatott accuracy-t. Küszöbök: sémaérvényesség <0.99<0.99; drift >0.5>0.5; accuracy <0.85<0.85, ha a lezárt mintaméret ≥200\ge200 és a lefedettség ≥0.8\ge0.8. Torzítás kezelés: a 3 napos késés miatt a fiatal ablakban a címkék még nem reprezentatívak, ezért azokat kizárjuk a címkézett metrikából; a lefedettségi arányt naplózzuk, és a szelekciós szabályt dokumentáljuk. Rollback: automatikus visszaállítás a v1.0 state_dict-re, ha a címkézett accuracy vagy a sémaérvényesség riasztást ad, a 6. szakasz ellenőrzési lépéseivel. Korlát: a 7 napos ablak rövid, a drift küszöb mintavételi ingadozást is jelezhet; a terv csak ezt a fiktív osztályozót és ezt az adatforgalmat írja le, általánosításához hosszabb megfigyelés kell.

33.4.9 9. Tipikus tévedés, önellenőrzés és visszahívás

Tipikus tévedés. Az input drift kimutatását automatikusan a modellhiba oksági bizonyítékaként értelmezzük. Ez kétirányban hibás. Egyrészt a drift-riasztás mellett is lehet a modell pontos: ha a produkcióban sötétebb képek jelennek meg, a drift-mutató megszólal, de ha a modell kontrasztnormalizáló előfeldolgozása vagy tanult invariáns reprezentációja ezt kezeli, a ground-truth accuracy változatlan maradhat. Másrészt a drift hiánya mellett is nőhet a hiba: ha a címkéző szabályzat megváltozik, a bemeneti eloszlás azonos marad, de a korábban tanult cél már nem érvényes. Az oksági állításhoz kontrollált beavatkozás vagy legalább a címkézett metrika együttmozgásának vizsgálata kell; a drift egymagában korrelációs jelzés.

Önellenőrzés. (1) Meg tudom-e nevezni minden monitoring-mutatóhoz, hogy függ-e yy-tól? (2) A rollback előtt ellenőriztem-e a betöltött modell kimenetét egy független halmazon? (3) A csúszóablakos accuracy számításánál kizártam-e a még le nem zárt kéréseket? (4) A model card különválasztja-e a mért teszt eredményét a produkciós monitoring jelzésétől?

Visszahívás. A 33.2. Batch és kis szolgáltatás alfejezetben a séma a kérésérvényesség statikus szerződése volt; itt a sémaérvényességi arány már dinamikus üzemeltetési mutató. A 29.4. Anomáliapontszám rekonstrukcióból alfejezetben a küszöböt validációs címkékhez kötöttük; itt ugyanez az elv a csúszóablakos riasztási küszöbre vonatkozik. A 21.4. Osztályarány, súlyozás és céleloszlás alfejezetben a tanítóhalmaz céleloszlását különböztettük meg a predikcióeloszlástól; itt a produkciós predikcióeloszlás megváltozása nem azonos a címkeeloszlás megváltozásával.

33.4.10 10. Rövid összefoglaló

Az üzemeltetési monitoring két eltérő kérdést kezel: a rendelkezésre álló megfigyelésből a bemeneti eloszlás, a sémaérvényesség és a modell kimeneti viselkedésének változása követhető; a tényleges pontossághoz hiteles ground truth kell. A Tétel 1 konstruktívan bizonyítja, hogy azonos input-, predikció- és konfidencianapló mellett az accuracy 1 és 0 is lehet, tehát a címkét igénylő metrika nem azonosítható a naplóból. A késő címke szelekciós torzítást vihet a csúszóablakos becslésbe, ezért a join lefedettségét és a címkeforrás szabályát rögzíteni kell. A drift-riasztás vizsgálatot indít, nem oksági bizonyíték; a rollback csak ellenőrzött state_dict-betöltéssel és független kimenet-egyezéssel érvényes.

33.4.11 11. Következő alkalmazás

A 34.1. Mért késleltetés, throughput és memória a hatékonyság mérését vezeti be: a késleltetés, a throughput és a memória mérését ugyanolyan protokollal, mint itt a monitoringot — előre rögzített egységgel, ismétléssel és a hardverfeltételek kimondásával. Az üzemeltetési naplóban gyűjtött latency-értékek ott válnak tudományos teljesítményállítássá.

33.4.12 12. Felhasznált források