lakeFS prieš DVC: versijų kontrolė nori būti failų sistema
Duomenų versijų kontrolė yra dalykas, dėl kurio visi linkčioja galvomis, tarsi tai būtų Git viskam, kol nepabandai realiai panaudoti petabaitus komandoje ir supranti, kad Git iš tikrųjų buvo Git kodui. „Tiesiog elkitės su savo S3 kaupykla kaip su saugykla“, – sako jie, o tai tarsi lieptum simfonijai naudoti kazoo, nes tai techniškai yra pučiamasis instrumentas.
Tai istorija apie du pasaulėžiūras, kurios dalijasi šūkiu: lakeFS prieš DVC. Abu žada sveiką protą ten, kur duomenys, modeliai ir eksperimentai paprastai pasimeta. Tačiau jie atakuoja problemą iš priešingų pusių. DVC yra į kūrėją orientuotas, su Git susijęs įrankių rinkinys, kuris važiuoja kartu su jūsų saugykla. lakeFS yra saugykloje integruotas sluoksnis, kuris paverčia jūsų objektų saugyklą į versijomis valdomą failų sistemą su šakomis, įrašais ir suliejimais. Ta pati melodija, skirtingos rakto ženklai.
Jei esate čia dėl verdikto: tikriausiai jau žinote, kurioje stovykloje esate. Jei kasdien skauda didelių failų ir modelių patikrinimo punktų perkėlimas su atkuriamumu, DVC atrodys kaip labai protingas ilginamasis laidas. Jei jums skauda kelių komandų duomenų valdymas, izoliacija ir atkuriami skaitymai per duomenų ežerą, lakeFS jaučiasi kaip grandinės pertraukiklių įrengimas pačiame name.
Ir taip, galite naudoti abu. Tai nėra išsisukinėjimas. Tai pripažinimas, kad darbas su duomenimis yra daugybė darbų, vilkinčių tuos pačius marškinėlius.
Situacija: ką DVC ir lakeFS iš tikrųjų daro
- DVC (duomenų versijų kontrolė): gyvena šalia Git, o ne jo viduje. Jūs versijuojate rodykles (mažus metafailus) Git'e ir saugote faktinius didelius artefaktus – duomenų rinkinius, modelius, vaizdus – nuotoliniame serveryje, pvz., S3, GCS, Azure, SSH arba vietinėje talpykloje. Jūs gaunate CLI valdomus vamzdynus,
dvc.lock atkūrimui, eksperimentų sekimui ir dvc push/pull sinchronizavimui.
- lakeFS: yra priešais jūsų objektų saugyklą (S3, GCS, Azure Blob) ir padaro šakas bei įrašus pagrindine saugyklos erdvės funkcija. Skaitymai ir rašymai mato izoliuotas šakas. Galite sukurti šaką iš „gamybos“, vykdyti transformacijas ir sulieti atgal – nekopijuojant terabaitų. Tai Git semantika jūsų duomenų ežerui.
Kitaip tariant: DVC įskiepija duomenų valdymą į kūrėjo darbo eigą; lakeFS įraižo darbo eigos semantiką į duomenų sluoksnį.
Pagrindinis skirtumas (ir kodėl tai svarbu)
DVC traktuoja didelius duomenis kaip jūsų kodo bazės plėtinį. Viskas prasideda nuo Git saugyklos: jūs įrašote *.dvc failus, užrakinate priklausomybes ir orkestruojate vamzdynus. Puikiai tinka ML eksperimentams, kuriuose kilmė gyvena šalia kodo, kuris ją sukūrė.
lakeFS apverčia tai: duomenų ežeras yra tiesos šaltinis. Šakos nėra metaforos – tai vardų erdvės virš tų pačių pagrindinių objektų. Tai reiškia, kad galite:
- Atsukti
feature/try-new-schema 200 TB duomenų rinkinio šaką per kelias sekundes.
- Paleisti Spark/Presto/Trino toje šakoje taip, tarsi ji būtų tikra, nes ji tokia ir yra.
- Sulieti (arba nutraukti) neperstumdant viso ežero.
Jūs negalite to suklastoti su gudriais Git kabliukais.
lakeFS prieš DVC: naudojimo atvejai be rinkodaros blizgesio
Kada DVC laimi
- Į modelį orientuotos komandos: turite kodą, duomenų momentines nuotraukas ir eksperimentus, kurie turi būti atkuriami ir bendrinami. DVC eksperimentų sekimas ir
dvc repro vamzdynai spindi.
- Vienos saugyklos disciplina: jūsų organizacija gyvena Git'e. Jūs norite „duomenų kaip kodo“ neprigalvodami saugyklos abstrakcijos. DVC yra pažįstamas,
git add data.dvc, baigta.
- Biudžetas ir paprastumas: nereikia paleisti infrastruktūros sluoksnio. DVC gali dirbti su paprasta S3 kaupykla ir leidimų politika. CLI yra paprastas. Pirmumas vietiniam yra funkcija.
Kada lakeFS laimi
- Komandos izoliacija dideliu mastu: jums reikia, kad kelios komandos saugiai vykdytų rašymus/skaitymus tame pačiame ežere, neužlipdamos viena kitai ant kojų. Šakomis pagrįsta izoliacija yra esmė.
- Valdymas ir auditas: įrašų istorija, atkuriami momentiniai vaizdai ir politikos kabliukai prie saugyklos ribos. Galite įgyvendinti taisykles ten, kur jos svarbios.
- Dideli varikliai, didelės lentelės: Spark, Hive, Presto, Trino, Snowflake išorinės lentelės – įrankiai, kurie kalba objektų saugyklomis. lakeFS integruojasi URL lygiu; jūsų skaičiavimo stalui nereikia išmokti naujų triukų.
Kada naudojate abu (ir jaučiatės protingas)
- DVC modelio artefaktams ir vamzdynams, susietiems su saugykla; lakeFS neapdorotiems ir kuruojamiems duomenų rinkiniams ežere. Stebėkite ir prisegkite duomenų rinkinių versijas DVC, kurios nurodo lakeFS įrašo maišą. Kodas gyvena Git'e; duomenų semantika gyvena ežere. Niekam nereikia apsimesti, kad kitas sluoksnis gali gerai atlikti abu darbus.
lakeFS prieš DVC: praktiniai kompromisai
Nustatymas ir operacijos
- DVC: įdiekite CLI, sukonfigūruokite nuotolinius serverius. Jūs valdysite talpyklos dydį, saugyklos išlaidas ir prieigą. Git išlieka jūsų namų baze. Minimali trintis.
- lakeFS: jūs paleidžiate paslaugą. Yra serveris, metaduomenys, GC, šakų kūrimo politika, kredencialai. Nėra sunku, bet tai yra infrastruktūra. Atsiperka tikra izoliacija ir atominiai įrašai duomenų ežere.
Našumas ir mastelis
- DVC: didelių artefaktų stūmimas/traukimas gali būti greitas su vietine talpykla ir kietosiomis nuorodomis, tačiau modelis iš esmės yra orientuotas į klientą. Jūs nešakosite petabaito per milisekundes; jūs nurodysite jį ir perkelsite dalis pagal poreikį.
- lakeFS: šakojimas yra pigus metaduomenų požiūriu (kopijavimas rašant). Skaitymai yra „natūralaus greičio“, nes tai yra tik objektų saugyklos skaitymai. Rašymai patiria netiesioginį poveikį, bet ne „kopijuoti pasaulį“ nuobaudą. Konfliktai dėl suliejimo egzistuoja, bet jie yra objekto/rakto lygiu, o ne kodo eilutėse.
Atkuriamumas
- DVC: jūsų
dvc.lock susieja kodą, parametrus ir duomenų artefaktų maišas kartu. Pakartotinis eksperimento paleidimas nuo praėjusio mėnesio turėtų sukurti tuos pačius bitus. Tai yra atkuriamumas prie kodo ribos.
- lakeFS: atkuriamumas prie duomenų ribos: „Skaitykite lentelę X nuo įrašo Y.“ Galite keliauti laiku visa savo įvesties sritimi analizei arba atgaliniams užpildymams.
Bendradarbiavimo modelis
- DVC: į kūrėją orientuotas bendradarbiavimas – PR, peržiūros ir eksperimentai. Puikiai tinka ML ciklui: duomenys → mokymas → įvertinimas → išsiuntimas.
- lakeFS: į duomenų komandą orientuotas bendradarbiavimas – šakos įvedimui, transformavimui ir patvirtinimui. Puikiai tinka analizės ciklui: įvedimas → modelis (kaip dbt/ETL) → publikavimas → aptarnavimas.
Duomenų sutartys paprasta kalba
Žmonės sako „duomenų sutartys“ ir pradeda mojuoti schemų registro ekrano nuotraukomis. Štai paprasta versija:
- Su DVC sutartis yra numanoma jūsų vamzdyne: failai, kuriuos deklaruojate kaip priklausomybes, sudaro sutartį. Pakeiskite juos, ir jūsų vamzdynas žino.
- Su lakeFS sutartis gali būti įgyvendinta suliejimo metu: kabliukai prieš suliejimą gali vykdyti patvirtinimus (schemos patikrinimus, eilučių skaičiaus, nulinės ribos) ir blokuoti blogus duomenis nuo patekimo į
pagrindinę šaką. Tai suaugęs žmogus kambaryje.
Kūrėjo patirtis (DX): kur guma susitinka su keliu
- CLI ergonomika: DVC CLI yra nuomonę turintis, bet nuspėjamas:
dvc add, dvc push, dvc exp run. lakeFS CLI (ir UI) mąsto šakomis/įrašais duomenų rinkinio lygiu: lakefs branch create, commit, merge.
- Mentalinis modelis: DVC prašo kūrėjų elgtis su duomenimis kaip su trečiųjų šalių dvejetainiais failais su maišomis. lakeFS prašo duomenų inžinierių elgtis su ežeru kaip su saugykla su izoliacijos sluoksniais.
- Pažintinė apkrova: DVC prideda ritualų kiekvienai saugyklai; lakeFS prideda infrastruktūrą ir politiką. Pasirinkite savo nuodą pagal tai, kur jau gyvena jūsų komanda – IDE arba duomenų platformose.
Kaina: laikas, pinigai ir debesies išėjimo galvos skausmai
- Saugykla: abu efektyviai naudoja objektų saugyklas. DVC gali dubliuoti artefaktus, jei esate aplaidus su talpykla; lakeFS remiasi kopijavimo rašant metaduomenimis, kurie yra pigūs, kol nepradedate vartyti.
- Išėjimas ir perkėlimas: DVC stūmimas/traukimas gali sukurti daugiau objekto vartymo. lakeFS skaitymai daugiausia yra tiesioginiai. Jei išėjimo išlaidos neleidžia jums miegoti naktį, lakeFS „šakos be kopijos“ modelis yra draugiškas.
- Operacijų pridėtinės išlaidos: DVC kaina daugiausia yra kūrėjo laikas. lakeFS kaina yra paslaugos priežiūra – atsarginės kopijos, atnaujinimai, politika.
Aštrios briaunos (niekam nepatinka apie tai kalbėti)
- DVC konfliktai dėl suliejimo nėra magija: jūs nesujungiate CSV eilučių. Jūs derinate, kurie blobai laimi. Norėdami tiksliai sulieti, vis tiek reikės tikro duomenų apdorojimo.
- lakeFS suliejimo semantika nėra SQL: galite šakoti ir sulieti S3 kelius, bet suderinti semantinius lentelės pakeitimus (skilties pertvarkymus, atnaujinimus) yra jūsų, o ne lakeFS darbas. Galvokite apie failų sistemą, o ne apie duomenų bazę.
- Prieigos kontrolė yra skirtinga: DVC paveldi Git socialinį modelį (PR, peržiūros). lakeFS integruojasi su IAM ir politikos kabliukais. Jei jūsų organizacija jau centralizavo IAM duomenims, lakeFS jaučiasi natūraliai; jei gyvenate GitHub, DVC jaučiasi teisingai.
Integracijos: varikliai, orkestratoriai ir realus pasaulis
- DVC: gerai dera su GitHub/GitLab CI, Makefiles, Airflow ir vietiniu kūrimu. ML eksperimentams DVC eksperimentų sekimas ir artefaktų valdymas yra traukos objektas.
- lakeFS: gerai dera su Spark, Hive, Trino, Presto, dbt (per išorines lenteles), Airflow ir bet kuriuo varikliu, kuris skaito
s3a://repo/branch/path. Triukas yra tas, kad jūsų skaičiavimas kalba ta pačia saugyklos kalba.
Saugumas ir atitiktis be madingų žodžių
- DVC: saugumas remiasi jūsų debesų saugykla ir jūsų Git leidimais. Auditas yra vamzdyno lygiu – kas ką sukūrė ir kada.
- lakeFS: kiekvienas įrašas yra audito patikros punktas. Kabliukai gali nuskaityti duomenis prieš suliejimą. Jei jums rūpi GDPR stiliaus „kas pasikeitė kada“, lakeFS yra geresnis pasirinkimas.
Paprasta kalba pagrįstas palyginimas
- Pagrindinis raktinis žodis – „lakeFS prieš DVC“ yra ne tik palyginimas; tai filosofijos šakutė. DVC yra Git su privalumais dideliems failams ir eksperimentams. lakeFS yra į Git panaši semantika ten, kur iš tikrųjų gyvena jūsų duomenys.
- Jei jūsų diena daugiausia susideda iš kodo, kuris paliečia duomenis, būsite laimingesni su DVC.
- Jei jūsų diena daugiausia susideda iš duomenų, kurie kartais susitinka su kodu, greičiausiai pasirinksite lakeFS.
- Jei jūsų diena yra abu, sveikiname: jūs esate normalus. Naudokite DVC kodui orientuotam ciklui ir lakeFS ežerui orientuotam ciklui. „Abu“ nėra neryžtingumas – tai tikslu.
Pastaba apie įrankių hype (ir kur tinka Sider.AI)
Įrankiai yra įdomūs tik tada, kai taupo laiką arba apsaugo nuo netvarkos. Visa kita yra demonstracija. Sider.AI iš tikrųjų padeda čia – ne apsimetant, kad yra jūsų ežeras, bet atliekant nepatrauklų darbą: padedant jums argumentuoti apie jūsų vamzdynus, generuoti apsaugos patikrinimus ir išlaikyti jūsų dokumentus ir skirtumus sąžiningus. Jei sujungsite DVC ir lakeFS, Sider.AI yra protingas draugas, kuris sako: „Paženklinkite savo pertraukiklius“, ir tada atspausdina etiketes. Praktiniai scenarijai: lakeFS prieš DVC laukinėje gamtoje
1 scenarijus: funkcijų izoliacija ETL
- Jūs prižiūrite Bronze/Silver/Gold ežerą. Norite išbandyti naują schemą paspaudimų srautui nepažeisdami tolesnių informacijos suvestinių. Su lakeFS, atšakokite
etl/schema-v2 nuo silver, paleiskite savo darbus, patvirtinkite izoliacijoje ir suliekite, kai patikrinimai bus sėkmingi. Jokių šešėlinių kaupyklų, jokių kopijų per naktį.
2 scenarijus: atkuriami mokymo paleidimai
- Jūs apmokote savaitinius modelius. DVC prisega tikslią duomenų rinkinio momentinę nuotrauką (
data.dvc nurodantį lakeFS įrašą arba S3 versiją), parametrus ir kodą. dvc repro suka paleidimą. Modelis, metrika ir grafikai yra artefaktai, kuriuos galite stumti ir bendrinti. Auditoriai tai mėgsta. Taip pat ir ateities jūs.
3 scenarijus: blogo publikavimo taisymas
- Kažkas paskelbia neteisingą Parquet rinkinį į
main. Su lakeFS jūs atsukate atgal į paskutinį gerą įrašą arba šaką, pataisote ir suliejate. Su DVC jūs taisote tai vamzdyne ir iš naujo stumiate artefaktus. Abu veikia; lakeFS yra geresnis, kai „paskelbti“ reiškia „ežeras, kurį visi skaito“.
Migracija ir sambūvis be ašarų
- Pradėkite įvardydami savo tiesas: kurie duomenų rinkiniai yra sistemos įrašai? Kurie yra efemeriški? Įdėkite sistemos įrašus į lakeFS. Įdėkite eksperimentų artefaktus į DVC.
- Plona integracija: saugokite lakeFS įrašų ID DVC parametruose arba metaduomenyse. Traktuokite juos kaip nekeičiamas duomenų rinkinių versijas.
- Nekaitinkite ežero: įdiekite lakeFS, kur izoliacija sutaupo jums tikrų pinigų arba savaitgalių. Įdiekite DVC, kur atkuriamumas sutaupo jums pakartotinius paleidimus.
Dialektika: tai nėra arba/arba, tai kur gyvena tiesa
Programinės įrangos komandos nori vieno įrankio, kuris visus juos valdo. Tai yra neteisingas klausimas. Teisingas klausimas: kur gyvena tiesa?
- Jei tiesa yra saugykloje – kode, konfigūracijose ir konkrečiuose failuose, kuriuos apmokėte – DVC yra natūralus Git plėtinys.
- Jei tiesa yra ežere – lentelėse, skiltyse ir objektų raktuose, kurie maitina jūsų įmonę – lakeFS suteikia jums įrašų metu sveiką protą.
Abu yra versijų kontrolės formos. Tik vienas iš tikrųjų gyvena ten, kur yra duomenys.
lakeFS prieš DVC: greiti atsakymai į klausimus, kurių žmonės iš tikrųjų klausia
- „Ar DVC gali pakeisti mano duomenų ežerą?“ Ne. Jis gali organizuoti jūsų artefaktus ir padaryti eksperimentus sveikais. Jis neprivers S3 elgtis kaip transakcinė saugykla.
- „Ar lakeFS gali pakeisti mano ML eksperimentų sekiklį?“ Taip pat ne. Jis gali versijuoti eksperimentų įvestį/išvestį, bet jam nerūpi jūsų ROC kreivės.
- „Ar tai nėra tik Git LFS?“ Tai tarsi sakyti, kad dviratis yra tik automobilis su mažiau metalo. DVC yra šalia Git, bet supranta duomenų vamzdynus. lakeFS suteikia jums į Git panašią semantiką neįtraukiant Git į petabaitus.
Trumpas žodis apie sudėtingumą (jūs mokate kažkur)
Kiekviena abstrakcija yra sąskaita, kurią reikia apmokėti vėliau. DVC sąskaita yra kūrėjo ritualas ir retkarčiais artefaktų rietenos. lakeFS sąskaita yra paslaugos paleidimas ir naujos suliejimo semantikos mokymasis objektų saugykloms. Jei įrankis atrodo nemokamas, jis apmokestina jūsų dėmesį.
Atskyrimo šūvis
„lakeFS prieš DVC“ skamba kaip atsiskaitymas. Tai labiau panašu į du muzikantus, kurie negroja tuo pačiu instrumentu. Jūs neprašote būgnininko nešti melodijos ir neprašote smuiko laikyti ritmo žygiuojančiam orkestrui. Naudokite DVC, kur kodas valdo ciklą. Naudokite lakeFS, kur duomenys valdo kambarį. Ir jei gyvenate abiejuose pasauliuose, gerai: tai reiškia, kad skiriate dėmesį.
Nes tikrasis versijų kontrolės tikslas – nesvarbu, ar jis apgaubia Git, ar apgaubia S3 – nėra įrašo maiša. Tai leidimas keisti dalykus nesugriaunant pasaulio. Visa kita yra tik skirtuko juosta.
Raktinių žodžių draugiški, paprasta kalba parašyti antraštės (nes jūs paprašėte)
lakeFS prieš DVC ML vamzdynams
Jei jūsų ML vamzdynai yra daug kodo su diskrečiais duomenų rinkiniais ir modelių artefaktais, DVC geriau integruojasi: rodyklių failai Git'e, maišos, stebimi eksperimentai. Duomenų daug vamzdynų, maitinančių kelias komandas, atveju lakeFS laimi su šakomis pagrįsta izoliacija visame ežere.
lakeFS prieš DVC duomenų valdymui
lakeFS suteikia jums audituojamus įrašus ir suliejimo kabliukus prie saugyklos ribos. DVC suteikia jums kilmę prie vamzdyno ribos. Jei teisiniam skyriui reikia nekeičiamų patikros punktų, tai yra lakeFS; jei inžinerijos skyriui reikia atkuriamų paleidimų, tai yra DVC.
Pasirinkimas tarp DVC ir lakeFS objektų saugyklai
Objektų saugykla neatlieka operacijų. DVC apeina tai su objektų lygio maišomis ir stūmimu/traukimu. lakeFS pasikliauja tuo su kopijavimo rašant metaduomenimis ir šakų semantika. Pasirinkite pagal tai, ar jūsų skausmas yra saugykloje, ar kaupykloje.
Sujunkite lakeFS ir DVC be galvos skausmų
Naudokite lakeFS ežero versijų valdymui; paviršiaus įrašų ID į DVC, kad eksperimentai prisegtų prie tikslių įvesčių. Laikykite modelių artefaktus DVC nuotoliniuose serveriuose; laikykite neapdorotus ir kuruojamus duomenų rinkinius lakeFS šakose. Nereikia nesankcionuotų įsilaužimų.
DUK
K1: kuris yra geresnis ML eksperimentams: lakeFS ar DVC?
ML eksperimentams DVC paprastai laimi. Jis susieja kodą, parametrus, duomenų rinkinius ir modelius kartu, o lakeFS tvarko duomenų rinkinių izoliaciją ir keliones laiku ežero lygiu.
K2: ar galiu naudoti lakeFS ir DVC kartu be netvarkos?
Taip. Naudokite lakeFS įrašus savo ežero duomenų rinkiniams versijuoti ir nurodykite tuos įrašų ID DVC. Leiskite DVC tvarkyti artefaktus ir vamzdynus; leiskite lakeFS tvarkyti šakas ir suliejimus objektų saugykloje.
K3: ar DVC pakeičia duomenų ežerą ar lakeFS?
Ne. DVC organizuoja didelius failus ir eksperimentus aplink Git; jis nepaverčia S3 transakcine saugykla. lakeFS yra priešais jūsų ežerą ir prideda šakojimą, įrašus ir izoliaciją.
K4: ar lakeFS yra per daug mažiems komandoms?
Dažnai, taip. Jei nežongliruojate kelių komandų izoliacija ar valdymu, DVC paprastumas yra patrauklus. lakeFS yra prasmingas, kai šakomis pagrįsta izoliacija ir audito sekos sutaupo tikrų pinigų ar gedimų.
Q5: Kaip lyginasi lakeFS ir DVC kaštai?
DVC kaštai labiau susiję su programuotojų laiku ir saugyklos apyvarta „push/pull“ metu. lakeFS kaštai labiau susiję su paslaugos vykdymu ir politikos valdymu, tačiau šakojimasis yra pigus ir patogus duomenų išsiuntimui.