Fəsil 05 · 4 dəq oxu

Notebook-dan production-a

Notebook-dan production-a

Train edilmiş model bir fayldır. Production-dakı model isə sistemdir: data pipeline-ları, serving yolu, monitoring, retraining dövrü və owner. Bu ikisinin arasındakı məsafə mühəndisliyin əsas hissəsinin yaşadığı yerdir.

Training pipeline koddur

Model-i yaradan notebook reproducible deyil. Cell-lər sıradan kənar işlədilib, dəyişənin üstünə yazılıb, data faylı o vaxtdan dəyişib. İlk production tapşırığı notebook-u pipeline-a çevirməkdir:

  • Versioned data. Model-i dəqiq hansı sətirlərin, hansı tarixə olan vəziyyəti ilə train etdiyini bilin. snapshot-unu çəkin və ya saxlayın.
  • Versioned kod. məntiqi, model konfiqurasiyası və evaluation script-i repository-də yaşayır.
  • Versioned . Hər train edilmiş model metric-ləri, , data versiyası və kod commit-i ilə birlikdə saxlanılır. MLflow kimi alətlər də, manifest-li sadə object store da işə yarayır.
  • Deterministic run-lar. Random seed-ləri sabitləyin. Kitabxana versiyalarını pin edin. Pipeline-ı iki dəfə işlədin və eyni model-in alındığını yoxlayın.

Hazırkı production model-ini sıfırdan retrain edə bilmirsinizsə, o sizə məxsus deyil.

Serving: training/serving skew problemi

training-də bir cür (batch, tarixi data üzərində), isə başqa cür (real-time, hər request üçün) hesablanır. Bu ikisi arasındakı istənilən fərq model-i səssizcə zəiflədir. Tipik günahkarlar:

  • Kitabxana upgrade-i dəyişir.
  • Batch job UTC istifadə edir; API isə yerli vaxt.
  • Null training-də sıfır, serving-də isə "skip" kimi emal olunur.
  • cari event-i əhatə edən, training-də isə onu kənarda saxlayan history aggregate-i.

Çarə kodu paylaşmaqdır: training üçün hesablayan eyni funksiya onu serving üçün də hesablayır. Feature store-lar bunu rəsmiləşdirir: bir dəfə hesablayıb hər iki yola serve edir.

Serving pattern-ləri

PatternNecəNəyə uyğundur
Batch scoringGecə job-u prediction-ları cədvələ yazırRecommendation-lar, risk score-ları, real-time lazım olmayan hər şey
Online APIHTTP/ endpoint arxasında modelFraud yoxlamaları, search ranking, hər request üzrə hər şey
EmbeddedModel tətbiqin və ya cihazın içində ship edilirMobil, edge, oflayn
StreamingModel event stream-i istehlak edir və prediction-lar verirMonitoring, anomaly detection

Use case imkan verirsə, batch ilə başlayın. Qurmaq, test etmək və etmək üçün ən sadəsi odur.

Monitoring: model birinci gündən çürüyür

Software səs-küylə sınır. Model-lər isə səssizcə: rəqəm qaytarmağa davam edirlər və rəqəmlər tədricən pisləşir. Üç layer-i izləyin.

System health. , error rate, . İstənilən service-dəki kimi.

. Hər production-dakı distribution-ını ilə müqayisə edin. Population stability index, KL divergence və ya sadə histogram müqayisəsi. Distribution-ı yerindən tərpənmiş fərziyyələri pozulmuş model deməkdir.

Output quality. Ən çətini, çünki label-lar gec gəlir və ya heç gəlmir. gəldiyi yerdə (müştəri churn etdimi? transaction fraud idimi?) canlı metric-i hesablayın və validation score-u ilə müqayisə edin. Gəlmədiyi yerdə prediction distribution-ını izləyin: birdən-birə 10 dəfə çox transaction-ı flag edən fraud model-i ya fraud dalğası tapıb, ya da sınıb.

Alert-ləri yalnız error-lara deyil, də qoşun.

Retraining

Əvvəlcədən qərar verin:

  • Trigger. Schedule üzrə (həftəlik), zamanı və ya metric düşəndə.
  • Data window. Son N ay? Recency weighting ilə bütün tarixçə?
  • Gate. Yeni model olunmazdan əvvəl held-out təzə set üzərində cari model-i üstələməlidir. Müqayisəni avtomatlaşdırın.
  • . Əvvəlki model bir əmrlə yenidən edilə bilən vəziyyətdə qalır.

Gate-siz retraining bir pis data gününün bir pis model ayına çevrilmə yoludur.

Deployment təhlükəsizliyi

  • . Yeni model production trafikini alır və prediction-ları log edir, amma hərəkət etmir. Bir həftə canlı model ilə müqayisə edin.
  • . Trafikin 5%-ni yeni model-ə yönləndirin; metric-ləri izləyin; genişləndirin.
  • . Biznes metric-i (conversion, gəlir) model metric-indən vacib olduqda onu controlled experiment ilə birbaşa ölçün.

Ownership

Production-dakı model-in service owner ilə eyni öhdəlikləri daşıyan owner-i olmalıdır: alert-ləri üçün on-call, retraining-inə görə məsul və qərarlarını onlardan təsirlənən insanlara izah edə bilən. Owner-siz model-lər heç kimin söndürməyə və heç kimin retrain etməyə cəsarət etmədiyi şeyə çevrilir.

Checklist

Model canlıya çıxmazdan əvvəl:

  • Training pipeline versioned datadan end-to-end işləyir
  • kodu training və serving arasında paylaşılır
  • Baseline və model metric-ləri time-based qeyd edilib
  • Slice metric-ləri fairness və subgroup uğursuzluqları baxımından nəzərdən keçirilib
  • monitoring-i alert threshold-ları ilə qurulub
  • Prediction distribution-ı izlənilir
  • test edilib
  • Owner təyin edilib

Tapşırıqlar

  1. Train etdiyiniz hər hansı model-i götürün. Onu təmiz maşında sıfırdan retrain edin. Eyni model-i aldınızmı?
  2. Həmin model-dəki hər sadalayın və onun training üçün harada, serving üçün harada hesablandığını qeyd edin. Eyni koddurmu?
  3. İlk növbədə almaq istədiyiniz alert-ini və onu trigger edəcək threshold-u müəyyən edin.