Veri sürüm kontrol sistemi
(dvc.org)- Data Version Control, veriyi kod gibi yönetmeye yönelik Git benzeri bir model olup veri, AI/ML ve veri bilimi ekiplerine yazılım mühendisliği uygulamalarını benimseten bir araç ailesidir
- Büyük ölçekli AI/ML ve veri altyapısı ihtiyaçlarına lakeFS yanıt verir; karmaşık yapay zeka operasyonları ve büyük veri ortamlarında petabayt ölçeğinde çok modlu nesne depoları ve veri gölleriyle çalışmaya odaklanır
- Küçük ölçekli veri bilimi projeleri için DVC Git eklentisi uygundur; bireysel veri bilimcilerin düşük ek yükle veri sürüm kontrolünü iş akışlarına dahil etmesini sağlar
- DVC ücretsiz ve açık kaynak olarak sunulur; ayrıca DVC for VS Code eklentisi de vardır ve GitHub deposunda 15.713 yıldız görünür
- DVC topluluğu lakeFS ailesine katılmıştır; lakeFS ile DVC arasındaki rol ayrımı ve ilgili SSS ayrıca incelenebilir
Data Version Control'ün rolü
- Data Version Control, “veriyi, kodu yönettiğiniz şekilde yönetin” hedefini ortaya koyar
- Git'e benzer bir model üzerinden veri, AI/ML ve veri bilimi ekiplerinin yazılım mühendisliği en iyi uygulamalarından yararlanmasına yardımcı olan bir yapıdır
- Kullanım senaryoları büyük ölçüde iki kola ayrılır
- AI/ML ve veri altyapısı ekipleri
- Yerel iş akışları ve küçük ölçekli veri bilimi projeleri
Ürünlere göre hedef kitle ve başlangıç yolları
- lakeFS, kurumsal AI ve veri mühendisliği ekipleri için bir veri sürüm kontrol altyapısıdır
- Karmaşık yapay zeka operasyonları ve büyük veri ortamlarını hedefler
- Petabayt ölçeğinde çok modlu nesne depoları ve veri gölleriyle çalışır
- Başlangıç bağlantıları olarak Get started with lakeFS ve Book a Demo sunulur
- DVC, bireysel veri bilimciler için bir Git eklentisidir
- Küçük ölçekli veri bilimi projelerine uygun kolay veri sürüm kontrolünü hedefler
- Veri bilimi iş akışlarına minimum ek yükle uygulanabilir
- Başlangıç bağlantısı Get started with DVC'dir
- DVC for VS Code eklentisiyle VS Code içinde de kullanılabilir
- DVC topluluğu lakeFS ailesine katılmıştır; ilgili yönlendirmeler olarak lakeFS and DVC ve FAQs bağlantıları verilir
- DVC GitHub deposu treeverse/dvc'dir ve sayfada 15.713 yıldız görünür
1 yorum
Hacker News yorumları
Son 5 yılda projelerimin çoğunda DVC kullandım; avantajı Git gibi çalışması
Bilim insanları branch, commit ve diff kavramlarını anlıyorsa DVC'yi de anlayabilir. Dezavantajı da Git gibi çalışması; çünkü pratikte bilim insanları branch, commit ve diff'i çoğu zaman iyi anlamıyor ya da kullanmıyor. En iyi yanı, fiilen Tekrarlanabilir Hesaplamalı Araştırma için On Basit Kural'a uymayı zorunlu kılması. Çalıştığım ekiplerde tekrarlanabilirlik büyük bir sorundu
Araştırmacılar Git'in ne olduğunu ve değerli olduğunu biliyor, ama öğrenmenin çok fazla zaman aldığını düşünüp hızlı ilerlemek istiyorlar. Bu araştırmacılar için Git ve DVC'yi basitleştirip bütünleştirmek amacıyla Calkit(https://github.com/calkit/calkit) adlı bir araç geliştirmeye başladım. Tekrarlanabilir şekilde çalışmanın uzun vadede daha hızlı olduğunu ve sonuçta yapılan işi alanın tamamını daha hızlı ilerletmek için daha doğrudan kullanılabilir hâle getirdiğini anlatıp ikna etmek istiyorum
DVC'nin bakımcılarından ve yazarlarından biriyim; DVC'nin ilk sayfaya çıktığını görmek sevindirici
DVC ve kardeş projesi DataChain https://github.com/iterative/datachain hakkında soruları yanıtlayabilirim. DataChain, dosya kopyalamadan çalışan, yerleşik veri dönüşümlerine sahip ve biraz farklı varsayımları olan bir veri sürüm yönetimi aracı
300'den fazla Kafka topic'inden gelen 10 yıllık Parquet dosyaları var ve şu anda Apache Iceberg'e geçiş yapıyoruz. Yalnızca gerektiğinde backfill yapacağız; bu süreci Git ile takip edebilmek güzel olurdu. Bu kullanım için uygun olup olmadığını merak ediyorum. Bir başka olasılık da şema değişikliklerini şu ankinden daha iyi bir şekilde takip etmek. Bu alanda 20 yıldan fazla çalıştım ve anything-as-code yaklaşımının veriyle iyi uyduğunu düşünüyorum
DVC'nin burada tartışıldığını görmek güzel
Bir araç olarak veri ve model sürüm yönetimini epey basitleştirdi ve MLOps alanındaki birçok kişi için önemli bir dönüm noktası oldu. Özellikle git-lfs gibi ayrı bir uygulama sunucusu ya da Git'i yeniden yazma gerektirmeden, büyük dosyaları herhangi bir nesne depolama alanında Git deposuyla doğrudan ilişkilendirerek saklayan akıllıca bir yaklaşım. DagsHub https://dagshub.com olarak uzun zamandır DVC ile doğrudan entegreyiz; ekiplerin veri kümelerini görselleştirme ve etiketleme, model yönetimi, işbirliği içinde deney çalıştırma, kod·veri·model takibini tek yerde yapmasını sağlıyoruz. Zaten DVC kullanıyorsanız ya da değerlendirmeyi düşünüyorsanız, bunu daha uçtan uca bir araç zincirinin bileşeni olarak kullanma seçeneği de var
Oxen ile karşılaştırınca nasıl olduğunu merak ediyorum
https://github.com/Oxen-AI/Oxen
İçeride Merkle ağacı yapısı, hash algoritması, ağ protokolleri vb. unsurları optimize ederek büyük veri kümelerinde de hızlı hâle getirdik. https://oxen.ai üzerinde veriyi görüp sorgulayabileceğiniz oldukça iyi bir frontend de var
İlk izlenimim şu: DVC, Git deposu içindeki herhangi bir klasörün DVC tarafından yönetilmesi şeklinde Git ile birlikte kullanılmak üzere tasarlanmış; Oxen ise daha çok ayrı bir veri deposu alternatifi gibi duruyor. Ayrıca Oxen'in dataframe'ler, tablo biçimli veriler ve yapay zeka eğitim/çıkarım verileriyle çok sayıda entegrasyonu var; DVC'de olmayan tarafları tamamlıyor gibi. Buna karşılık DVC'de tam bir DAG pipeline motoru, import/export ve değiştirilebilir backend'ler entegre durumda
Bunun veriyle nasıl etkileşime girdiğini pek kafamda canlandıramıyorum
ADLS üzerinde Delta tabloları saklıyorsam ve prodüksiyon verisini lokale çekemiyorsam yine de kullanabilir miyim merak ediyorum. Geçmiş bir sürüme dönmek için Delta log'una bakmak yeterliyse DVC kullanmak için bir neden var mı, onu da sorguluyorum
Bunun üzerine MLOps'a özgü özellikler eklenmiş. S3 üzerindeki verinin değiştiği model eğitimlerini sürümlemek için kullanışlı
Biz de DVC'yi değerlendirdik ama belirli kullanım senaryomuzda Git paradigması pek yararlı değildi
Neredeyse hiç değişmeyen devasa video dosyaları söz konusuydu; kaynak tarafta verinin bir kopyasına, eğitimi yapan her sistemde de birer kopyaya ihtiyaç vardı. Sonunda NAS üzerindeki dosya ve klasörlere döndük ve yeterince iyi çalıştı. Yalnızca veri kümesi metaverisini DVC ile yönetip onu sürümlemek şeklinde hibrit bir yaklaşım mümkün görünüyor. Ancak bu birkaç yıl önceydi; şirket içi veri sürüm yönetimi çözümleri bugün daha fazla var mı merak ediyorum. En son baktığımda çoğu bulut odaklı görünüyordu
Apache Iceberg ile karşılaştırıldığında DVC’nin avantajının ne olduğunu merak ediyorum
İkisini de kullanmış biri varsa görüşlerini duymak isterim
Apache Iceberg’e benziyor, ancak Zarr gibi çok boyutlu veriler için bir araç. https://earthmover.io/blog/icechunk ve https://news.ycombinator.com/item?id=41850352
Iceberg belki de bu yaklaşıma kıyasla daha yavaş değişen modellere daha uygun tasarlanmış olabilir
Özetle, yapılandırılmamış blob veriyi DVC’ye, yapılandırılmış veriyi ise Iceberg’e koymak doğru olur. DVC’nin Iceberg’e göre avantajı, blob veriyi zorla tablo biçimine sokmak zorunda kalmamanız ve bu süreçle gelen zahmetli işlem adımlarından kaçınabilmenizdir. Aslında Parquet dosyasından blob veriyi çıkarmak için bir işlem adımı çalıştırmanız da gerekmez;
dvc pullgibi bir komutla her dosyayı olduğu gibi indirebilirsiniz. Dosyayı yerelde değiştirdikten sonra kabaca üç komutla commit edebilirsiniz ve blob veriyi tabloya zorla sokan bir veri ingest pipeline’ına da ihtiyaç duymazsınız. Tamamen şemasız olduğu için tipleri dert etmeden depoya koyup commit edebilirsiniz. Yalnızca son vacuum/checkpoint’e kadar değil, tüm commit geçmişi boyunca geri dönebilirsiniz. Blob veriyi tablo biçimli veri formatlarına sıkıştırmak neredeyse acının formülü gibidir; blob’ları Git benzeri bir depoya koymak çok daha hızlı ve kolaydır. Tüm sürüm geçmişine veya farklı sonuçlar için branch’lere ihtiyacınız varsa bu özellikle böyledir; uzun 1080p video dosyalarına branch bazında farklı ffmpeg filtreleri uygulayıp insanların tüm sonuçlara ve geçmişe erişmesini sağlamak Iceberg’de kâbus gibi olurdu, DVC’de ise kolaydır. Sonuçta her şey sürüm kontrollü olduğu için veri bataklığına dönüşmeyen bir data lake oluşturuyormuşsunuz gibi olurÇok sayıda jpg dosyasından oluşan bir veri kümesinde kullandığımda çok sorun yaşadım
Her
dvc statusçalıştırıldığında tüm dosyaları kontrol eden indeksleme işi dakikalar sürüyordu ve caching de çalışmıyordu. Maalesef bırakmak zorunda kaldımÖzellikle reflink desteklemeyen bir dosya sistemi kullanıyorsanız daha da öyle. WebDataset gibi büyük shard’lanmış veri kümeleri için başka çözümler daha iyi; makine öğrenimi pipeline’ınız nesne depolamadan doğrudan streaming yapabiliyorsa özellikle böyle
S3 nesne depolama üzerinde veri sürüm yönetimi aracı olarak lakeFS’i de duydum
DVC’nin bu alanda rakip olup olamayacağını merak ediyorum