İçeriğe atla
SinaptikLabAI KNOWLEDGE PLATFORM
DersOrta30 dakikaMachine Learning Engineer · 10. ders

Tekrarlanabilir model paketleme

Veri, kod ve ortamı birlikte sürümleyen bir model paketinin içinde ne olması gerektiğini, eğitim künyesinin nasıl yazılacağını ve eğitim-servis sapmasının nasıl kapatılacağını öğretir.

Önkoşul: Machine Learning

BU DERSİN SONUNDA

  • Tekrarlanabilirliğin veri, kod ve ortam eksenlerini ayrı ayrı sabitlemek
  • Ön işleme ile modeli tek bir paket sınırının içine almak
  • Eğitim künyesi ve girdi sözleşmesi tasarlamak
  • Model sürüm numarasını değişikliğin türüne göre tanımlamak
  1. 1

    Teori

    Kavramın çalışma mantığı

  2. 2

    Örnek

    Gerçek bir senaryo üzerinde gösterim

  3. 3

    Lab

    Uygulamalı alıştırma

  4. 4

    Test

    Kısa ölçüm

  5. 5

    Proje

    Rotadaki projeye katkı

Kısa cevap

Paketleme, modelin bir ağırlık dosyası olmaktan çıkıp yeniden üretilebilir bir yapıya dönüşmesidir. Üç şey birlikte sürümlenmelidir: veri kesimi, kod ve ortam. Üçünden biri sabitlenmemişse "aynı modeli tekrar üret" isteği bir arkeoloji çalışmasına döner. Paketin sınırı da nettir: ham girdiden tahmine giden yoldaki her dönüşüm paketin içindedir.

Teori: tekrarlanabilirliğin iki seviyesi#

Bit düzeyinde aynı çıktıyı üretmek ile istatistiksel olarak eşdeğer bir model üretmek farklı hedeflerdir. Birincisi rastgelelik tohumunu, iş parçacığı sayısını, kayan nokta toplama sırasını ve donanım kütüphanesi sürümünü sabitlemeyi ister; çoğu ekip için maliyeti getirisini aşar. İkincisi genelde yeterlidir: aynı veri kesimi, aynı kod ve aynı bağımlılıklarla eğitim metriği kabul edilebilir bir bant içinde tekrar ediyorsa iş görür. Hangisini hedeflediğinizi baştan yazın, çünkü bu karar tüm hattın maliyetini belirler.

Veri ekseninde sürümleme çoğu zaman kopyalamak değil, sorguyu ve kesim noktasını sabitlemektir: hangi tablo, hangi filtre, hangi zaman aralığı, hangi kayıt sürümü. Sonradan güncellenebilen bir kaynaktan "son hali" okumak eğitimi tekrarlanamaz kılar, çünkü geçmişteki bir koşuyu tekrar ettiğinizde veri artık o veri değildir. Ekleme yapılan, geçmişi değiştirmeyen bir kaynak ile kesim tarihi birleşince kopyalamadan sürümleme mümkün olur.

Paketin içinde ne var#

BileşenNeyi sabitlerNerede dururAtlanırsa
Model ağırlıklarıÖğrenilen parametrelerNesne deposunda, içerik özetiyle adlandırılmışCanlıda hangi dosyanın koştuğu belirsizleşir
Ön işleme boru hattıEğitimdeki dönüşümlerin birebir aynısıModel ile aynı paketin içindeEğitim-servis sapması: aynı girdi iki farklı vektöre dönüşür
Kategorik eşlemeler ve kelime dağarcığıBilinmeyen kategorinin karşılığıÖn işleme ile birlikteCanlıda yeni kategori sessizce yanlış kodlanır
Bağımlılık kilidiKütüphane sürümleriDepoda, eğitim taahhüdünün yanındaAğırlık dosyası ileride ya yüklenmez ya farklı davranır
Eğitim künyesiVeri kesimi, kod taahhüdü, hiperparametrelerModel kaydında"Bu model nereden geldi" sorusu cevapsız kalır
Girdi sözleşmesiSütun adları, tipler, birimler, izin verilen aralıkPaketle birlikte sürümlenmiş şema dosyasıSessiz tip dönüşümü hataya değil, yanlış tahmine yol açar
Paketin sınırı modelin gördüğü her şeydir; dışarıda bıraktığınız her dönüşümü ayrıca yazılı hale getirin.

Eğitim-servis sapması#

Üretimdeki en yaygın sessiz hata modelin kendisi değil, ön işlemenin iki kez yazılmış olmasıdır: bir kez eğitim not defterinde, bir kez servis kodunda. İki uygulama zamanla ayrışır ve ayrışma çoğu zaman çökme üretmez, yanlış tahmin üretir. Eksik değerin hangi ortalamayla dolduğu, kategori sıralaması, tarihin hangi saat diliminde yorumlandığı, bir oranın yüzde mi ondalık mı olduğu — hepsi bu sınıfta. Çözüm, dönüşümü tek bir çağrılabilir nesne olarak paketleyip aynı kodu her iki tarafta kullanmaktır.

json
{
  "model_kimligi": "churn-skoru",
  "surum": "2026.03.1",
  "olusturma": "2026-03-04T09:12:00Z",
  "veri": {
    "kaynak": "analitik.musteri_ozet",
    "kesim_tarihi": "2026-02-28",
    "filtre": "segment in ('kobi','kurumsal')",
    "anlik_goruntu_ozeti": "sha256:9f2c..."
  },
  "kod": {
    "depo": "ml-churn",
    "taahhut": "a1b2c3d",
    "giris": "egitim/calistir.py"
  },
  "ortam": {
    "kilit_dosyasi": "requirements.lock",
    "python": "3.12",
    "temel_imaj": "python:3.12-slim"
  },
  "hiperparametreler": { "derinlik": 6, "ogrenme_orani": 0.05, "tohum": 17 },
  "girdi_semasi": "semalar/churn-girdi-v2.json",
  "onceki_surum": "2026.02.2"
}

Sürüm numarası neyi anlatmalı#

Model sürümü artan bir sayaç değil, değişikliğin türünü bildiren bir işarettir. Pratik bir ayrım üç seviyedir: aynı kod ve aynı özelliklerle yalnızca daha yeni veriyle eğitim (tüketici için uyumlu), özellik seti veya ön işleme değişikliği (girdi sözleşmesi değişir, tüketici güncellenmeli), model ailesi veya çıktının anlamı değişikliği (eşik ve tüm entegrasyonlar yeniden ayarlanır). Sürüm şemanız bu üçünü ayırt edemiyorsa "yeni sürüm çıktı" cümlesi hiçbir şey söylemiyor demektir.

Karar akışı#

  1. 1Sınırı çiz

    Ham girdiden tahmine kadar hangi dönüşümler paketin içinde? Dışarıda kalan her adımı ayrıca belgeleyin.

  2. 2Girdi sözleşmesini yaz

    Sütun adı, tip, birim, izin verilen aralık ve bilinmeyen kategori davranışı; bunlar makine tarafından kontrol edilebilir olsun.

  3. 3Künyeyi otomatikleştir

    Eğitim betiği bitişte künyeyi kendisi yazsın; elle doldurulması beklenen künye doldurulmaz.

  4. 4Yükleme testini hatta koy

    Paketi temiz bir ortamda yükleyip sabit örneklerle tahmin alın ve beklenen çıktıyla karşılaştırın.

  5. 5Geri dönüş yolunu tanımla

    Önceki sürüm hangi komutla canlıya döner, ne kadar sürede ve kimin onayıyla?

Sık yapılan hata#

Not defterinde eğitilip elle kaydedilen model, aylar sonra çoğu ekipte yeniden üretilemez: hücreler farklı sırada koşmuştur, ara değişkenler yalnızca bellekte yaşamıştır, kullanılan dosya birinin masaüstündedir. İkinci yaygın hata bağımlılıkları sürüm sınırı olmadan yazmaktır; aynı kurulum komutu altı ay sonra farklı sürümler getirir ve ağırlık dosyası ya yüklenmez ya sessizce başka davranır. Üçüncüsü, ön işlemeyi "küçük bir kod parçası" sayıp paketin dışında bırakmaktır.

LAB · UYGULAMALI ALIŞTIRMA

Modelinizi temiz bir ortamda yeniden üretin

  1. 1Son eğittiğiniz modelin künyesini elle doldurun: veri kaynağı, kesim tarihi, filtre, kod taahhüdü, hiperparametreler. Dolduramadığınız her alanın üstünü işaretleyin.
  2. 2Ön işleme ile modeli tek bir çağrılabilir nesne olarak kaydedin ve girdi şemasını (sütun, tip, birim, aralık, bilinmeyen kategori davranışı) ayrı bir dosyaya yazın.
  3. 3Bağımlılıkları kilit dosyasına dondurun, boş bir sanal ortam kurun ve paketi yalnızca bu kilitle yükleyin.
  4. 4Beş sabit girdi satırı seçip tahminlerini bir dosyaya yazın; temiz ortamda aynı satırlarla tahmin alıp iki çıktıyı karşılaştırın.
  5. 5Eğitimi aynı künyeden baştan koşturun ve doğrulama metriğinin ilk koşuya göre nereye düştüğünü not edin; fark varsa kaynağını (tohum, iş parçacığı, veri kayması) arayın.
  6. 6Künyede dolduramadığınız alanları kapatacak en küçük değişikliği tarif edip eğitim betiğine ekleyin.

Beklenen çıktı

Temiz bir ortamda yüklenip aynı tahminleri üreten bir model paketi, otomatik yazılan bir eğitim künyesi ve açık kalan tekrarlanabilirlik boşluklarının listesi.

Sık sorulan sorular

Her eğitimi bit düzeyinde aynı yapmak zorunda mıyım?

Genelde hayır. Denetim veya sertifikasyon gereği yoksa hedefiniz istatistiksel eşdeğerlik olsun: aynı künyeyle koşan eğitim, doğrulama metriğini önceden yazdığınız bir bant içinde tekrar etsin. Bit düzeyi eşitlik tohum, iş parçacığı ve donanım kütüphanesi sabitlemesi gerektirir ve hattı belirgin biçimde yavaşlatır.

Veriyi kopyalamadan nasıl sürümlerim?

Geçmişi değiştirmeyen bir kaynak (olay günlüğü veya ekleme yapılan tablo) üzerinde çalışıp sorguyu, filtreyi ve kesim tarihini künyeye yazın; sonuç kümesinin içerik özetini de saklayın. Böylece aynı sorgu aynı satırları döndürüyor mu sorusunu kopya tutmadan cevaplayabilirsiniz.

Ön işlemeyi servis kodunda tutsam olmaz mı?

Olur ama tek şartla: eğitim de aynı kodu çağırmalı, yani ön işleme paylaşılan ve sürümlenen bir bileşen olmalı. Eğitim ile servisin iki ayrı uygulaması varsa sapma soru değil zaman meselesidir ve fark yanlış tahmin olarak, hata olarak değil ortaya çıkar.

LEARN

Machine Learning Engineer rotasına devam et

Dersler tek başına da okunabilir, ama sıralı ilerlemek önkoşul boşluklarını kapatır.