DVC (Data Version Control) (DVC — Veri Sürüm Kontrolü)

Makine öğrenmesi veri setlerini, modellerini ve deneylerini Git ile entegre biçimde sürümlendiren açık kaynak MLOps aracı.

DVC (Data Version Control), büyük veri setlerini ve makine öğrenmesi model dosyalarını Git ile aynı iş akışında sürümlendirmeye olanak tanıyan açık kaynaklı bir MLOps aracıdır. Iterative tarafından 2017 yılında geliştirilen DVC, geliştiricilerin veri bilimi deneylerini tekrarlanabilir, işbirliğine açık ve izlenebilir bir şekilde yönetmesini sağlar. Git, metin tabanlı kod dosyalarını verimli biçimde sürümlendirmek için tasarlanmıştır ancak gigabayt veya terabayt büyüklüğündeki veri setleri ve model ağırlıkları için uygun değildir. DVC bu sorunu, büyük dosyaları uzak depolama sistemlerine (Amazon S3, Google Cloud Storage, Azure Blob, SSH sunucusu, SFTP veya yerel disk) yönlendirirken yalnızca hafif işaretçi dosyaları (.dvc uzantılı) Git deposuna ekleyerek çözer. Bu sayede Git deposu şişmeden tam veri ve model takibi yapılabilir. DVC'nin temel bileşeni pipeline sistemidir. Her veri işleme adımı (ham veri okuma, ön işleme, özellik çıkarımı, model eğitimi, değerlendirme) dvc.yaml dosyasında bağımlılıkları ve çıktılarıyla birlikte tanımlanır. DVC bu pipeline'ı yürütürken hangi adımların girdilerinde değişiklik olduğunu izler; değişmeyen adımlar önbellekten okunur ve yeniden çalıştırılmaz. Bu mekanizma, büyük ML projelerinde hesaplama süresini önemli ölçüde azaltır. Deney yönetimi açısından DVC Experiments, hiperparametre değişikliklerini birer Git commit gibi izler; farklı çalıştırmalar karşılaştırılabilir ve en iyi deney seçilerek ana dala birleştirilebilir. CI/CD entegrasyonu için GitHub Actions, GitLab CI ve diğer platformlarla doğrudan çalışır; bu sayede her kod değişikliğinde veriye dayalı testler otomatik tetiklenebilir. Python API'si ve komut satırı arayüzüne ek olarak DVC, VS Code eklentisi ve çeşitli IDE araçlarıyla da entegre çalışır. MLflow ile birlikte kullanıldığında deney takibi ve veri sürümleme birbirini tamamlar: MLflow metrik ve parametre kaydederken DVC hangi veri sürümüyle hangi modelin üretildiğini takip eder. Türkiye'de veri bilimi ekibi kuran kuruluşlar için DVC, hem kurulum kolaylığı hem de Git ekosistemiyle tam uyum nedeniyle tercih edilen ilk MLOps aracı olma eğilimindedir.

Git ile Büyük Dosya Sorunu ve DVC Çözümü

Git, kod dosyaları için mükemmeldir ancak GB veya TB boyutundaki veri setleri ve model ağırlıkları için uygun değildir. DVC bu sorunu ikili bir yaklaşımla çözer: büyük dosyalar uzak depolama sistemine (S3, GCS, Azure, SFTP) gönderilir; Git reposuna yalnızca içerik karmasını tutan küçük bir .dvc işaretçi dosyası eklenir. Böylece veri ve modeller tam olarak sürümlendiriliyor olsa da Git deposu şişmez ve ekip üyeleri yalnızca ihtiyaçları olan sürümü çekerek çalışabilir.

Pipeline Sistemi: Bağımlılık Takibi

DVC'nin en güçlü özelliklerinden biri dvc.yaml ile tanımlanan pipeline sistemidir. Her adım (veri ön-işleme, özellik mühendisliği, model eğitimi, değerlendirme) girdi dosyaları, çıktı dosyaları ve çalıştırılacak komutla birlikte tanımlanır. DVC her çalıştırmada hangi girdilerin değiştiğini kontrol eder; değişmeyen adımlar önbellekten (cache) sunulur ve yeniden hesaplanmaz. Bu mekanizma büyük veri projelerinde hesaplama maliyetini ciddi ölçüde düşürür.

Deney Yönetimi ve MLflow ile Karşılaştırma

DVC Experiments, her deney çalıştırmasını Git commit gibi takip eder; farklı hiperparametre setleri yan yana karşılaştırılabilir ve en iyi sonuç ana dala birleştirilebilir. MLflow ile temel fark şudur: MLflow metrik, parametre ve artifact kaydına odaklanırken DVC hangi veri sürümü üzerinde hangi modelin eğitildiğini izler. İki araç birbirinin alternatifi değil, tamamlayıcısıdır; büyük projelerde birlikte kullanılması önerilir.

CI/CD Entegrasyonu ve Kurumsal Kullanım

DVC, GitHub Actions ve GitLab CI ile doğal entegrasyon sunar; her pull request'te veri odaklı testler otomatik tetiklenebilir. Kurumsal güvenlik gereksinimleri için kendi altyapınızdaki MinIO veya özel S3-uyumlu depolamayı uzak olarak yapılandırabilirsiniz. Takım işbirliği için DVC Studio (Iterative'in SaaS ürünü) görsel deney takibi ve pipeline monitörlüğü sağlar. Türkiye'deki veri mühendisliği ekipleri için DVC'nin Git iş akışına sıfır sürtünümle entegrasyonu en büyük avantajdır.

Sık Sorulan Sorular

  • check_circle DVC ile Git LFS arasındaki fark nedir?: Git LFS büyük dosyaları Git sunucusuna yükler; bu, storage maliyetini artırır ve özel LFS sunucusu gerektirir. DVC ise dosyaları tamamen bağımsız bir uzak depoya (S3, GCS, Azure vb.) gönderir ve Git reposuna yalnızca işaretçi ekler. DVC ayrıca pipeline bağımlılık takibi ve deney yönetimi gibi ML'ye özgü özellikler sunar.
  • check_circle DVC hangi depolama sistemlerini destekler?: Amazon S3, Google Cloud Storage, Azure Blob Storage, SSH/SFTP sunucuları, MinIO (S3-uyumlu), yerel dosya sistemi ve NFS paylaşımları desteklenir. Çoklu uzak depo tanımlanabilir; ekipler farklı projeler için farklı depolama çözümleri kullanabilir.
  • check_circle DVC pipeline ile Airflow farkı nedir?: Airflow, zamanlanmış üretim iş yüklerini orkestre etmek için tasarlanmıştır; ML deneylerini değil, operasyonel veri akışlarını yönetir. DVC pipeline ise geliştirme sırasında bağımlılık takibi ve önbellekleme odaklıdır. Üretim için DVC ile hazırlanan pipeline Airflow veya Kubeflow ile entegre edilebilir.
  • check_circle DVC ücretsiz mi kullanılabilir?: Evet. DVC'nin çekirdek aracı Apache 2.0 lisansıyla tamamen ücretsiz ve açık kaynaklıdır. Iterative'in DVC Studio ürünü ücretli SaaS katmanlar sunar; ancak küçük ekipler için ücretsiz plan mevcuttur. Tüm temel özellikler komut satırı aracında ücretsiz olarak kullanılabilir.
  • check_circle Mevcut Git reposuna DVC nasıl eklenir?: Mevcut proje klasöründe 'dvc init' komutu çalıştırılır; bu .dvc/ dizini oluşturur ve .gitignore güncellenir. Ardından 'dvc remote add' ile uzak depolama yapılandırılır. Büyük dosyalar 'dvc add <dosya>' ile takibe alınır; oluşan .dvc dosyası Git ile commit edilir. Tüm süreç mevcut Git iş akışına minimum kesinti ile entegre olur.