Data Versioning Neden Önemlidir?
Makine öğrenmesi projelerinde 'Hangi model, hangi veriyle eğitildi?' sorusu yanıtsız kaldığında ciddi sorunlar ortaya çıkar. Veri kümesi sürekli güncellenir: yeni örnekler eklenir, etiketler düzeltilir veya önişleme (preprocessing) adımları değiştirilir. Versiyonsuz bir ortamda dün eğitilen modeli bugün yeniden üretmek neredeyse imkânsız hale gelir.
Data versioning bu sorunu çözer. Git'in koda yaptığını veriye de yaparak her değişikliği bir commit olarak kaydeder, geçmişe geri dönmeyi mümkün kılar ve ekiplerin aynı veri sürümü üzerinde paralel çalışmasını sağlar. Özellikle regülasyon gerektiren sektörlerde (finans, sağlık, otomotiv) model kararlarının hangi veriyle desteklendiğini belgelemek yasal zorunluluk haline gelmektedir.
Temel Kavramlar
Commit
Veri kümesinin belirli bir andaki anlık görüntüsünü kaydeder; hangi dosyaların değiştiğini ve kim tarafından değiştirildiğini belgeler.
Branch (Dal)
Mevcut veriyi bozmadan deney açmak için kullanılır; farklı önişleme stratejileri ayrı dallarda denenebilir.
Tag (Etiket)
'v2.0-eğitim-seti' gibi belirli bir veri sürümünü kalıcı olarak işaretler; model yayınları için referans noktası oluşturur.
Lineage (Soy)
Bir modelin eğitiminde kullanılan veri kümesi sürümü ve tüm dönüşüm adımlarını uçtan uca belgeler.
Reproducibility
Aynı kod + aynı veri sürümü = aynı sonuç garantisi; MLOps olgunluk modelinin en temel gereksinimidir.
Başlıca Data Versioning Araçları
- check_circle DVC (Data Version Control): Git ile entegre, açık kaynaklı ve platform bağımsız araç. Büyük dosyaları uzak depoya yükler, Git'te yalnızca küçük meta-dosyalar tutar. Kasım 2025'te lakeFS tarafından satın alındı.
- check_circle lakeFS: Veri göllerine Git tarzı dallanma, commit, merge ve revert işlemleri kazandırır. S3, GCS ve Azure Blob üzerinde çalışır; DVC'yi bünyesine katarak MLOps eko-sisteminde güçlendi.
- check_circle Delta Lake: Apache Spark tabanlı, ACID uyumlu açık tablo formatı. Tablo düzeyinde anlık görüntü ve zaman yolculuğu (time travel) sorguları sayesinde geçmiş veriye tarih bazlı erişim sağlar.
- check_circle Apache Iceberg: Petabayt ölçeğinde analitik tablolarda şema evrimi, bölüm dönüşümü ve snapshot yönetimini destekleyen açık tablo formatı. Hive, Spark ve Flink ile entegre çalışır.
- check_circle MLflow Tracking: Deney parametrelerini, metrikleri ve model artifaktlarını versiyonlar. Data versioning'i doğrudan sağlamaz ancak DVC ile birlikte kullanıldığında tam MLOps izlenebilirliği sunar.
compare_arrows MLOps Pipeline'ında Data Versioning
- check_circle Eğitim-veri bağı: Her model checkpoint, hangi veri sürümüyle eğitildiğini kayıt altına alır. Bu sayede model regresyonları veri değişikliklerine izole edilir.
- check_circle Deney izlenebilirliği: MLflow veya Weights & Biases deneyleri, DVC ile versiyon etiketlenmiş veri setleriyle ilişkilendirilir.
- check_circle Yeniden üretilebilirlik: Altı ay önce eğitilen modeli tam olarak yeniden üretmek için özdeş veri sürümüne ve kod commit'ine erişmek yeterlidir.
- check_circle A/B testi kolaylığı: Farklı veri temizleme stratejileriyle üretilen iki veri sürümü paralel eğitimde karşılaştırılabilir.
- check_circle Düzenleyici uyum: GDPR silme talepleri geldiğinde belirli örneklerin hangi model versiyonlarını etkilediği izlenebilir; gerekirse model yeniden eğitilir (machine unlearning).
- check_circle Delta paylaşımı: Büyük veri setlerinde sadece değişen satırlar depolanır (Delta Lake, Iceberg); depolama maliyetleri minimumda tutulur.
Popüler Data Versioning Yaklaşımları
DVC (Data Version Control)
Git benzeri komutlarla (dvc add, dvc push) veri setlerini versiyonlar; S3/GCS/Azure Blob backend destekler. .dvc dosyaları Git repo'sunda takip edilir.
Delta Lake
Apache Spark üzerinde ACID işlemleri ve time-travel sağlar. Parquet formatında versiyon logları tutulur; 'RESTORE TABLE' komutuyla geçmiş sürüme dönülür.
LakeFS
S3-uyumlu bir Git benzeri katman. Branch, commit ve merge gibi operasyonlar veri göl mimarisi üzerinde uygulanır; CI/CD pipeline'larına entegre olur.
Pachyderm
Her veri girişi ve pipeline adımı otomatik versiyonlanır. Deterministik yeniden üretilebilirlik odaklı — değişen inputlar sadece etkilenen pipeline adımlarını yeniden çalıştırır.
Sıkça Sorulan Sorular
- check_circle DVC ile Git arasındaki fark nedir? Git büyük ikili dosyaları (CSV, Parquet, görüntü veri setleri) verimli biçimde depolayamaz; repository şişer ve işlemler yavaşlar. DVC büyük dosyaları uzak depolama sistemlerine yükler, Git'e yalnızca küçük bir işaretçi (.dvc) dosyası bırakır. Böylece Git'in sürüm geçmişi hafif kalırken veri de tam olarak versiyonlanmış olur.
- check_circle Data versioning sadece veri için mi geçerlidir? Hayır. DVC gibi araçlar veri kümelerinin yanı sıra model ağırlıklarını (checkpoint dosyaları), pipeline konfigürasyonlarını ve derleme artifaktlarını da versiyonlar. Bu nedenle 'veri ve model versiyonlama' olarak daha kapsamlı biçimde tanımlanabilir.
- check_circle MLOps'ta data versioning ne zaman başlatılmalıdır? İlk model eğitim koşusundan itibaren. Başlangıçta ek çaba gibi görünse de ilerleyen aşamalarda modellerin izlenebilirliğini sağlamak, veri kaynaklı regresyonları tespit etmek ve denetim gereksinimlerini karşılamak için veri versiyonlama altyapısını sonradan kurmak çok daha maliyetlidir.
- check_circle Delta Lake ile Apache Iceberg arasında ne seçmeliyim? Her ikisi de açık tablo formatı olup zaman yolculuğu ve ACID garantisi sunar. Delta Lake Databricks ekosistemiyle, Iceberg ise Snowflake, Trino ve çoklu motor ortamlarıyla daha derin entegrasyon sağlar. Kullanılan veri platformu bu seçimi büyük ölçüde belirler.