Garfield
YZF Admin
Bir scikit-learn modelini yalnızca model dosyası olarak saklamak yeterli değildir. Modeli yeniden yükleyip aynı sonucu güvenilir biçimde üretebilmek için model dosyasına ek olarak Python ve paket sürümleri, işletim sistemi bilgisi, kullanılan özelliklerin sırası ve veri şeması, ön işleme adımları, eğitim verisinin tanımı, kaynak kod sürümü ve doğrulama sonuçları kaydedilmelidir. Böylece aylar sonra oluşan bir tahmin farkının modelden mi, veriden mi, bağımlılık sürümünden mi kaynaklandığını ayırabilirsiniz.
Model dosyasının yanına, tercihen aynı sürüm kayıtlarının bulunduğu bir üstveri dosyası koyun. JSON, YAML veya benzeri okunabilir bir biçim kullanılabilir. Aşağıdaki bilgiler temel listedir:
Tablodaki bilgilerin bir bölümü doğrudan model nesnesinin içinde bulunabilir; ancak buna güvenmeyin. Örneğin bir Pipeline ön işleme adımlarını taşıyabilir, fakat eğitim verisinin hangi tarihte veya hangi sorguyla oluşturulduğunu, kaynak kodun hangi commit'inden geldiğini ya da üretimde hangi özellik sözleşmesinin kullanılacağını tek başına açıklamayabilir.
Ön koşul olarak eğitim sırasında kullanılacak tüm dönüşümleri tek bir Pipeline içine alın. Ölçekleyici, eksik değer doldurucu veya kategorik kodlayıcı ayrı dosyalara bölünürse yükleme sırasında yanlış sırada uygulanmaları kolaylaşır.
Bu kayıt, modelin gerçekten doğru model olduğunu kanıtlamaz; yalnızca modelin nasıl üretildiğini ve hangi koşullarda çalışmasının beklendiğini açıklamaya yardım eder.
Serileştirilmiş model dosyalarını güvenilmeyen kaynaklardan yüklemeyin. Python tabanlı serileştirme biçimleri dosya açılırken kod çalıştırma riski taşıyabilir; dosyanın kaynağı ve bütünlüğü doğrulanmadan üretim ortamında yükleme yapılmamalıdır. Dosyanın özetini, örneğin SHA-256 değerini, üstveriye eklemek dosyanın sonradan değiştirilip değiştirilmediğini kontrol etmeye yardımcı olur; ancak bu özet dosyanın güvenilir bir kaynaktan geldiğini tek başına kanıtlamaz.
Uyumsuzlukla karşılaşırsanız önce hata iletisindeki paket adını ve sürüm aralığını, ardından kayıtlı Python ve platform bilgilerini karşılaştırın. Sorun yalnızca sürüm farkından kaynaklanıyorsa aynı bağımlılık sürümleriyle izole ortam oluşturun. Veri sütunları veya ön işleme değişmişse eski modeli zorla çalıştırmak yerine özellik sözleşmesini düzeltin ya da modeli yeni şemayla yeniden eğitin. Model dosyası açılıyor fakat metrikler veya tahminler belirgin biçimde değişiyorsa bu, uyumluluğun kanıtı değildir; aynı doğrulama girdileri, aynı veri dönüşümleri ve kayıtlı değerlendirme kümesiyle karşılaştırma yapılmalıdır.
Kaydedilmesi gereken uyum bilgileri
Model dosyasının yanına, tercihen aynı sürüm kayıtlarının bulunduğu bir üstveri dosyası koyun. JSON, YAML veya benzeri okunabilir bir biçim kullanılabilir. Aşağıdaki bilgiler temel listedir:
| Bilgi | Neden gereklidir? | Örnek |
|---|---|---|
| Python sürümü | Serileştirilmiş nesnenin hangi çalışma ortamında üretildiğini gösterir. | 3.11.9 |
| scikit-learn sürümü | Estimator davranışı, varsayılan parametreleri veya serileştirme uyumu sürüme bağlı olabilir. | 1.x.y |
| Bağımlılık sürümleri | NumPy, SciPy, pandas ve kullanılan diğer paketlerin veri tipleri veya hesaplamaları etkileyebilecek değişikliklerini izlemeyi sağlar. | numpy, scipy, pandas sürümleri |
| İşletim sistemi ve mimari | Yerel derlenmiş bileşen veya platforma bağlı davranışları araştırmayı kolaylaştırır. | Linux x86_64 |
| Özellik şeması | Tahmin sırasında sütunların doğru ad, sıra, veri tipi ve birimle verilmesini sağlar. | age: float, income: float |
| Ön işleme zinciri | Ölçekleme, eksik değer doldurma, kategorik kodlama ve özellik seçiminin modelle birlikte uygulanmasını sağlar. | Pipeline adımları |
| Eğitim verisi tanımı | Modelin hangi veri aralığı, filtreler ve etiket tanımıyla üretildiğini açıklar. | Veri kümesi sürümü veya değişmez kimliği |
| Kod ve yapılandırma sürümü | Modelin hangi kaynak kodu, parametreler ve deney ayarlarıyla üretildiğini gösterir. | Git commit kimliği |
| Değerlendirme sonuçları | Yüklenen dosyanın beklenen model olup olmadığını kontrol etmeye yardım eder. | F1, ROC-AUC, MAE ve test kümesi kimliği |
Modeli ve üstveriyi birlikte saklama
Ön koşul olarak eğitim sırasında kullanılacak tüm dönüşümleri tek bir Pipeline içine alın. Ölçekleyici, eksik değer doldurucu veya kategorik kodlayıcı ayrı dosyalara bölünürse yükleme sırasında yanlış sırada uygulanmaları kolaylaşır.
- Ön işleme ve modeli tek bir Pipeline içinde oluşturun. Eğitimde uygulanan dönüşümlerin tahmin sırasında da aynı sırayla çalışması için örneğin
StandardScalerve sınıflandırıcıyı aynı nesnede tutun. - Modeli serileştirin. Örneğin
joblibveya Python serileştirme tabanlı bir yöntem kullanıyorsanız dosya adında model adı ve sürümünü belirtin;model_v2026_11_08.joblibgibi bir ad yalnızca örnektir. - Uyum bilgilerini ayrı bir üstveri dosyasına yazın. Python, scikit-learn, NumPy, pandas ve SciPy sürümlerini; platformu; özellik adlarını ve sırasını; veri kümesi kimliğini; eğitim parametrelerini; kod commit kimliğini ve değerlendirme ölçütlerini ekleyin.
- Özellik sözleşmesini model yüklemeden önce doğrulayın. Gelen verinin sütun adları, sırası, veri tipleri, eksik değer kuralları ve kategorik değerleri kayıtlı şemayla eşleşmiyorsa tahmin çalıştırmayın; veriyi dönüştürün veya modelin yeni veriyle yeniden eğitilmesini değerlendirin.
- Temiz bir ortamda yükleme testi yapın. Kaydedilmiş dosyayı, üstveride belirtilen bağımlılık sürümleriyle kurulmuş izole ortamda açın; küçük ve bilinen bir doğrulama girdisi için beklenen çıktı biçimini ve kabul edilebilir sayısal sonucu kontrol edin.
JSON:
{
"python": "3.11.9",
"packages": {
"scikit-learn": "1.x.y",
"numpy": "2.x.y",
"pandas": "2.x.y",
"scipy": "1.x.y"
},
"platform": "Linux x86_64",
"feature_order": ["age", "income", "tenure_months"],
"feature_dtypes": {
"age": "float64",
"income": "float64",
"tenure_months": "int64"
},
"dataset_id": "customer_train_2026_10",
"target_definition": "churn in the next 30 days",
"random_state": 42,
"code_commit": "abc1234",
"metrics": {
"roc_auc": 0.87,
"f1": 0.76
}
}
Bu kayıt, modelin gerçekten doğru model olduğunu kanıtlamaz; yalnızca modelin nasıl üretildiğini ve hangi koşullarda çalışmasının beklendiğini açıklamaya yardım eder.
random_state değerini kaydetmek de her zaman tamamen aynı sonucu garanti etmez. Donanım, çok iş parçacıklı hesaplama, kitaplık uygulaması ve sayısal işlemler farklılık oluşturabilir. Bu nedenle yalnızca rastgelelik değerini değil, sabit bir doğrulama girdisiyle beklenen çıktı aralığını da saklayın.Yükleme güvenliği ve uyumluluk kontrolü
Serileştirilmiş model dosyalarını güvenilmeyen kaynaklardan yüklemeyin. Python tabanlı serileştirme biçimleri dosya açılırken kod çalıştırma riski taşıyabilir; dosyanın kaynağı ve bütünlüğü doğrulanmadan üretim ortamında yükleme yapılmamalıdır. Dosyanın özetini, örneğin SHA-256 değerini, üstveriye eklemek dosyanın sonradan değiştirilip değiştirilmediğini kontrol etmeye yardımcı olur; ancak bu özet dosyanın güvenilir bir kaynaktan geldiğini tek başına kanıtlamaz.
Uyumsuzlukla karşılaşırsanız önce hata iletisindeki paket adını ve sürüm aralığını, ardından kayıtlı Python ve platform bilgilerini karşılaştırın. Sorun yalnızca sürüm farkından kaynaklanıyorsa aynı bağımlılık sürümleriyle izole ortam oluşturun. Veri sütunları veya ön işleme değişmişse eski modeli zorla çalıştırmak yerine özellik sözleşmesini düzeltin ya da modeli yeni şemayla yeniden eğitin. Model dosyası açılıyor fakat metrikler veya tahminler belirgin biçimde değişiyorsa bu, uyumluluğun kanıtı değildir; aynı doğrulama girdileri, aynı veri dönüşümleri ve kayıtlı değerlendirme kümesiyle karşılaştırma yapılmalıdır.