डेटा वर्ज़न मैनेजमेंट सिस्टम
(dvc.org)- Data Version Control डेटा को code की तरह manage करने वाला Git जैसा model है; यह tools का एक समूह है जो data, AI/ML और data science teams को software engineering practices लागू करने में मदद करता है
- बड़े पैमाने के AI/ML और data infrastructure के लिए lakeFS है, जिसका focus जटिल AI operations और big data environments में petabyte-scale multimodal object storage और data lakes को संभालने पर है
- छोटे data science projects के लिए DVC Git extension उपयुक्त है, जिससे individual data scientists कम overhead के साथ अपने workflow में data version management जोड़ सकते हैं
- DVC free open source के रूप में उपलब्ध है और DVC for VS Code extension भी है; GitHub repository पर 15,713 stars दिखते हैं
- DVC community के lakeFS family में शामिल होने के बाद, lakeFS और DVC की roles का फर्क और संबंधित FAQ अलग से देखे जा सकते हैं
Data Version Control की भूमिका
- Data Version Control का लक्ष्य है “data को उसी तरह manage करना जैसे code को manage किया जाता है”
- Git जैसे model के ज़रिए यह data, AI/ML और data science teams को software engineering best practices का उपयोग करने में मदद करने वाली संरचना है
- Use cases मोटे तौर पर दो हिस्सों में बंटते हैं
- AI/ML और data infrastructure teams
- local workflow और छोटे data science projects
Product-wise target और शुरुआत के रास्ते
- lakeFS enterprise AI और data engineering teams के लिए data version management infrastructure है
- इसका target जटिल AI operations और big data environments हैं
- यह petabyte-scale multimodal object storage और data lakes को संभालता है
- शुरुआत के links के रूप में Get started with lakeFS और Book a Demo दिए गए हैं
- DVC individual data scientists के लिए Git extension है
- इसका लक्ष्य छोटे data science projects के लिए आसान data version management है
- इसे data science workflow में न्यूनतम overhead के साथ लागू किया जा सकता है
- शुरुआत का link Get started with DVC है
- DVC for VS Code extension के ज़रिए इसे VS Code में भी इस्तेमाल किया जा सकता है
- DVC community lakeFS family में शामिल हो गई है, और संबंधित जानकारी के लिए lakeFS and DVC और FAQs जुड़े हुए हैं
- DVC GitHub repository treeverse/dvc है, और page पर 15,713 stars दिखते हैं
1 टिप्पणियां
Hacker News की राय
पिछले 5 वर्षों में मैंने ज़्यादातर प्रोजेक्ट्स में DVC का इस्तेमाल किया है, और इसकी अच्छी बात यह है कि यह Git की तरह काम करता है
अगर वैज्ञानिक branch, commit और diff को समझते हैं, तो वे DVC भी समझ सकते हैं। बुरी बात भी यही है कि यह Git की तरह काम करता है, क्योंकि असल में वैज्ञानिक अक्सर branch, commit और diff को अच्छी तरह समझते नहीं हैं या उनका इस्तेमाल नहीं करते। इसकी सबसे अच्छी बात यह है कि यह लगभग मजबूर करता है कि आप Ten Simple Rules for Reproducible Computational Research का पालन करें। जिन टीमों में मैंने काम किया, वहाँ reproducibility एक बड़ी चुनौती थी
शोधकर्ताओं को पता होता है कि Git क्या है और उसकी अहमियत भी है, लेकिन उन्हें लगता है कि उसे सीखने में बहुत समय लगता है और वे जल्दी आगे बढ़ना चाहते हैं। ऐसे शोधकर्ताओं के लिए Git और DVC को सरल और एकीकृत करने के मकसद से मैंने Calkit(https://github.com/calkit/calkit) नाम का टूल बनाना शुरू किया। मैं यह समझाना चाहता हूँ कि reproducible तरीके से काम करना लंबी अवधि में ज़्यादा तेज़ होता है, और इससे आख़िरकार पूरे क्षेत्र को तेज़ी से आगे बढ़ाने में काम को अधिक सीधे तौर पर लगाया जा सकता है
मैं DVC का maintainer और author हूँ, और DVC को front page पर देखकर खुशी हुई
DVC और इसकी sister project DataChain https://github.com/iterative/datachain के बारे में सवालों के जवाब दे सकता हूँ। DataChain थोड़ी अलग धारणाओं पर बना data version management टूल है, जिसमें फ़ाइलों की कॉपी किए बिना built-in data transformation मिलती है
मेरे पास 300 से अधिक Kafka topics से आए 10 साल पुराने Parquet files हैं, और अभी Apache Iceberg पर migration चल रहा है। ज़रूरत पड़ने पर ही backfill करने की योजना है, और अच्छा होगा अगर उस प्रक्रिया को Git से track किया जा सके। जानना चाहता हूँ कि क्या यह ऐसे use case के लिए सही बैठता है। एक और संभावना यह है कि schema changes को अभी से बेहतर तरीके से track किया जाए। मैं 20 साल से ज़्यादा समय से इस क्षेत्र में हूँ, और मुझे लगता है कि anything-as-code data के साथ अच्छी तरह मेल खाता है
यहाँ DVC पर चर्चा होते देख अच्छा लगा
एक टूल के रूप में इसने data और model versioning को बहुत सरल बनाया है, और MLOps क्षेत्र के कई लोगों के लिए यह बड़ा turning point रहा है। खासकर इसलिए कि यह git-lfs जैसे अलग application server या Git rewrite के बिना, किसी भी object storage में बड़े files को सीधे Git repository से जोड़कर store करने का चतुर तरीका देता है। DagsHub https://dagshub.com में हमने बहुत पहले से DVC के साथ direct integration दिया है, ताकि टीमें dataset visualization और labeling, model management, collaborative experiment runs, और code·data·model tracking एक ही जगह कर सकें। अगर आप पहले से DVC इस्तेमाल कर रहे हैं या उसे consider कर रहे हैं, तो उसे अधिक end-to-end toolchain के एक हिस्से के रूप में इस्तेमाल करने का विकल्प भी है
जानना चाहूँगा कि इसकी तुलना Oxen से कैसी है
https://github.com/Oxen-AI/Oxen
हमने अंदरूनी तौर पर Merkle tree structure, hash algorithms, network protocols वगैरह को optimize किया ताकि बड़े datasets पर भी यह तेज़ रहे। https://oxen.ai पर data को देखने और query करने के लिए काफ़ी अच्छा frontend भी है
पहली नज़र में DVC इस तरह बनाया गया लगता है कि Git के साथ मिलकर इस्तेमाल हो, जहाँ repository के भीतर किसी भी folder को DVC manage करता है, जबकि Oxen किसी अलग data repository alternative के ज़्यादा क़रीब दिखता है। साथ ही Oxen में dataframes, tabular data, और AI training·inference data के साथ काफ़ी integration दिखती है, जो DVC में नहीं है। दूसरी ओर DVC में पूरा DAG pipeline engine, import·export, और replaceable backends integrated हैं
यह data के साथ कैसे interact करता है, यह मुझे अभी ठीक से समझ नहीं आ रहा
अगर आप ADLS में Delta tables store कर रहे हैं और production data को local पर नहीं ला सकते, तो क्या यह फिर भी काम आएगा? और अगर पुराने version पर जाने के लिए सिर्फ Delta logs देखना काफ़ी है, तो फिर DVC इस्तेमाल करने की वजह है भी या नहीं, यह भी सवाल है
इसके ऊपर MLOps के लिए खास features भी हैं। S3 पर मौजूद data बदलने के साथ model training को version control करने में यह सुविधाजनक है
हमने भी DVC को evaluate किया था, लेकिन कुछ खास use cases में Git paradigm उतना उपयोगी नहीं था
हमारे पास लगभग न बदलने वाले बहुत बड़े वीडियो files थे, और source side पर data की एक copy, फिर training करने वाले हर system पर एक और copy चाहिए होती थी। आख़िरकार हम NAS पर files और folders के साथ गए, और वह काफ़ी अच्छी तरह काम कर गया। सिर्फ dataset metadata को DVC से manage करने और उसी को version control करने वाला hybrid approach संभव लगता है। हालाँकि यह कुछ साल पहले की बात है, और जानना चाहूँगा कि क्या अब on-premise data versioning solutions ज़्यादा उपलब्ध हैं। जब मैंने आख़िरी बार देखा था, तब ज़्यादातर चीज़ें cloud-oriented लगती थीं
Apache Iceberg की तुलना में DVC का फ़ायदा क्या है, यह जानना चाहता हूँ
अगर दोनों इस्तेमाल कर चुके किसी व्यक्ति का अनुभव हो तो सुनना चाहूँगा
यह Apache Iceberg जैसा है, लेकिन Zarr जैसे बहुआयामी डेटा के लिए बना टूल है। https://earthmover.io/blog/icechunk और https://news.ycombinator.com/item?id=41850352
हो सकता है Iceberg इस तरीके की तुलना में धीमे बदलने वाले मॉडल के लिए ज़्यादा उपयुक्त हो
सार यह है कि असंरचित blob data को DVC में रखना और संरचित data को Iceberg में रखना सही लगता है। DVC की Iceberg पर बढ़त यह है कि blob data को ज़बरदस्ती tabular format में ठूँसना नहीं पड़ता, और उससे जुड़ी झंझट वाली processing steps से बचा जा सकता है। असल में Parquet फ़ाइलों से blob data निकालने वाला processing step चलाने की भी ज़रूरत नहीं होती;
dvc pullजैसे कमांड से हर फ़ाइल को ज्यों का त्यों डाउनलोड किया जा सकता है। लोकल में फ़ाइलें बदलने के बाद लगभग तीन कमांड में commit किया जा सकता है, और blob data को टेबल में ठूँसने वाली data ingestion pipeline की भी ज़रूरत नहीं होती। यह पूरी तरह schema-less है, इसलिए type की चिंता किए बिना repository में डालकर commit किया जा सकता है। सिर्फ़ आख़िरी vacuum/checkpoint तक ही नहीं, बल्कि पूरे commit history के साथ rollback किया जा सकता है। blob data को tabular data format में ठूँसना लगभग पीड़ा का नुस्खा है, और blob को Git जैसी repository में रखना कहीं तेज़ और आसान है। ख़ासकर तब, जब पूरा version history या अलग-अलग नतीजों के लिए branch चाहिए हों। अगर लंबी 1080p वीडियो फ़ाइलों पर अलग-अलग ffmpeg filters को branch के हिसाब से लागू करके लोगों को सारे results और history तक पहुँच देनी हो, तो Iceberg में यह दुःस्वप्न जैसा होगा, लेकिन DVC में आसान है। आख़िरकार सब कुछ version-controlled रहता है, इसलिए यह ऐसे data lake जैसा लगता है जो data swamp में नहीं बदलताबहुत सारी jpg फ़ाइलों वाले dataset पर इस्तेमाल किया था और काफ़ी समस्याएँ आईं
हर
dvc statusपर सभी फ़ाइलों को जाँचने वाला indexing काम कई मिनट लेता था, और caching भी काम नहीं कर रही थी। अफ़सोस, छोड़ना पड़ाख़ासकर अगर ऐसा file system इस्तेमाल हो जो reflink को support नहीं करता। WebDataset जैसे बड़े sharded datasets के लिए कोई दूसरा solution बेहतर है, और ख़ास तौर पर तब जब machine learning pipeline object storage से सीधे stream कर सकती हो
S3 object storage के ऊपर data versioning tool के रूप में lakeFS का नाम भी सुना है
जानना चाहता हूँ कि क्या DVC इस क्षेत्र में उसका प्रतिस्पर्धी बन सकता है