Dataversionskontroll (mjukvara)

DVC
Originalförfattare Dmitrij Petrov
Utvecklare Iterative.ai
Initial release 4 maj 2017; 5 år sedan
Stabil frisättning
2.30.0 / 10 oktober 2022; 1 dag sedan
Förvar https://github.com/iterative/dvc
Skrivet i Pytonorm
Typ Machine Learning CLI
Licens Apache - 2.0
Hemsida dvc .org

DVC är ett gratis och öppen källkod , plattformsoberoende versionssystem för data , maskininlärningsmodeller och experiment. Den är utformad för att göra ML-modeller delbara, experiment reproducerbara och för att spåra versioner av modeller, data och pipelines. DVC fungerar ovanpå Git- repositories och molnlagring .

Den första (beta)versionen av DVC 0.6 lanserades i maj 2017. I maj 2020 släpptes DVC 1.0 offentligt av Iterative.ai.

Översikt

är utformat för att införliva bästa praxis för programvaruutveckling i maskininlärningsarbetsflöden . Den gör detta genom att utöka det traditionella mjukvaruverktyget Git med molnlagringar för datauppsättningar och maskininlärningsmodeller.

DVC gör specifikt maskininlärning:

  • Kodifierad: den kodifierar datamängder och modeller genom att lagra pekare till datafilerna i molnlagringar .
  • Reproducerbar: det tillåter användare att reproducera experiment och bygga om datamängder från rådata . Dessa funktioner gör det också möjligt att automatisera konstruktionen av datamängder, utbildning, utvärdering och distribution av ML-modeller.

DVC och Git

DVC lagrar stora filer och datauppsättningar i separat lagring, utanför Git . Denna lagring kan finnas på användarens dator eller vara värd hos någon större molnlagringsleverantör, som AWS S3 , Google Cloud Storage och Microsoft Azure Blob Storage. DVC-användare kan också ställa in ett fjärrlager på valfri server och ansluta till det på distans.

När en användare lagrar sina data och modeller i fjärrförvaret skapas en textfil i deras Git- förråd som pekar på den faktiska datan i fjärrlagringen.

Funktioner

DVC:s funktioner kan delas in i tre kategorier: datahantering , pipelines och experimentspårning.

Datahantering

Data- och modellversionering är baslagret i DVC för stora filer, datauppsättningar och maskininlärningsmodeller . Det tillåter användning av ett standard Git- arbetsflöde , men utan att behöva lagra dessa filer i förvaret. Stora filer, kataloger och ML-modeller ersätts med små metafiler , som i sin tur pekar på originaldata. Data lagras separat, vilket gör att datavetare kan överföra stora datamängder eller dela en modell med andra.

DVC möjliggör dataversionering genom kodifiering. När en användare skapar metafiler, som beskriver vilka datamängder, ML-artefakter och andra funktioner som ska spåras, gör DVC det möjligt att fånga versioner av data och modeller, skapa och återställa från ögonblicksbilder, spela in utvecklande mätvärden, växla mellan versioner, etc.

Unika versioner av datafiler och kataloger cachelagras på ett systematiskt sätt (förhindrar även filduplicering). Den fungerande datalagringen är separerad från användarens arbetsyta för att hålla projektet lätt, men förblir ansluten via fillänkar som hanteras automatiskt av DVC.

Rörledningar

DVC tillhandahåller en mekanism för att definiera och utföra pipelines . Pipelines representerar processen att bygga ML-datauppsättningar och modeller, från hur data förbehandlas till hur modeller tränas och utvärderas. Rörledningar kan också användas för att distribuera modeller i produktionsmiljöer.

DVC pipeline är fokuserad på experimentfasen av ML-processen. Användare kan köra flera kopior av en DVC-pipeline genom att klona ett Git-förråd med pipelinen eller köra ML-experiment. De kan också spela in arbetsflödet som en pipeline och återskapa det i framtiden.

Pipelines representeras i kod som yaml- konfigurationsfiler . Dessa filer definierar stegen i pipelinen och hur data och information flödar från ett steg till nästa.

När en pipeline körs registreras artefakterna som produceras av den pipeline i en dvc.lock-fil . Låsfilen registrerar stegen som kördes och lagrar en hash av den resulterande utdata för varje steg . Det är inte bara en registrering av exekveringen av pipelinen, utan är också användbar när man bestämmer vilka steg som måste köras om vid efterföljande körningar av pipelinen.

Experimentspårning

Experimentspårning låter utvecklare utforska, iterera och jämföra olika maskininlärningsexperiment.

Varje experiment representerar en variant av ett datavetenskapligt projekt som definieras av förändringar i arbetsytan. Experimenten upprätthåller en länk till commit i den aktuella grenen (Git HEAD ) som deras förälder eller baslinje. De utgör dock inte en del av det vanliga Git- trädet (såvida de inte görs persistenta). Detta stoppar tillfälliga commits och förgreningar från att svämma över en användares arkiv.

Vanliga användningsfall för experiment är:

  1. Jämförelse av modellarkitekturer
  2. Jämförelse av utbildnings- eller utvärderingsdatauppsättningar
  3. Val av modellhyperparametrar

DVC-experiment kan hanteras och visualiseras antingen från VS Code IDE eller online med Iterative Studio. Visualisering låter varje användare jämföra experimentresultat visuellt, spåra plotter och generera dem med biblioteksintegrationer.

DVC erbjuder flera alternativ för att använda visualisering i ett vanligt arbetsflöde:

  • DVC kan generera HTML- filer som inkluderar interaktiva plotter från dataserier i JSON , YAML , CSV eller TSV format
  • DVC kan hålla reda på bildfiler som produceras som plottningsutgångar från tränings-/utvärderingsskripten
  • DVCLive-integrationer kan producera plotter automatiskt under träningen

Tillägget DVC VS Code

2022 släppte Iterative ett gratis tillägg för Visual Studio Code (VS Code), en källkodsredigerare tillverkad av Microsoft , som ger VS Code-användare möjlighet att använda DVC i sina redigerare med ytterligare användargränssnittsfunktionalitet .

Historia

Under 2017 släpptes den första (beta)versionen av DVC 0.6 offentligt (som ett enkelt kommandoradsverktyg). Det gjorde det möjligt för datavetare att hålla reda på sina maskininlärningsprocesser och filberoenden i den enkla formen av git-liknande kommandon. Det gjorde det också möjligt för dem att omvandla befintliga maskininlärningsprocesser till reproducerbara DVC-pipelines. DVC 0.6 löste de flesta vanliga problem som maskininlärningsingenjörer och datavetare stod inför: reproducerbarheten av maskininlärningsexperiment, såväl som dataversionering och låga nivåer av samarbete mellan team.

DVC, som skapats av ex-Microsofts dataforskare Dmitry Petrov, syftade till att integrera de bästa befintliga metoderna för mjukvaruutveckling i maskininlärningsoperationer.

2018 grundade Dmitry Petrov tillsammans med Ivan Shcheklein, ingenjör och entreprenör, Iterative.ai, ett MLOps-företag som fortsatte utvecklingen av DVC. Förutom DVC ligger Iterative.ai också bakom verktyg med öppen källkod som CML, MLEM och Studio, företagsversionen av verktygen med öppen källkod.

I juni 2020 släppte teamet Iterative.ai DVC 1.0. Nya funktioner som flerstegs DVC-filer, körcache, plotter, dataöverföringsoptimeringar, hyperparameterspårning och stabila utgivningscykler lades till som ett resultat av diskussioner och bidrag från communityn.

I mars 2021 släppte DVC DVC 2.0, som introducerade ML-experiment (experimenthantering), modellkontrollpunkter och mätvärdesloggning.

ML-experiment: För att lösa problemet med Git-overhead, när hundratals experiment måste köras på en enda dag och varje experimentkörning kräver ytterligare Git-kommandon, introducerade DVC 2.0 funktionen för lättviktsexperiment . Det låter sina användare automatiskt spåra ML-experiment och fånga kodändringar.

Detta eliminerade beroendet av ytterligare tjänster genom att spara dataversioner som metadata i Git, i motsats till att delegera det till externa databaser eller API:er.

ML modell checkpoints versionering: Den nya releasen möjliggör även versionering av alla checkpoints med motsvarande kod och data.

Mätvärdesloggning: DVC 2.0 introducerade ett nytt öppen källkodsbibliotek DVC-Live som skulle ge funktionalitet för att spåra modellmätningar och organisera mätvärden på ett sätt som DVC kunde visualisera med navigering i Git-historiken.

Alternativa lösningar till DVC

Det finns flera projekt med öppen källkod som tillhandahåller liknande funktioner för dataversionskontroll som DVC, till exempel: Git LFS , Dolt och lakeFS . Dessa projekt varierar i sin anpassning till de olika behoven hos dataingenjörer och datavetare såsom: skalbarhet, filformat som stöds, stöd i tabelldata och ostrukturerad data, volym av data som stöds och mer.

externa länkar