From 87264eb77b41988ad95f01d77114cfecb0a8ef90 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Tue, 1 Sep 2020 00:48:12 -0500 Subject: [PATCH 01/95] cases: [WIP] befin rewriting Versioning: explain why versioning large files is important/a thing per https://github.com/iterative/dvc.org/pull/1716#issuecomment-684122937 --- .../versioning-data-and-model-files/index.md | 124 +++--------------- 1 file changed, 19 insertions(+), 105 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index be28edd905..4c9c736377 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -1,28 +1,28 @@ # Versioning Data and Model Files -DVC enables versioning large files and directories such as datasets, data -science features, and machine learning models using Git, but without storing the -contents in Git. +SCM or _version control_ was a disruptive introduction to software development +because it allows effective collaboration on source code by all the stakeholders +of a project. In [Git](https://git-scm.com/), this means commits, branches and +tags, merging or rebasing, etc. -This is achieved by saving information about the data in special -[metafiles](/doc/user-guide/dvc-files-and-directories) that replace the data in -the repository. These can be versioned with regular Git workflows (branches, -pull requests, etc.) +Source code versioning features require storing text files and other small +assets in the code repository, but **storage itself** is not the goal of SCM. In +fact, having large and binary files in code repos can be considered a +side-effect, and its severely limited by Git hosting +([e.g. GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota)). -To actually store the data, DVC uses a built-in cache, and supports -synchronizing it with various types of -[remote storage](/doc/command-reference/remote). This allows storing and sharing -data easily, and alongside code. +Traditional storage solutions like hard drives or NAS, as well as cloud storage +services like Amazon S3 and Google Drive, are much more optimal platforms for +storing big data files and folders. So what if we could combine their advantages +with the versioning capabilities of Git? -![](/img/model-versioning-diagram.png) _Code and data flows in DVC_ +![](/img/model-versioning-diagram.png) _DVC's hybrid versioned storage model_ -In this basic use case, DVC is a better alternative to -[Git-LFS / Git-annex](/doc/user-guide/related-technologies) and to ad-hoc -scripts used to manage ML artifacts (training data, models, etc.) -on cloud storage. DVC doesn't require special services, and works with -on-premises storage (e.g. SSH, NAS) as well as any major cloud storage provider -(Amazon S3, Microsoft Azure, Google Drive, -[among others](/doc/command-reference/remote/add#supported-storage-types)). +... + +## How it Looks + +... > For hands-on experience, we recommend following the > [versioning tutorial](/doc/use-cases/versioning-data-and-model-files). @@ -41,89 +41,3 @@ are designed for source code management (SCM) however, and thus ill-equipped to support data science needs. That's where DVC comes in: with its built-in data cache, reproducible [pipelines](/doc/start/data-pipelines), among several other novel features (see [Get Started](/doc/start/) for a primer.) - -## Track data and models for versioning - -Let's say you have an empty DVC repository and put a dataset of -images in the `images/` directory. You can start tracking it with `dvc add`. -This generate a `.dvc` file, which can be committed to Git in order to save the -project's version: - -```dvc -$ ls images/ -0001.jpg 0002.jpg 0003.jpg 0004.jpg ... - -$ dvc add images/ - -$ git add images.dvc .gitignore -$ git commit -m "Track images dataset with DVC." -``` - -DVC's also allows to define the processes that build artifacts based on tracked -data, such as an ML model, by writing a simple `dvc.yaml` file that connects the -pieces together: - -> `dvc.yaml` files can be written manually or generated with `dvc run`. - -```yaml -stages: - train: - cmd: python train.py images/ - deps: - - images - outs: - - model.pkl -``` - -> See [Data Pipelines](/doc/start/data-pipelines) for a comprehensive intro to -> this feature. - -`dvc repro` can now execute the `train` stage for you. DVC will track all of its -outputs (`outs`) automatically. Let's do that, and commit this project version: - -```dvc -$ dvc repro -Running stage 'train' with command: - python train.py images/ -Updating lock file 'dvc.lock' -... - -$ git add dvc.yaml dvc.lock .gitignore -$ git commit -m "Train model via DVC." -$ git tag -a "v1.0" -m "Fist model" # We'll use this soon ;) -``` - -> See also `dvc.lock`. - -## Switching versions - -After iterating on this process and producing several versions, you can combine -`git checkout` and `dvc checkout` to perform full or partial -workspace restorations. - -![](/img/versioning.png) _Code and data checkout_ - -> Note that `dvc install` enables auto-checkouts of data after `git checkout`. - -A full checkout brings the whole project back to a previous version -— code, dataset and model files all match each other: - -```dvc -$ git checkout v1.0 -$ dvc checkout -M images -M model.pkl -``` - -However, we can checkout certain parts only, for example if we want to keep the -latest source code and model but rewind to the previous dataset only: - -```dvc -$ git checkout v1.0 images.dvc -$ dvc checkout images.dvc -M images -``` - -DVC [optimizes](/doc/user-guide/large-dataset-optimization) this operation by -avoiding copying files each time, so checking out data is quick even if you have -large data files. From 8bdae1daad0f733ca0b8e06dd04d18fac43ad311 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 2 Sep 2020 12:24:02 -0500 Subject: [PATCH 02/95] cases: give some sense of why versioning data and models is important per https://github.com/iterative/dvc.org/pull/1747#issuecomment-685202993 --- .../versioning-data-and-model-files/index.md | 44 +++++++++++-------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 4c9c736377..42baa0b517 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -1,28 +1,32 @@ # Versioning Data and Model Files -SCM or _version control_ was a disruptive introduction to software development -because it allows effective collaboration on source code by all the stakeholders -of a project. In [Git](https://git-scm.com/), this means commits, branches and -tags, merging or rebasing, etc. - -Source code versioning features require storing text files and other small -assets in the code repository, but **storage itself** is not the goal of SCM. In -fact, having large and binary files in code repos can be considered a -side-effect, and its severely limited by Git hosting -([e.g. GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota)). - -Traditional storage solutions like hard drives or NAS, as well as cloud storage -services like Amazon S3 and Google Drive, are much more optimal platforms for -storing big data files and folders. So what if we could combine their advantages -with the versioning capabilities of Git? +[Version control](https://en.wikipedia.org/wiki/Version_control) was a +disruptive introduction to software development because it allows effective +collaboration on source code. This means keeping a change history, going back +and forth, working on features in parallel (branching), enforcing peer-reviews, +assisted merging of divergent versions, tagging key revisions, etc. Imagine if +we could use the same tools for data modeling! + +Unfortunately, versioning tools like [Git](https://git-scm.com/) are designed +for small text files (code). While other assets can exist in the repo, storage +itself is a side-effect — limited by Git hosting services +[like-GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota). +Traditional storage solutions like hard drives or NAS, as well as cloud services +like Amazon S3 or Google Drive, are much better options for storing large files +and folders. + +What if we could **combine effective data storage with robust versioning +features**? ![](/img/model-versioning-diagram.png) _DVC's hybrid versioned storage model_ -... +... why DVC is the way to go (sell philosophy) -## How it Looks +## How it looks -... +... reference to a problem (exemplify why to version data) + +... demo DVC's look&feel (more philosophy?) > For hands-on experience, we recommend following the > [versioning tutorial](/doc/use-cases/versioning-data-and-model-files). @@ -37,7 +41,9 @@ versions out-of-the-box. Full-fledged [version control](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control) is left for Git and its hosting platforms (e.g. GitHub, GitLab) to handle. These -are designed for source code management (SCM) however, and thus ill-equipped to +are designed for source code versioning however, and thus ill-equipped to support data science needs. That's where DVC comes in: with its built-in data cache, reproducible [pipelines](/doc/start/data-pipelines), among several other novel features (see [Get Started](/doc/start/) for a primer.) + +... connect with other cases From 1679c5970fb747f3565c506df35ab091bdd3c206 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 2 Sep 2020 14:19:31 -0500 Subject: [PATCH 03/95] guide: why DVC is the way to Version data (sell philosophy) per https://github.com/iterative/dvc.org/pull/1747#issuecomment-685202993 --- .../versioning-data-and-model-files/index.md | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 42baa0b517..c7b8bcab74 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -1,26 +1,32 @@ # Versioning Data and Model Files -[Version control](https://en.wikipedia.org/wiki/Version_control) was a -disruptive introduction to software development because it allows effective -collaboration on source code. This means keeping a change history, going back -and forth, working on features in parallel (branching), enforcing peer-reviews, -assisted merging of divergent versions, tagging key revisions, etc. Imagine if -we could use the same tools for data modeling! - -Unfortunately, versioning tools like [Git](https://git-scm.com/) are designed -for small text files (code). While other assets can exist in the repo, storage -itself is a side-effect — limited by Git hosting services -[like-GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota). -Traditional storage solutions like hard drives or NAS, as well as cloud services -like Amazon S3 or Google Drive, are much better options for storing large files -and folders. +[Version control](https://en.wikipedia.org/wiki/Version_control) has become a +staple in software engineering because it allows effective collaboration on +source code. This means having a change history to go back to (commits), +developing features in parallel (branching), assisted merging, peer-reviews +(pull requests), tagging key revisions, etc. Imagine if we could use these +features for data modeling! + +Unfortunately, versioning tools like [Git](https://git-scm.com/) are designed to +handle small text files. While other assets can exist in the repository, storage +itself is not the goal, and is limited by Git hosting services +[such as GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota). +Traditional storage solutions like hard drives or NAS, or cloud services like +Amazon S3 or Google Drive, are much better options for saving and transferring +large files. What if we could **combine effective data storage with robust versioning features**? ![](/img/model-versioning-diagram.png) _DVC's hybrid versioned storage model_ -... why DVC is the way to go (sell philosophy) +DVC brings the best of both worlds together by replacing the data in the repo +with small, human-readable +[metafiles](/doc/user-guide/dvc-files-and-directories). Tracked data is +cache locally outside the Git repo, and can easily be synchronized +with on-premises or cloud storage. Unlike other alternatives (like Git-LFS), +[remote storage](/doc/command-reference/remote) is optional — no server setup or +special services are required. ## How it looks From ab356933fd0203139197b07cd9e35c59c24f0793 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 2 Sep 2020 19:42:51 -0500 Subject: [PATCH 04/95] cases: add example section explaining why data versionig is is important, and how it looks with DVC per https://github.com/iterative/dvc.org/pull/1747#issuecomment-685884283 --- .../versioning-data-and-model-files/index.md | 46 ++++++++++++++----- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index c7b8bcab74..893e45bb19 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -2,16 +2,16 @@ [Version control](https://en.wikipedia.org/wiki/Version_control) has become a staple in software engineering because it allows effective collaboration on -source code. This means having a change history to go back to (commits), -developing features in parallel (branching), assisted merging, peer-reviews -(pull requests), tagging key revisions, etc. Imagine if we could use these -features for data modeling! +source code. This means having a change history to go back (commits), developing +features in parallel (branching), assisted merging, peer-reviews (pull +requests), tagging key revisions, etc. Imagine if we could use these features +for data modeling! Unfortunately, versioning tools like [Git](https://git-scm.com/) are designed to handle small text files. While other assets can exist in the repository, storage -itself is not the goal, and is limited by Git hosting services -[such as GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota). -Traditional storage solutions like hard drives or NAS, or cloud services like +itself is not the goal, and its limited by Git hosting services +[like GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota). +Traditional storage solutions such as hard drives or NAS, or cloud services like Amazon S3 or Google Drive, are much better options for saving and transferring large files. @@ -24,15 +24,39 @@ DVC brings the best of both worlds together by replacing the data in the repo with small, human-readable [metafiles](/doc/user-guide/dvc-files-and-directories). Tracked data is cache locally outside the Git repo, and can easily be synchronized -with on-premises or cloud storage. Unlike other alternatives (like Git-LFS), +with on-premises or cloud storage. But unlike other alternatives (like Git-LFS), [remote storage](/doc/command-reference/remote) is optional — no server setup or special services are required. -## How it looks +## Why bother? -... reference to a problem (exemplify why to version data) +Working on data processing code, it's easy to overlook that the initial data may +also change along the way. If something goes wrong (or for any reason), it may +be easy to revisit previous versions of the code with Git. But its behavior may +still be different with the latest data! -... demo DVC's look&feel (more philosophy?) +To eliminate this variable and achieve full +[reproducibility](/doc/start/data-pipelines), we can use DVC to capture data +snapshots that match code checkpoints: + +```dvc +$ git add cleanup.c +$ dvc add data/raw +... +$ git add data/raw.dvc data/.gitignore + +$ git commit -m 'Data cleanup v1' +``` + +Now that Git is tracking the code (including a tiny `raw.dvc` `.dvc` file), and +DVC is tracking the data, we can repeat the procedure to generate more commits. +And to go back: + +```dvc +$ git checkout v1 +$ dvc checkout +M data\raw +``` > For hands-on experience, we recommend following the > [versioning tutorial](/doc/use-cases/versioning-data-and-model-files). From 5ed0d754945fb7eb3a097f9bfda72f56e94b8973 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 2 Sep 2020 19:55:29 -0500 Subject: [PATCH 05/95] cases: wrap up Versioning full draft --- .../versioning-data-and-model-files/index.md | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 893e45bb19..3e6c34b43b 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -20,24 +20,25 @@ features**? ![](/img/model-versioning-diagram.png) _DVC's hybrid versioned storage model_ -DVC brings the best of both worlds together by replacing the data in the repo -with small, human-readable -[metafiles](/doc/user-guide/dvc-files-and-directories). Tracked data is -cache locally outside the Git repo, and can easily be synchronized -with on-premises or cloud storage. But unlike other alternatives (like Git-LFS), -[remote storage](/doc/command-reference/remote) is optional — no server setup or -special services are required. +DVC brings the best of both worlds together by replacing the data with small, +human-readable [metafiles](/doc/user-guide/dvc-files-and-directories) that Git +can handle. The data itself is cached locally outside the Git repo, +and can easily be synchronized with on-premises or cloud storage. But unlike +other options (like +[Git-LFS](/doc/user-guide/related-technologies#git-lfs-large-file-storage)), +[remote storage](/doc/command-reference/remote) is optional: no server setup or +special services are needed, just the `dvc` command. ## Why bother? Working on data processing code, it's easy to overlook that the initial data may -also change along the way. If something goes wrong (or for any reason), it may -be easy to revisit previous versions of the code with Git. But its behavior may -still be different with the latest data! +also change along the way. If something goes wrong (or for any other reason), it +may be easy to revisit previous versions of the code with Git. But its behavior +may still be different with the latest data! To eliminate this variable and achieve full -[reproducibility](/doc/start/data-pipelines), we can use DVC to capture data -snapshots that match code checkpoints: +[reproducibility](/doc/start/data-pipelines), we can use `dvc add` to capture +data snapshots that match code checkpoints: ```dvc $ git add cleanup.c @@ -48,9 +49,9 @@ $ git add data/raw.dvc data/.gitignore $ git commit -m 'Data cleanup v1' ``` -Now that Git is tracking the code (including a tiny `raw.dvc` `.dvc` file), and -DVC is tracking the data, we can repeat the procedure to generate more commits. -And to go back: +Now that Git is tracking the code (including a `.dvc` file), and DVC is tracking +the data, we can repeat the procedure to generate more commits. Use +`dvc checkout` to go back: ```dvc $ git checkout v1 @@ -58,7 +59,7 @@ $ dvc checkout M data\raw ``` -> For hands-on experience, we recommend following the +> For more hands-on experience, we recommend following the > [versioning tutorial](/doc/use-cases/versioning-data-and-model-files). ## DVC is not Git! @@ -75,5 +76,3 @@ are designed for source code versioning however, and thus ill-equipped to support data science needs. That's where DVC comes in: with its built-in data cache, reproducible [pipelines](/doc/start/data-pipelines), among several other novel features (see [Get Started](/doc/start/) for a primer.) - -... connect with other cases From c29155808439892d15e80e18bb46a126f5ff497d Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 2 Sep 2020 21:52:13 -0500 Subject: [PATCH 06/95] cases: rename demo section in Versioning, roll back checkout img, et al. --- .../versioning-data-and-model-files/index.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 3e6c34b43b..37073c3947 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -18,7 +18,7 @@ large files. What if we could **combine effective data storage with robust versioning features**? -![](/img/model-versioning-diagram.png) _DVC's hybrid versioned storage model_ +![](/img/model-versioning-diagram.png) _DVC's hybrid versioned storage_ DVC brings the best of both worlds together by replacing the data with small, human-readable [metafiles](/doc/user-guide/dvc-files-and-directories) that Git @@ -29,14 +29,14 @@ other options (like [remote storage](/doc/command-reference/remote) is optional: no server setup or special services are needed, just the `dvc` command. -## Why bother? +## How it looks -Working on data processing code, it's easy to overlook that the initial data may -also change along the way. If something goes wrong (or for any other reason), it -may be easy to revisit previous versions of the code with Git. But its behavior +Working on data processing code, it's easy to overlook that the initial data +also changes along the way. If something goes wrong (or for any other reason), +it's easy to revisit previous versions of the code with Git. But its behavior may still be different with the latest data! -To eliminate this variable and achieve full +To "eliminate this variable" and achieve full [reproducibility](/doc/start/data-pipelines), we can use `dvc add` to capture data snapshots that match code checkpoints: @@ -46,7 +46,7 @@ $ dvc add data/raw ... $ git add data/raw.dvc data/.gitignore -$ git commit -m 'Data cleanup v1' +$ git commit -m 'Data cleanup v1.0' ``` Now that Git is tracking the code (including a `.dvc` file), and DVC is tracking @@ -54,11 +54,13 @@ the data, we can repeat the procedure to generate more commits. Use `dvc checkout` to go back: ```dvc -$ git checkout v1 +$ git checkout v1.0 $ dvc checkout M data\raw ``` +![](/img/versioning.png) _Full project restoration_ + > For more hands-on experience, we recommend following the > [versioning tutorial](/doc/use-cases/versioning-data-and-model-files). From 9e564e34cf2ab1c40124a30c6bae24cd6d643e49 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 16 Sep 2020 19:04:33 -0400 Subject: [PATCH 07/95] cases: some more versioning updates --- .../versioning-data-and-model-files/index.md | 27 +++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 37073c3947..cf5e2d97af 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -8,23 +8,22 @@ requests), tagging key revisions, etc. Imagine if we could use these features for data modeling! Unfortunately, versioning tools like [Git](https://git-scm.com/) are designed to -handle small text files. While other assets can exist in the repository, storage -itself is not the goal, and its limited by Git hosting services +handle small text files. While other assets can exist in the repository, file +storage itself is a side effect, and it's limited by hosting services [like GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota). -Traditional storage solutions such as hard drives or NAS, or cloud services like -Amazon S3 or Google Drive, are much better options for saving and transferring +Traditional storage solutions such as hard drives or NAS, and cloud services +like Amazon S3 or Google Drive are much better options for saving and sharing large files. -What if we could **combine effective data storage with robust versioning -features**? +What if we could **combine big data storage with versioning features**? ![](/img/model-versioning-diagram.png) _DVC's hybrid versioned storage_ DVC brings the best of both worlds together by replacing the data with small, human-readable [metafiles](/doc/user-guide/dvc-files-and-directories) that Git -can handle. The data itself is cached locally outside the Git repo, -and can easily be synchronized with on-premises or cloud storage. But unlike -other options (like +can handle. The data itself is cached locally, outside of the Git +repo, and can be easily synchronized with on-premises or cloud storage. But +unlike other solutions (like [Git-LFS](/doc/user-guide/related-technologies#git-lfs-large-file-storage)), [remote storage](/doc/command-reference/remote) is optional: no server setup or special services are needed, just the `dvc` command. @@ -69,12 +68,6 @@ M data\raw DVC metafiles such as `dvc.yaml` and `.dvc` files serve as placeholders to track data files and directories (among other purposes). They point to specific data contents in the cache, providing the ability to store multiple data -versions out-of-the-box. - -Full-fledged +versions out-of-the-box. Full-fledged [version control](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control) -is left for Git and its hosting platforms (e.g. GitHub, GitLab) to handle. These -are designed for source code versioning however, and thus ill-equipped to -support data science needs. That's where DVC comes in: with its built-in data -cache, reproducible [pipelines](/doc/start/data-pipelines), among -several other novel features (see [Get Started](/doc/start/) for a primer.) +is left for Git to handle, however. From 9d5dca1cf9dd4eb971a85638af77197284f8879a Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 16 Sep 2020 19:13:45 -0400 Subject: [PATCH 08/95] cases: shorten versioning intro --- .../versioning-data-and-model-files/index.md | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index cf5e2d97af..d5c2970725 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -4,29 +4,27 @@ staple in software engineering because it allows effective collaboration on source code. This means having a change history to go back (commits), developing features in parallel (branching), assisted merging, peer-reviews (pull -requests), tagging key revisions, etc. Imagine if we could use these features -for data modeling! +requests), tagging key revisions, etc. Imagine if we could use these features in +data modeling! Unfortunately, versioning tools like [Git](https://git-scm.com/) are designed to -handle small text files. While other assets can exist in the repository, file -storage itself is a side effect, and it's limited by hosting services +handle small text files. And while other assets can exist in the repository, +storage is limited by hosting services [like GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota). -Traditional storage solutions such as hard drives or NAS, and cloud services -like Amazon S3 or Google Drive are much better options for saving and sharing -large files. -What if we could **combine big data storage with versioning features**? +What if we could **combine versioning features with data storage** like +traditional hard drives, NAS, or cloud services like Amazon S3 and Google Drive? ![](/img/model-versioning-diagram.png) _DVC's hybrid versioned storage_ DVC brings the best of both worlds together by replacing the data with small, human-readable [metafiles](/doc/user-guide/dvc-files-and-directories) that Git can handle. The data itself is cached locally, outside of the Git -repo, and can be easily synchronized with on-premises or cloud storage. But -unlike other solutions (like -[Git-LFS](/doc/user-guide/related-technologies#git-lfs-large-file-storage)), -[remote storage](/doc/command-reference/remote) is optional: no server setup or -special services are needed, just the `dvc` command. +repo, and can be easily synchronized with on-premises or cloud storage for +sharing. Unlike other solutions (like +[Git-LFS](/doc/user-guide/related-technologies#git-lfs-large-file-storage)) +though, [remote storage](/doc/command-reference/remote) is optional in DVC: no +server setup or special services are needed, just the `dvc` command. ## How it looks From c18814648c8f17bbbbdb6723d5d0d1621649eb9b Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Thu, 17 Sep 2020 13:37:22 -0400 Subject: [PATCH 09/95] cases: add bullet list of Versioning advantages per https://github.com/iterative/dvc.org/pull/1747#issuecomment-693756786 --- content/docs/use-cases/data-registries.md | 11 +++--- .../versioning-data-and-model-files/index.md | 34 ++++++++++++++++--- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/content/docs/use-cases/data-registries.md b/content/docs/use-cases/data-registries.md index 32735affa8..eac94e5793 100644 --- a/content/docs/use-cases/data-registries.md +++ b/content/docs/use-cases/data-registries.md @@ -22,10 +22,9 @@ _middleware_ between ML projects and cloud storage. Here are its advantages: - Reusability: reproduce and organize _feature stores_ with a simple CLI (`dvc get` and `dvc import` commands, similar to software package management systems like `pip`). -- Persistence: the DVC registry-controlled - [remote storage](/doc/command-reference/remote) (e.g. an S3 bucket) improves - data security. There are less chances someone can delete or rewrite a model, - for example. +- Persistence: [remote storage](/doc/command-reference/remote) (e.g. an S3 + bucket) controlled by the DVC registry improves data security. There are less + chances someone can delete or rewrite a model, for example. - Storage optimization: track data [shared](/doc/use-cases/sharing-data-and-model-files) by multiple projects centralized in a single location (with the ability to create distributed @@ -36,8 +35,8 @@ _middleware_ between ML projects and cloud storage. Here are its advantages: cloud storage, but without ad-hoc conventions. - Security: registries can be setup to have read-only remote storage (e.g. an HTTP location). Git versioning of - [DVC metafiles](/doc/user-guide/dvc-files-and-directories) allows us to track - and audit data changes. + [DVC metafiles](/doc/user-guide/dvc-files-and-directories) allows us to audit + data changes. ## Building registries diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index d5c2970725..8108d76fad 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -1,5 +1,7 @@ # Versioning Data and Model Files + + [Version control](https://en.wikipedia.org/wiki/Version_control) has become a staple in software engineering because it allows effective collaboration on source code. This means having a change history to go back (commits), developing @@ -17,6 +19,8 @@ traditional hard drives, NAS, or cloud services like Amazon S3 and Google Drive? ![](/img/model-versioning-diagram.png) _DVC's hybrid versioned storage_ + + DVC brings the best of both worlds together by replacing the data with small, human-readable [metafiles](/doc/user-guide/dvc-files-and-directories) that Git can handle. The data itself is cached locally, outside of the Git @@ -26,12 +30,32 @@ sharing. Unlike other solutions (like though, [remote storage](/doc/command-reference/remote) is optional in DVC: no server setup or special services are needed, just the `dvc` command. +## Summary of advantages + +- Reproducibility: match code commits with the corresponding data so you can + always go back to different versions of the full project (code, data, and + effects). +- Snapshots: track and organize data and ML model versions with a simple CLI + (`dvc add` and `dvc checkout`, similar to basic Git commands) and `.dvc` + files. +- Data as code: leverage Git workflow such as commits, branching, pull requests, + reviews, and even CI/CD for your data and models lifecycle. Think Git for + cloud storage, but without ad-hoc conventions. +- Debugging: trace problems using the exact data that was used during + development. +- Releasing: Manage data and model releases like you do with code. Employ + semantic versioning, connect branches to automatic deployment, etc. +- Security: Git versioning of + [DVC metafiles](/doc/user-guide/dvc-files-and-directories) allows us to audit + data changes. And using cloud storage, data access control can be setup per + user or project. + ## How it looks Working on data processing code, it's easy to overlook that the initial data also changes along the way. If something goes wrong (or for any other reason), -it's easy to revisit previous versions of the code with Git. But its behavior -may still be different with the latest data! +it's easy to revisit previous versions of the code with Git. But the results may +still be different with the latest data! To "eliminate this variable" and achieve full [reproducibility](/doc/start/data-pipelines), we can use `dvc add` to capture @@ -46,9 +70,9 @@ $ git add data/raw.dvc data/.gitignore $ git commit -m 'Data cleanup v1.0' ``` -Now that Git is tracking the code (including a `.dvc` file), and DVC is tracking -the data, we can repeat the procedure to generate more commits. Use -`dvc checkout` to go back: +Now that Git is tracking the code (including a `.dvc` file created by DVC), and +DVC is tracking the data, we can repeat the procedure to generate more commits. +Use `dvc checkout` to go back: ```dvc $ git checkout v1.0 From 1f4f2f0a88f3e4e7a5875577f20d06659c3a35ed Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Thu, 17 Sep 2020 18:23:44 -0400 Subject: [PATCH 10/95] cases: shorten Why DVC section in Versioning --- .../use-cases/versioning-data-and-model-files/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 8108d76fad..99fa020461 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -25,10 +25,10 @@ DVC brings the best of both worlds together by replacing the data with small, human-readable [metafiles](/doc/user-guide/dvc-files-and-directories) that Git can handle. The data itself is cached locally, outside of the Git repo, and can be easily synchronized with on-premises or cloud storage for -sharing. Unlike other solutions (like -[Git-LFS](/doc/user-guide/related-technologies#git-lfs-large-file-storage)) -though, [remote storage](/doc/command-reference/remote) is optional in DVC: no -server setup or special services are needed, just the `dvc` command. +sharing. + +> Note that [remote storage](/doc/command-reference/remote) is optional in DVC: +> no server setup or special services are needed, just the `dvc` command. ## Summary of advantages From de07dfab992c52816c778e7f1c3df3d66995bfc1 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 30 Sep 2020 14:47:37 -0400 Subject: [PATCH 11/95] term: data modeling -> data engineering per https://github.com/iterative/dvc.org/pull/1747#pullrequestreview-481386057 --- .../use-cases/versioning-data-and-model-files/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 99fa020461..42aa73bb71 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -4,10 +4,10 @@ [Version control](https://en.wikipedia.org/wiki/Version_control) has become a staple in software engineering because it allows effective collaboration on -source code. This means having a change history to go back (commits), developing -features in parallel (branching), assisted merging, peer-reviews (pull -requests), tagging key revisions, etc. Imagine if we could use these features in -data modeling! +source code. This means having a change history to traverse (commits), +developing parallel features (branching and merging), peer-reviews (pull +requests), release management, etc. Imagine using these features for data +engineering and machine learning! Unfortunately, versioning tools like [Git](https://git-scm.com/) are designed to handle small text files. And while other assets can exist in the repository, From daa99a0ab8e1efc456c405f4bb2ed83a270eef60 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 30 Sep 2020 15:51:20 -0400 Subject: [PATCH 12/95] cases: make advantages section in Data Registry (consistency) --- content/docs/use-cases/data-registries.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/content/docs/use-cases/data-registries.md b/content/docs/use-cases/data-registries.md index eac94e5793..55775fb3f8 100644 --- a/content/docs/use-cases/data-registries.md +++ b/content/docs/use-cases/data-registries.md @@ -16,8 +16,10 @@ repository would have all the metadata and history of changes in the different datasets. We could see who updated what and when, and use pull requests to update data, the same way we do with code. -This is what we call a **data registry** — a kind of data management -_middleware_ between ML projects and cloud storage. Here are its advantages: +That's a **data registry**: a data management _middleware_ between ML projects +and cloud storage. + +## Summary of advantages - Reusability: reproduce and organize _feature stores_ with a simple CLI (`dvc get` and `dvc import` commands, similar to software package management From 02568e7408dae3499def950e1e6abde4fe0ae581 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 30 Sep 2020 15:56:50 -0400 Subject: [PATCH 13/95] cases: make separate Versioned storage section --- .../versioning-data-and-model-files/index.md | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 42aa73bb71..c37560b9c9 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -11,25 +11,11 @@ engineering and machine learning! Unfortunately, versioning tools like [Git](https://git-scm.com/) are designed to handle small text files. And while other assets can exist in the repository, -storage is limited by hosting services +[storage](#versioned-storage) is limited by hosting services [like GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota). -What if we could **combine versioning features with data storage** like -traditional hard drives, NAS, or cloud services like Amazon S3 and Google Drive? - -![](/img/model-versioning-diagram.png) _DVC's hybrid versioned storage_ - -DVC brings the best of both worlds together by replacing the data with small, -human-readable [metafiles](/doc/user-guide/dvc-files-and-directories) that Git -can handle. The data itself is cached locally, outside of the Git -repo, and can be easily synchronized with on-premises or cloud storage for -sharing. - -> Note that [remote storage](/doc/command-reference/remote) is optional in DVC: -> no server setup or special services are needed, just the `dvc` command. - ## Summary of advantages - Reproducibility: match code commits with the corresponding data so you can @@ -50,6 +36,22 @@ sharing. data changes. And using cloud storage, data access control can be setup per user or project. +## Versioned storage + +What if we could **combine versioning features with data storage** like +traditional hard drives, NAS, or cloud services like Amazon S3 and Google Drive? +DVC brings together the best of both worlds by replacing data with small, +human-readable [metafiles](/doc/user-guide/dvc-files-and-directories) that Git +can handle. The data itself is cached locally, outside of the Git +repo, and can be easily synchronized with on-premises or cloud storage for +sharing. + +![](/img/model-versioning-diagram.png) _DVC's hybrid versioned storage_ + +> Note that [remote storage](/doc/command-reference/remote) is optional in DVC: +> no server setup or special services are needed, just the `dvc` command-line +> tool. + ## How it looks Working on data processing code, it's easy to overlook that the initial data From 79d9b0b8e705da44952b37e932983a13200c4f3f Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 30 Sep 2020 17:16:15 -0400 Subject: [PATCH 14/95] cases: rewrite intro and other changes to Versioning per https://github.com/iterative/dvc.org/pull/1747#issuecomment-693756786 --- .../versioning-data-and-model-files/index.md | 64 ++++++++++--------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index c37560b9c9..f30297d486 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -1,7 +1,5 @@ # Versioning Data and Model Files - - [Version control](https://en.wikipedia.org/wiki/Version_control) has become a staple in software engineering because it allows effective collaboration on source code. This means having a change history to traverse (commits), @@ -10,11 +8,17 @@ requests), release management, etc. Imagine using these features for data engineering and machine learning! Unfortunately, versioning tools like [Git](https://git-scm.com/) are designed to -handle small text files. And while other assets can exist in the repository, -[storage](#versioned-storage) is limited by hosting services +handle small text files. DVC begins by enabling the [tracking](#how-it-looks) of +large datasets and other data artifacts by replacing them with +small, human-readable [metafiles](/doc/user-guide/dvc-files-and-directories) +that `git` can handle. The data itself is cached locally, outside +of Git. + +Another limitation of source code management is that, while other assets can +exist in the Git repository, storage is limited by hosting services [like GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota). - - +DVC addresses this problem by integrating with +[dedicated storage](#versioned-storage) platforms. ## Summary of advantages @@ -29,35 +33,28 @@ handle small text files. And while other assets can exist in the repository, cloud storage, but without ad-hoc conventions. - Debugging: trace problems using the exact data that was used during development. -- Releasing: Manage data and model releases like you do with code. Employ - semantic versioning, connect branches to automatic deployment, etc. +- Releasing: Tag stable data and models like you do with code. Employ semantic + versioning, connect branches to automatic deployment, etc. - Security: Git versioning of [DVC metafiles](/doc/user-guide/dvc-files-and-directories) allows us to audit data changes. And using cloud storage, data access control can be setup per user or project. -## Versioned storage - -What if we could **combine versioning features with data storage** like -traditional hard drives, NAS, or cloud services like Amazon S3 and Google Drive? -DVC brings together the best of both worlds by replacing data with small, -human-readable [metafiles](/doc/user-guide/dvc-files-and-directories) that Git -can handle. The data itself is cached locally, outside of the Git -repo, and can be easily synchronized with on-premises or cloud storage for -sharing. - -![](/img/model-versioning-diagram.png) _DVC's hybrid versioned storage_ - -> Note that [remote storage](/doc/command-reference/remote) is optional in DVC: -> no server setup or special services are needed, just the `dvc` command-line -> tool. +> ## ⚠️ DVC is not Git! +> +> DVC metafiles such as `dvc.yaml` and `.dvc` files serve as placeholders to +> track data files and directories (among other purposes). They point to +> specific data contents in the cache, providing the ability to +> store multiple data versions out-of-the-box. Full-fledged +> [version control](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control) +> itself is left for Git to handle, however. ## How it looks Working on data processing code, it's easy to overlook that the initial data also changes along the way. If something goes wrong (or for any other reason), it's easy to revisit previous versions of the code with Git. But the results may -still be different with the latest data! +still be different if using the latest data. To "eliminate this variable" and achieve full [reproducibility](/doc/start/data-pipelines), we can use `dvc add` to capture @@ -87,11 +84,16 @@ M data\raw > For more hands-on experience, we recommend following the > [versioning tutorial](/doc/use-cases/versioning-data-and-model-files). -## DVC is not Git! +## Versioned storage + +What if we could **combine versioning features with data storage** like +traditional hard drives, NAS, or cloud services like Amazon S3 and Google Drive? +DVC brings together the best of both worlds by implementing easy synchronization +between the data cache and on-premises or cloud storage for +sharing. -DVC metafiles such as `dvc.yaml` and `.dvc` files serve as placeholders to track -data files and directories (among other purposes). They point to specific data -contents in the cache, providing the ability to store multiple data -versions out-of-the-box. Full-fledged -[version control](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control) -is left for Git to handle, however. +![](/img/model-versioning-diagram.png) _DVC's hybrid versioned storage_ + +> Note that [remote storage](/doc/command-reference/remote) is optional in DVC: +> no server setup or special services are needed, just the `dvc` command-line +> tool. From 8ddc97663f8f329b2132bd15dc7f4d73d8c5abd5 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 30 Sep 2020 17:37:53 -0400 Subject: [PATCH 15/95] cases: cover gap between Versioning and (remote) storage, link to GS also per https://github.com/iterative/dvc.org/pull/1747#issuecomment-693756786 --- .../versioning-data-and-model-files/index.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index f30297d486..0296dd08ce 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -11,11 +11,15 @@ Unfortunately, versioning tools like [Git](https://git-scm.com/) are designed to handle small text files. DVC begins by enabling the [tracking](#how-it-looks) of large datasets and other data artifacts by replacing them with small, human-readable [metafiles](/doc/user-guide/dvc-files-and-directories) -that `git` can handle. The data itself is cached locally, outside -of Git. +that `git` can handle. The data itself is cached outside of Git. +Other features of DVC build upon this foundation to tackle hurdles specific to +data science. -Another limitation of source code management is that, while other assets can -exist in the Git repository, storage is limited by hosting services +> 💡 Please see [Get Started](/doc/start) for a primer on all of DVC's features. + +Another limitation of source code management is storage. While some data and +binary assets can exist in the Git repository, it's not usually recommended. And +storage is severely limited by hosting services [like GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota). DVC addresses this problem by integrating with [dedicated storage](#versioned-storage) platforms. From 09d1eabe076da1a1553be5dfa859846e92d02695 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Thu, 8 Oct 2020 12:41:05 -0500 Subject: [PATCH 16/95] use-cases: reapply SEO keyword changes from #1806 > Add "data and model versioning", "versioning (large) data files", and "model versions" --- .../versioning-data-and-model-files/index.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 0296dd08ce..ea3fe3537b 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -27,13 +27,13 @@ DVC addresses this problem by integrating with ## Summary of advantages - Reproducibility: match code commits with the corresponding data so you can - always go back to different versions of the full project (code, data, and - effects). -- Snapshots: track and organize data and ML model versions with a simple CLI - (`dvc add` and `dvc checkout`, similar to basic Git commands) and `.dvc` - files. + always go back to different versions of the full project (code, data, models, + etc.). +- Snapshots: track and organize data and machine learning model versions with a + simple CLI (`dvc add` and `dvc checkout`, similar to basic Git commands) and + `.dvc` files. - Data as code: leverage Git workflow such as commits, branching, pull requests, - reviews, and even CI/CD for your data and models lifecycle. Think Git for + reviews, and even CI/CD for your data and ML models lifecycle. Think Git for cloud storage, but without ad-hoc conventions. - Debugging: trace problems using the exact data that was used during development. @@ -47,9 +47,9 @@ DVC addresses this problem by integrating with > ## ⚠️ DVC is not Git! > > DVC metafiles such as `dvc.yaml` and `.dvc` files serve as placeholders to -> track data files and directories (among other purposes). They point to -> specific data contents in the cache, providing the ability to -> store multiple data versions out-of-the-box. Full-fledged +> track large data files and directories for versioning (among other purposes). +> They point to specific data contents in the cache, providing the +> ability to store multiple data versions out-of-the-box. Full-fledged > [version control](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control) > itself is left for Git to handle, however. @@ -90,11 +90,11 @@ M data\raw ## Versioned storage -What if we could **combine versioning features with data storage** like -traditional hard drives, NAS, or cloud services like Amazon S3 and Google Drive? -DVC brings together the best of both worlds by implementing easy synchronization -between the data cache and on-premises or cloud storage for -sharing. +What if we could **combine data and ML model versioning features with large file +storage** solutions like traditional hard drives, NAS, or cloud services such as +Amazon S3 and Google Drive? DVC brings together the best of both worlds by +implementing easy synchronization between the data cache and +on-premises or cloud storage for sharing. ![](/img/model-versioning-diagram.png) _DVC's hybrid versioned storage_ From 7ea83bf4eb46db29f177581bfebd236fe75791bc Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Thu, 8 Oct 2020 12:52:56 -0500 Subject: [PATCH 17/95] cases: make p about storage less overlapping to previous one per https://github.com/iterative/dvc.org/pull/1747#pullrequestreview-501672465 --- .../docs/use-cases/versioning-data-and-model-files/index.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index ea3fe3537b..ef3fcf4223 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -17,9 +17,8 @@ data science. > 💡 Please see [Get Started](/doc/start) for a primer on all of DVC's features. -Another limitation of source code management is storage. While some data and -binary assets can exist in the Git repository, it's not usually recommended. And -storage is severely limited by hosting services +Another limitation of source code management is storage, which is severely +limited by hosting services [like GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota). DVC addresses this problem by integrating with [dedicated storage](#versioned-storage) platforms. From e90d3327c81c75c61e15e7fd4c2ee2cf49ceca56 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Thu, 8 Oct 2020 23:15:52 -0500 Subject: [PATCH 18/95] cases: add paragraph about versioning advantages before DVC's motivation per https://github.com/iterative/dvc.org/pull/1747#pullrequestreview-501672352 --- content/docs/use-cases/data-registries.md | 6 ++--- .../versioning-data-and-model-files/index.md | 26 ++++++++++++------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/content/docs/use-cases/data-registries.md b/content/docs/use-cases/data-registries.md index 8fbd9a62a3..bb29ca50a0 100644 --- a/content/docs/use-cases/data-registries.md +++ b/content/docs/use-cases/data-registries.md @@ -32,9 +32,9 @@ and cloud storage. centralized in a single location (with the ability to create distributed copies on other remotes). This simplifies data management and optimizes space requirements. -- Data as code: leverage Git workflow such as commits, branching, pull requests, - reviews, and even CI/CD for your data and models lifecycle. Think Git for - cloud storage, but without ad-hoc conventions. +- Treat data as code: leverage Git workflow such as commits, branching, pull + requests, reviews, and even CI/CD for your data and models lifecycle. Think + Git for cloud storage. - Security: registries can be setup to have read-only remote storage (e.g. an HTTP location). Git versioning of [DVC metafiles](/doc/user-guide/dvc-files-and-directories) allows us to audit diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index ef3fcf4223..0d3b4451b0 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -2,10 +2,16 @@ [Version control](https://en.wikipedia.org/wiki/Version_control) has become a staple in software engineering because it allows effective collaboration on -source code. This means having a change history to traverse (commits), -developing parallel features (branching and merging), peer-reviews (pull -requests), release management, etc. Imagine using these features for data -engineering and machine learning! +source code. This means having a change history to traverse (commits), clean +parallel work (branching and merging), peer-reviews (pull requests), release +management, etc. + +Imagine leveraging similar features in data science! Track different versions of +datasets and machine learning models easily; Codify data artifacts and data +processes so they can be developed using proven best practices; Make your data +pipelines fully reproducible by yourself and others. + +![](/img/404) _Data versioning in a nutshell_ Unfortunately, versioning tools like [Git](https://git-scm.com/) are designed to handle small text files. DVC begins by enabling the [tracking](#how-it-looks) of @@ -28,12 +34,12 @@ DVC addresses this problem by integrating with - Reproducibility: match code commits with the corresponding data so you can always go back to different versions of the full project (code, data, models, etc.). -- Snapshots: track and organize data and machine learning model versions with a - simple CLI (`dvc add` and `dvc checkout`, similar to basic Git commands) and - `.dvc` files. -- Data as code: leverage Git workflow such as commits, branching, pull requests, - reviews, and even CI/CD for your data and ML models lifecycle. Think Git for - cloud storage, but without ad-hoc conventions. +- Snapshots: track and organize data and machine learning models as they evolve + without ad-hoc conventions, using a simple CLI (`dvc add`, `dvc checkout`, and + other commands similar to `git` basics). +- Treat data as code: leverage Git workflow such as commits, branching, pull + requests, reviews, and even CI/CD for your data and ML models lifecycle. Think + Git for cloud storage. - Debugging: trace problems using the exact data that was used during development. - Releasing: Tag stable data and models like you do with code. Employ semantic From 5f47377d0e105ed87421af7e1478a385c33dbd1c Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Thu, 8 Oct 2020 23:57:51 -0500 Subject: [PATCH 19/95] cases: simplify lists of advantages in Versioning (and Data Reg) rel https://github.com/iterative/dvc.org/pull/1747#pullrequestreview-501672524 --- content/docs/use-cases/data-registries.md | 23 +++++++--------- .../versioning-data-and-model-files/index.md | 27 +++++++++---------- 2 files changed, 22 insertions(+), 28 deletions(-) diff --git a/content/docs/use-cases/data-registries.md b/content/docs/use-cases/data-registries.md index bb29ca50a0..2a93e34b03 100644 --- a/content/docs/use-cases/data-registries.md +++ b/content/docs/use-cases/data-registries.md @@ -17,7 +17,7 @@ datasets. We could see who updated what and when, and use pull requests to update data, the same way we do with code. That's a **data registry**: a data management _middleware_ between ML projects -and cloud storage. +and large file storage. Think Git for cloud storage. ## Summary of advantages @@ -27,18 +27,15 @@ and cloud storage. - Persistence: [remote storage](/doc/command-reference/remote) (e.g. an S3 bucket) controlled by the DVC registry improves data security. There are less chances someone can delete or rewrite a model, for example. -- Storage optimization: track data - [shared](/doc/use-cases/sharing-data-and-model-files) by multiple projects - centralized in a single location (with the ability to create distributed - copies on other remotes). This simplifies data management and optimizes space - requirements. -- Treat data as code: leverage Git workflow such as commits, branching, pull - requests, reviews, and even CI/CD for your data and models lifecycle. Think - Git for cloud storage. -- Security: registries can be setup to have read-only remote storage (e.g. an - HTTP location). Git versioning of - [DVC metafiles](/doc/user-guide/dvc-files-and-directories) allows us to audit - data changes. +- Storage optimization: centralize data + [shared](/doc/use-cases/sharing-data-and-model-files) by multiple projects in + a single location (distributed copies are possible too). This simplifies data + management and optimizes space requirements. +- Treat data as code: leverage Git workflow such as branching, pull requests, + and even CI/CD for your data lifecycle. +- Security: registries can be setup with read-only remote storage (e.g. an HTTP + server). And [DVC metafiles](/doc/user-guide/dvc-files-and-directories) enable + auditing data changes. ## Building registries diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 0d3b4451b0..b124ac5138 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -31,23 +31,20 @@ DVC addresses this problem by integrating with ## Summary of advantages -- Reproducibility: match code commits with the corresponding data so you can - always go back to different versions of the full project (code, data, models, - etc.). -- Snapshots: track and organize data and machine learning models as they evolve - without ad-hoc conventions, using a simple CLI (`dvc add`, `dvc checkout`, and - other commands similar to `git` basics). -- Treat data as code: leverage Git workflow such as commits, branching, pull - requests, reviews, and even CI/CD for your data and ML models lifecycle. Think - Git for cloud storage. +- Reproducibility: match code commits with the corresponding data, machine + learning models, etc. so you can always recover previous processes. +- Simple CLI: track data and ML models as they evolve without ad-hoc + conventions, with simple commands like `dvc add` or `dvc repro` (similar to + `git`). +- Treat data as code: leverage Git workflow such as branching, pull requests, + and even CI/CD for your data lifecycle. - Debugging: trace problems using the exact data that was used during development. -- Releasing: Tag stable data and models like you do with code. Employ semantic - versioning, connect branches to automatic deployment, etc. -- Security: Git versioning of - [DVC metafiles](/doc/user-guide/dvc-files-and-directories) allows us to audit - data changes. And using cloud storage, data access control can be setup per - user or project. +- Releasing: Tag stable data and models like code, using semantic versioning or + other standards. +- Security: [DVC metafiles](/doc/user-guide/dvc-files-and-directories) enable + auditing data changes. And data access controls can be setup via cloud storage + platforms. > ## ⚠️ DVC is not Git! > From f36d10bb7a3d3ece3968429e7b8b4807203c4d18 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Fri, 9 Oct 2020 00:24:39 -0500 Subject: [PATCH 20/95] cases: limitation->constraint (to avoid a redundancy) --- content/docs/use-cases/versioning-data-and-model-files/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index b124ac5138..beaf4bc15e 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -23,7 +23,7 @@ data science. > 💡 Please see [Get Started](/doc/start) for a primer on all of DVC's features. -Another limitation of source code management is storage, which is severely +Another constraint of source code management is storage, which is severely limited by hosting services [like GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota). DVC addresses this problem by integrating with From b9ea7ec47c40b7ccf2cc932d5fd073e41d116b8a Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Fri, 9 Oct 2020 00:31:28 -0500 Subject: [PATCH 21/95] guide: move DVC is not Git! from use cases to What is DVC? rel https://github.com/iterative/dvc.org/pull/1747#pullrequestreview-501672627 --- .../use-cases/versioning-data-and-model-files/index.md | 9 --------- content/docs/user-guide/what-is-dvc.md | 9 +++++++++ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index beaf4bc15e..ef9598077a 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -46,15 +46,6 @@ DVC addresses this problem by integrating with auditing data changes. And data access controls can be setup via cloud storage platforms. -> ## ⚠️ DVC is not Git! -> -> DVC metafiles such as `dvc.yaml` and `.dvc` files serve as placeholders to -> track large data files and directories for versioning (among other purposes). -> They point to specific data contents in the cache, providing the -> ability to store multiple data versions out-of-the-box. Full-fledged -> [version control](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control) -> itself is left for Git to handle, however. - ## How it looks Working on data processing code, it's easy to overlook that the initial data diff --git a/content/docs/user-guide/what-is-dvc.md b/content/docs/user-guide/what-is-dvc.md index ab7e2c2753..e63ea6b304 100644 --- a/content/docs/user-guide/what-is-dvc.md +++ b/content/docs/user-guide/what-is-dvc.md @@ -47,3 +47,12 @@ can version experiments, manage large datasets, and make projects reproducible. > Git servers, as well as SSH and cloud storage providers are supported, > however. + +## DVC is not Git! + +DVC metafiles such as `dvc.yaml` and `.dvc` files serve as placeholders to track +large data files and directories for versioning (among other purposes). They +provide the ability to store multiple data versions out-of-the-box, but this +does not replace any SCM features. Full-fledged +[version control](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control) +is left for Git to handle, however. From 3fdddf216e93860c424d1881f4fb92b0365bfe37 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Fri, 9 Oct 2020 00:35:04 -0500 Subject: [PATCH 22/95] cases: ~~Summary of~~ Advantages (H2) --- content/docs/use-cases/data-registries.md | 2 +- content/docs/use-cases/versioning-data-and-model-files/index.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/docs/use-cases/data-registries.md b/content/docs/use-cases/data-registries.md index 2a93e34b03..29e08121b5 100644 --- a/content/docs/use-cases/data-registries.md +++ b/content/docs/use-cases/data-registries.md @@ -19,7 +19,7 @@ update data, the same way we do with code. That's a **data registry**: a data management _middleware_ between ML projects and large file storage. Think Git for cloud storage. -## Summary of advantages +## Advantages - Reusability: reproduce and organize _feature stores_ with a simple CLI (`dvc get` and `dvc import` commands, similar to software package management diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index ef9598077a..2cd776c25a 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -29,7 +29,7 @@ limited by hosting services DVC addresses this problem by integrating with [dedicated storage](#versioned-storage) platforms. -## Summary of advantages +## Advantages - Reproducibility: match code commits with the corresponding data, machine learning models, etc. so you can always recover previous processes. From ce647f507dd074bf33c53ed6e164c845318212ce Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Fri, 9 Oct 2020 00:48:22 -0500 Subject: [PATCH 23/95] cases: rewrite parts of the DVC motivation paragraphs in Versioning --- .../versioning-data-and-model-files/index.md | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 2cd776c25a..9c40a499fd 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -13,21 +13,21 @@ pipelines fully reproducible by yourself and others. ![](/img/404) _Data versioning in a nutshell_ -Unfortunately, versioning tools like [Git](https://git-scm.com/) are designed to -handle small text files. DVC begins by enabling the [tracking](#how-it-looks) of -large datasets and other data artifacts by replacing them with -small, human-readable [metafiles](/doc/user-guide/dvc-files-and-directories) -that `git` can handle. The data itself is cached outside of Git. -Other features of DVC build upon this foundation to tackle hurdles specific to -data science. - -> 💡 Please see [Get Started](/doc/start) for a primer on all of DVC's features. - -Another constraint of source code management is storage, which is severely -limited by hosting services -[like GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota). -DVC addresses this problem by integrating with -[dedicated storage](#versioned-storage) platforms. +Unfortunately, SCM tools like [Git](https://git-scm.com/) are designed to handle +small text files, so data scientists can only use them to control part of their +assets. Storage itself is also severely limited by code hosting services +[like GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota), +so transferring and managing a separate data storage is a constant issue. + +DVC enables [tracking](#how-it-looks) large datasets and other data +artifacts by replacing them with small, human-readable +[metafiles](/doc/user-guide/dvc-files-and-directories) that Git can handle. The +data itself is cached outside of Git, and can be synchronized +automatically with [dedicated storage](#versioned-storage). Other features of +DVC build upon this foundation to address several other needs of data +scientists. + +> 💡 Please see [Get Started](/doc/start) for a primer on DVC's features. ## Advantages From 62a34db12b1d33d4f554df9cf8b31ca741743f9f Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Mon, 12 Oct 2020 19:29:34 -0500 Subject: [PATCH 24/95] cases: improve vrsng intro and dedupe bullet lists --- .../versioning-data-and-model-files/index.md | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 9c40a499fd..c2d2f62529 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -4,35 +4,33 @@ staple in software engineering because it allows effective collaboration on source code. This means having a change history to traverse (commits), clean parallel work (branching and merging), peer-reviews (pull requests), release -management, etc. +management, etc. Imagine enjoying similar capabilities in data science! -Imagine leveraging similar features in data science! Track different versions of -datasets and machine learning models easily; Codify data artifacts and data -processes so they can be developed using proven best practices; Make your data -pipelines fully reproducible by yourself and others. +- Organize and share different versions of datasets and machine learning models + easily. +- Codify data artifacts and processes to manage them with existing tools and + best practices. +- Make data pipelines fully reproducible by yourself and others. ![](/img/404) _Data versioning in a nutshell_ Unfortunately, SCM tools like [Git](https://git-scm.com/) are designed to handle -small text files, so data scientists can only use them to control part of their -assets. Storage itself is also severely limited by code hosting services +small text files, so data scientists can only control part of their assets that +way. Storage itself is also severely limited by code hosting services [like GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota), -so transferring and managing a separate data storage is a constant issue. +so transferring and managing data storage separately is a constant hurdle. DVC enables [tracking](#how-it-looks) large datasets and other data -artifacts by replacing them with small, human-readable -[metafiles](/doc/user-guide/dvc-files-and-directories) that Git can handle. The -data itself is cached outside of Git, and can be synchronized -automatically with [dedicated storage](#versioned-storage). Other features of -DVC build upon this foundation to address several other needs of data -scientists. +artifacts in Git by replacing them with small, human-readable +[metafiles](/doc/user-guide/dvc-files-and-directories). The data itself is +cached outside of Git (locally or externally), and can be +synchronized automatically with [dedicated storage](#versioned-storage). More +advanced features of DVC build upon this foundation. > 💡 Please see [Get Started](/doc/start) for a primer on DVC's features. ## Advantages -- Reproducibility: match code commits with the corresponding data, machine - learning models, etc. so you can always recover previous processes. - Simple CLI: track data and ML models as they evolve without ad-hoc conventions, with simple commands like `dvc add` or `dvc repro` (similar to `git`). From 81d848bf5541355718d4e10cbfec8bda9db7e7ff Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Mon, 12 Oct 2020 19:31:42 -0500 Subject: [PATCH 25/95] cases: rename Advantages sectino of vrsng per https://github.com/iterative/dvc.org/pull/1747#pullrequestreview-501672524 --- content/docs/use-cases/versioning-data-and-model-files/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index c2d2f62529..dfb26fc9ca 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -29,7 +29,7 @@ advanced features of DVC build upon this foundation. > 💡 Please see [Get Started](/doc/start) for a primer on DVC's features. -## Advantages +## Advantages of versioning data with DVC - Simple CLI: track data and ML models as they evolve without ad-hoc conventions, with simple commands like `dvc add` or `dvc repro` (similar to From 1898ccfa36f066bb99c6e424d9ed84e7b9d9a3b9 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Tue, 13 Oct 2020 00:19:57 -0500 Subject: [PATCH 26/95] cases: expand on How it looks (vrsng) with focus on workspace per https://github.com/iterative/dvc.org/pull/1747#pullrequestreview-501673784 --- content/docs/start/data-versioning.md | 2 +- .../versioning-data-and-model-files/index.md | 99 ++++++++++++++++--- 2 files changed, 87 insertions(+), 14 deletions(-) diff --git a/content/docs/start/data-versioning.md b/content/docs/start/data-versioning.md index 5af27256a5..88fe8ba9a0 100644 --- a/content/docs/start/data-versioning.md +++ b/content/docs/start/data-versioning.md @@ -77,7 +77,7 @@ outs: > \* See > [Large Dataset Optimization](/doc/user-guide/large-dataset-optimization) and -> `dvc config cache` for more information on file linking. +> `dvc config cache` for more info on file linking. diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index dfb26fc9ca..12303c22e8 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -46,27 +46,100 @@ advanced features of DVC build upon this foundation. ## How it looks -Working on data processing code, it's easy to overlook that the initial data -also changes along the way. If something goes wrong (or for any other reason), -it's easy to revisit previous versions of the code with Git. But the results may -still be different if using the latest data. +It's easy to revisit previous versions of the code with Git, but the data also +changes along the way. With DVC, we can achieve true +[reproducibility](/doc/start/data-pipelines) by matching code commits with +snapshots of the data used at the time. DVC [commands](/doc/command-reference) +and metafiles aim to make this intuitive. -To "eliminate this variable" and achieve full -[reproducibility](/doc/start/data-pipelines), we can use `dvc add` to capture -data snapshots that match code checkpoints: +### Basics of tracking and caching data + +The following project directory contains a couple of large data files in +subdirectories of `data/`, along with some source code to process it: + +```dvc +. +├── data +│ ├── labels.csv # Many MB of labeled data here +│ └── transactions.csv # Several GB of raw historic data +├── training.py +``` + +The `dvc add` command captures the essence of existing files or directories in +the workspace as `.dvc` files, tiny placeholders for the data that +can be put in Git. Similarly, `dvc.lock` files can also refer to any data +output by running the project's code (see `dvc repro` and +`dvc run`). All tracked data contents are saved to the DVC cache, +and linked\* back to their original location: + +> \* See +> [Large Dataset Optimization](/doc/user-guide/large-dataset-optimization) and +> `dvc config cache` for more info on file linking. + +```git + . ++├── .dvc # Hidden DVC internals ++│ ├── cache ++│ │ ├── b6... # data/ contents moved here ++│ │ └── ed... # model.pkl moved here ++│ ... + ├── data # Now a link to the cache + │ ├── labels.csv + │ └── transactions.csv + ... ++├── data.dvc # Points to data/ ++├── dvc.lock # Points to model.h5 ++├── dvc.yaml # Wrapper for running training.py ++├── model.h5 # Final result (also a link to the cache) + ├── training.py +``` + +> See also `dvc.yaml`. + +The `data.dvc` and `dvc.lock` metafiles connect workspace and cache. Let's see +their contents: + +```yaml +outs: + - md5: b6e29fb8740486c7e64a240e45505e41.dir + path: data +``` + +```yaml +stages: + train_model: + cmd: python training.py data/ model.h5 + deps: + - path: data + md5: b6e29fb8740486c7e64a240e45505e41.dir + outs: + - path: model.h5 + md5: ede2872bedbfe10342bb1c416e2f049f +``` + +These metafiles, along with your code, can safely be put into a Git repo. The +tracked data in the workspace and the cache are separated by DVC (via +`.gitignore`). + +### Version control + +DVC doesn't replace Git. Having codified datasets, data pipelines, and their +outputs, use regular `git` commands to create versions (commits, tags, branches, +etc.): ```dvc -$ git add cleanup.c -$ dvc add data/raw +$ git add cleanup.sh +$ dvc add data/ ... -$ git add data/raw.dvc data/.gitignore +$ git add data.dvc data/.gitignore $ git commit -m 'Data cleanup v1.0' ``` -Now that Git is tracking the code (including a `.dvc` file created by DVC), and -DVC is tracking the data, we can repeat the procedure to generate more commits. -Use `dvc checkout` to go back: +Now that Git is tracking the code (including +[DVC metafiles](/doc/user-guide/dvc-files-and-directories)), and DVC is tracking +the data, we can repeat the procedure to generate more commits. Use +`dvc checkout` to go back: ```dvc $ git checkout v1.0 From f447b14380ad99aaca7331e1cfa2c3692f5a7add Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 14 Oct 2020 15:33:43 -0500 Subject: [PATCH 27/95] guide: improve DVC is not Git! section per https://github.com/iterative/dvc.org/pull/1747#pullrequestreview-507953600 --- content/docs/user-guide/what-is-dvc.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/content/docs/user-guide/what-is-dvc.md b/content/docs/user-guide/what-is-dvc.md index e63ea6b304..adcb39d742 100644 --- a/content/docs/user-guide/what-is-dvc.md +++ b/content/docs/user-guide/what-is-dvc.md @@ -51,8 +51,14 @@ can version experiments, manage large datasets, and make projects reproducible. ## DVC is not Git! DVC metafiles such as `dvc.yaml` and `.dvc` files serve as placeholders to track -large data files and directories for versioning (among other purposes). They -provide the ability to store multiple data versions out-of-the-box, but this -does not replace any SCM features. Full-fledged +large data files and directories for versioning (among other +[purposes](/doc/user-guide/dvc-files-and-directories)). These metafiles change +along with your data, and you can use Git to place them under [version control](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control) -is left for Git to handle, however. +as a proxy to the actual data versions, which are stored in the DVC +cache (outside of Git). This does not replace features of Git. + +DVC does, however, provide several commands that are somewhat analogous to their +Git counterparts, and that interact with the underlying Git repo (if one is +being used, which is not required). For example: `dvc init`, `dvc add`, +`dvc checkout`, `dvc push`, among others. From 384218da4bf32348328c13965fa768a8e3675079 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 14 Oct 2020 15:40:23 -0500 Subject: [PATCH 28/95] cases: rename Versioning use case (why "Files"?) per https://github.com/iterative/dvc.org/pull/1747#pullrequestreview-507961537 --- content/docs/sidebar.json | 5 ++--- .../index.md | 2 +- .../tutorial.md | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) rename content/docs/use-cases/{versioning-data-and-model-files => versioning-data-and-models}/index.md (99%) rename content/docs/use-cases/{versioning-data-and-model-files => versioning-data-and-models}/tutorial.md (99%) diff --git a/content/docs/sidebar.json b/content/docs/sidebar.json index 432174518c..1839ffd680 100644 --- a/content/docs/sidebar.json +++ b/content/docs/sidebar.json @@ -65,9 +65,8 @@ "source": "use-cases/index.md", "children": [ { - "label": "Versioning Data & Model Files", - "slug": "versioning-data-and-model-files", - "source": "versioning-data-and-model-files/index.md", + "slug": "versioning-data-and-models", + "source": "versioning-data-and-models/index.md", "children": ["tutorial"] }, { diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-models/index.md similarity index 99% rename from content/docs/use-cases/versioning-data-and-model-files/index.md rename to content/docs/use-cases/versioning-data-and-models/index.md index 12303c22e8..e4229649c9 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-models/index.md @@ -1,4 +1,4 @@ -# Versioning Data and Model Files +# Versioning Data and Models [Version control](https://en.wikipedia.org/wiki/Version_control) has become a staple in software engineering because it allows effective collaboration on diff --git a/content/docs/use-cases/versioning-data-and-model-files/tutorial.md b/content/docs/use-cases/versioning-data-and-models/tutorial.md similarity index 99% rename from content/docs/use-cases/versioning-data-and-model-files/tutorial.md rename to content/docs/use-cases/versioning-data-and-models/tutorial.md index 44588ad577..43e9f4f1c2 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/tutorial.md +++ b/content/docs/use-cases/versioning-data-and-models/tutorial.md @@ -1,4 +1,4 @@ -# Tutorial: Data & Model Versioning +# Tutorial: Data and Model Versioning The goal of this example is to give you some hands-on experience with a basic machine learning version control scenario: managing multiple datasets and ML From 7facdf784678002a504c7722c603d05477733862 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 14 Oct 2020 20:00:39 -0500 Subject: [PATCH 29/95] cases: rewrite (again) the intro to vrsng per https://github.com/iterative/dvc.org/pull/1747#issuecomment-708721705 --- content/docs/start/data-versioning.md | 2 +- content/docs/use-cases/data-registries.md | 9 ++- .../versioning-data-and-models/index.md | 60 ++++++++++--------- 3 files changed, 37 insertions(+), 34 deletions(-) diff --git a/content/docs/start/data-versioning.md b/content/docs/start/data-versioning.md index 88fe8ba9a0..d24ac51d61 100644 --- a/content/docs/start/data-versioning.md +++ b/content/docs/start/data-versioning.md @@ -77,7 +77,7 @@ outs: > \* See > [Large Dataset Optimization](/doc/user-guide/large-dataset-optimization) and -> `dvc config cache` for more info on file linking. +> `dvc config cache` for more info. on file linking. diff --git a/content/docs/use-cases/data-registries.md b/content/docs/use-cases/data-registries.md index 29e08121b5..a5e6634c54 100644 --- a/content/docs/use-cases/data-registries.md +++ b/content/docs/use-cases/data-registries.md @@ -16,10 +16,9 @@ repository would have all the metadata and history of changes in the different datasets. We could see who updated what and when, and use pull requests to update data, the same way we do with code. -That's a **data registry**: a data management _middleware_ between ML projects -and large file storage. Think Git for cloud storage. - -## Advantages +That's what we call a **data registry**: a data management _middleware_ between +ML projects and large file storage. Think Git for cloud storage. Here are some +of it's advantages: - Reusability: reproduce and organize _feature stores_ with a simple CLI (`dvc get` and `dvc import` commands, similar to software package management @@ -32,7 +31,7 @@ and large file storage. Think Git for cloud storage. a single location (distributed copies are possible too). This simplifies data management and optimizes space requirements. - Treat data as code: leverage Git workflow such as branching, pull requests, - and even CI/CD for your data lifecycle. + release management, and even CI/CD for your data lifecycle. - Security: registries can be setup with read-only remote storage (e.g. an HTTP server). And [DVC metafiles](/doc/user-guide/dvc-files-and-directories) enable auditing data changes. diff --git a/content/docs/use-cases/versioning-data-and-models/index.md b/content/docs/use-cases/versioning-data-and-models/index.md index e4229649c9..4b6ccd6a13 100644 --- a/content/docs/use-cases/versioning-data-and-models/index.md +++ b/content/docs/use-cases/versioning-data-and-models/index.md @@ -1,18 +1,34 @@ # Versioning Data and Models -[Version control](https://en.wikipedia.org/wiki/Version_control) has become a -staple in software engineering because it allows effective collaboration on -source code. This means having a change history to traverse (commits), clean -parallel work (branching and merging), peer-reviews (pull requests), release -management, etc. Imagine enjoying similar capabilities in data science! - -- Organize and share different versions of datasets and machine learning models - easily. -- Codify data artifacts and processes to manage them with existing tools and - best practices. -- Make data pipelines fully reproducible by yourself and others. +Taking the leap from conceptual to applied data science invariably requires +answering the questions around data management. How to track the evolution of +datasets and machine learning models? Where to store data artifacts for easy +access and sharing? + +It turns out that we can find some answers in software engineering, notably +[version control](https://en.wikipedia.org/wiki/Version_control). This means +having a change history to traverse (commits), allowing for parallel work +(branching), peer-reviews (pull requests), etc. What if we could do the same +with data? + +![](/img/404) _Data as code_ + +Some advantages: + +- Logistics: Manage and share different versions of datasets and ML models + easily, maintaining complete visibility . +- Adopt a standard: Codifying data and its processes enable Git workflow such as + branching, pull requests, release management, and even CI/CD for your data + lifecycle. +- Reproducibility: Guarantee sure that yourself and others can rewind data + pipelines exactly as they were created originally. +- Simple CLI: track data and models as they evolve with simple commands like + `dvc add` or `dvc repro` (similar to `git`). +- Security: [DVC metafiles](/doc/user-guide/dvc-files-and-directories) enable + auditing data changes. And data access controls can be setup via storage + integrations. -![](/img/404) _Data versioning in a nutshell_ +## Why DVC Unfortunately, SCM tools like [Git](https://git-scm.com/) are designed to handle small text files, so data scientists can only control part of their assets that @@ -20,6 +36,9 @@ way. Storage itself is also severely limited by code hosting services [like GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota), so transferring and managing data storage separately is a constant hurdle. +Rather than reinventing the wheel, DVC proposes to treat **data as code** in +order to manage it with existing engineering tools and best practices. + DVC enables [tracking](#how-it-looks) large datasets and other data artifacts in Git by replacing them with small, human-readable [metafiles](/doc/user-guide/dvc-files-and-directories). The data itself is @@ -29,21 +48,6 @@ advanced features of DVC build upon this foundation. > 💡 Please see [Get Started](/doc/start) for a primer on DVC's features. -## Advantages of versioning data with DVC - -- Simple CLI: track data and ML models as they evolve without ad-hoc - conventions, with simple commands like `dvc add` or `dvc repro` (similar to - `git`). -- Treat data as code: leverage Git workflow such as branching, pull requests, - and even CI/CD for your data lifecycle. -- Debugging: trace problems using the exact data that was used during - development. -- Releasing: Tag stable data and models like code, using semantic versioning or - other standards. -- Security: [DVC metafiles](/doc/user-guide/dvc-files-and-directories) enable - auditing data changes. And data access controls can be setup via cloud storage - platforms. - ## How it looks It's easy to revisit previous versions of the code with Git, but the data also @@ -74,7 +78,7 @@ and linked\* back to their original location: > \* See > [Large Dataset Optimization](/doc/user-guide/large-dataset-optimization) and -> `dvc config cache` for more info on file linking. +> `dvc config cache` for more info. on file linking. ```git . From c0b6b58bc3f477e3c02499835b0ba06fe8368acf Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Sat, 17 Oct 2020 22:07:57 -0500 Subject: [PATCH 30/95] cases: improve versioning intro (more coherent) --- content/docs/use-cases/data-registries.md | 20 +++++------ .../versioning-data-and-models/index.md | 35 ++++++++++--------- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/content/docs/use-cases/data-registries.md b/content/docs/use-cases/data-registries.md index a5e6634c54..3337f1905f 100644 --- a/content/docs/use-cases/data-registries.md +++ b/content/docs/use-cases/data-registries.md @@ -8,24 +8,24 @@ commands like `dvc import` and `dvc get`. This means that your projects can depend on data from other DVC repositories, **similar to a package management systems for data science**. -![](/img/data-registry.png) _Data and models as code_ +![](/img/data-registry.png) _Data management middleware_ This means we can build a DVC project dedicated to tracking and -versioning _datasets_ (or any large files, directories, ML models, etc.). The -repository would have all the metadata and history of changes in the different -datasets. We could see who updated what and when, and use pull requests to -update data, the same way we do with code. +versioning _datasets_ (or any large files, directories, machine learning models, +etc.). The repository would have all the metadata and history of changes in the +different datasets. We could see who updated what and when, and use pull +requests to update data, the same way we do with code. -That's what we call a **data registry**: a data management _middleware_ between -ML projects and large file storage. Think Git for cloud storage. Here are some -of it's advantages: +That's what we call a **data registry**: data management _middleware_ between +data science projects and large file storage. Think Git for cloud storage. Here +are some of it's advantages: - Reusability: reproduce and organize _feature stores_ with a simple CLI (`dvc get` and `dvc import` commands, similar to software package management systems like `pip`). - Persistence: [remote storage](/doc/command-reference/remote) (e.g. an S3 bucket) controlled by the DVC registry improves data security. There are less - chances someone can delete or rewrite a model, for example. + chances someone can delete or rewrite an ML model, for example. - Storage optimization: centralize data [shared](/doc/use-cases/sharing-data-and-model-files) by multiple projects in a single location (distributed copies are possible too). This simplifies data @@ -101,7 +101,7 @@ images/dvc-logo-outlines.png ... ``` -Both Git-tracked files and DVC-tracked data and models are listed. +Both Git-tracked files and DVC-tracked data and ML models are listed. ### Simple downloads diff --git a/content/docs/use-cases/versioning-data-and-models/index.md b/content/docs/use-cases/versioning-data-and-models/index.md index 4b6ccd6a13..3f836e23f9 100644 --- a/content/docs/use-cases/versioning-data-and-models/index.md +++ b/content/docs/use-cases/versioning-data-and-models/index.md @@ -1,29 +1,30 @@ # Versioning Data and Models -Taking the leap from conceptual to applied data science invariably requires -answering the questions around data management. How to track the evolution of -datasets and machine learning models? Where to store data artifacts for easy -access and sharing? +Taking data science from conceptual to applied requires answering data +management questions around dataset and machine learning model versioning. How +to track the evolution of data and ML models? How to organize and store the +revisions of these data artifacts for easy access and sharing? -It turns out that we can find some answers in software engineering, notably +It turns out that we can find some answers in software engineering, like [version control](https://en.wikipedia.org/wiki/Version_control). This means -having a change history to traverse (commits), allowing for parallel work -(branching), peer-reviews (pull requests), etc. What if we could do the same -with data? +adopting a standard file storage structure (cache) and keeping a change history +(commits), as well as further benefits like enabling parallel teamwork +(branching), peer-reviews (pull requests), etc. Imagine if we could do the same +with data! ![](/img/404) _Data as code_ Some advantages: -- Logistics: Manage and share different versions of datasets and ML models - easily, maintaining complete visibility . -- Adopt a standard: Codifying data and its processes enable Git workflow such as - branching, pull requests, release management, and even CI/CD for your data - lifecycle. -- Reproducibility: Guarantee sure that yourself and others can rewind data - pipelines exactly as they were created originally. -- Simple CLI: track data and models as they evolve with simple commands like - `dvc add` or `dvc repro` (similar to `git`). +- Manage and share multiple versions of datasets and ML models easily, + maintaining visibility over them. +- Codifying data artifacts (and processes) enables proven Git + workflows such as branching, pull requests, release management, and even CI/CD + for your data lifecycle. +- Reproducibility: Guarantee that anyone can rewind data pipelines exactly as + they were created originally. +- Simple CLI: work with simple terminal commands like `dvc add` or + `dvc checkout` (similar to familiar `git` commands). - Security: [DVC metafiles](/doc/user-guide/dvc-files-and-directories) enable auditing data changes. And data access controls can be setup via storage integrations. From 17f80b8ba95d27d4c1548517db00165a48475d36 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Mon, 19 Oct 2020 20:27:41 -0500 Subject: [PATCH 31/95] cmd: quick term update --- content/docs/command-reference/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/docs/command-reference/index.md b/content/docs/command-reference/index.md index 6f70ce2816..70f3187396 100644 --- a/content/docs/command-reference/index.md +++ b/content/docs/command-reference/index.md @@ -14,10 +14,10 @@ does not change directories in your terminal). `dvc init`. - Copy data files or dataset directories for modeling into the repository, and track them with DVC using the `dvc add` command. -- Process raw data with your own source code, using `dvc.yaml` and/or the +- Process the data with your own source code, using `dvc.yaml` and/or the `dvc run` command, specifying further outputs that should also be tracked by DVC after the code is executed. -- Sharing a DVC repository with the codified ML +- Sharing a DVC repository with the codified data [pipeline](/doc/command-reference/dag) will not include the project's cache. Use [remote storage](/doc/command-reference/remote) and `dvc push` to share this cache (data tracked by DVC). From b63bc7f04a16b67be65ca39a52f3a21822dc80cb Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 21 Oct 2020 14:22:01 -0500 Subject: [PATCH 32/95] cases: update links to Versioning use case --- content/docs/api-reference/index.md | 4 ++-- content/docs/command-reference/add.md | 6 +++--- content/docs/command-reference/import.md | 2 +- content/docs/use-cases/versioning-data-and-models/index.md | 2 +- content/docs/user-guide/basic-concepts/data-artifact.md | 2 +- content/docs/user-guide/related-technologies.md | 3 +-- content/docs/user-guide/what-is-dvc.md | 2 +- 7 files changed, 10 insertions(+), 11 deletions(-) diff --git a/content/docs/api-reference/index.md b/content/docs/api-reference/index.md index ae302503b8..627ac4a2d4 100644 --- a/content/docs/api-reference/index.md +++ b/content/docs/api-reference/index.md @@ -9,8 +9,8 @@ import dvc.api ``` The purpose of this API is to provide programmatic access to the data or models -[stored and versioned](/doc/use-cases/versioning-data-and-model-files) in -DVC repositories from Python code. +[stored and versioned](/doc/use-cases/versioning-data-and-models) in DVC +repositories from Python code. Please choose a function from the navigation sidebar to the left, or click the `Next` button below to jump into the first one ↘ diff --git a/content/docs/command-reference/add.md b/content/docs/command-reference/add.md index 52f7c3ad6f..89488a0cc5 100644 --- a/content/docs/command-reference/add.md +++ b/content/docs/command-reference/add.md @@ -22,8 +22,8 @@ track the added data. This command can be used to track large files, models, dataset directories, etc. that are too big for Git to handle directly. This enables -[versioning](/doc/use-cases/versioning-data-and-model-files) them indirectly -with Git. +[versioning](/doc/use-cases/versioning-data-and-models) them indirectly with +Git. The `targets` are the files or directories to add, which are turned into data artifacts of the project. These are stored in the @@ -214,7 +214,7 @@ $ dvc run -n train \ ``` > To try this example, see the -> [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial). +> [versioning tutorial](/doc/use-cases/versioning-data-and-models/tutorial). If instead we use the `--recursive` (`-R`) option, the output looks like this: diff --git a/content/docs/command-reference/import.md b/content/docs/command-reference/import.md index 181479ec60..b883d69677 100644 --- a/content/docs/command-reference/import.md +++ b/content/docs/command-reference/import.md @@ -206,7 +206,7 @@ $ dvc get https://github.com/iterative/dataset-registry \ ``` > Used in our -> [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) +> [versioning tutorial](/doc/use-cases/versioning-data-and-models/tutorial) Or diff --git a/content/docs/use-cases/versioning-data-and-models/index.md b/content/docs/use-cases/versioning-data-and-models/index.md index 3f836e23f9..0d49ff09d4 100644 --- a/content/docs/use-cases/versioning-data-and-models/index.md +++ b/content/docs/use-cases/versioning-data-and-models/index.md @@ -155,7 +155,7 @@ M data\raw ![](/img/versioning.png) _Full project restoration_ > For more hands-on experience, we recommend following the -> [versioning tutorial](/doc/use-cases/versioning-data-and-model-files). +> [versioning tutorial](/doc/use-cases/versioning-data-and-models/tutorial). ## Versioned storage diff --git a/content/docs/user-guide/basic-concepts/data-artifact.md b/content/docs/user-guide/basic-concepts/data-artifact.md index 2926790f7a..4fed6f811a 100644 --- a/content/docs/user-guide/basic-concepts/data-artifact.md +++ b/content/docs/user-guide/basic-concepts/data-artifact.md @@ -5,4 +5,4 @@ match: ['data artifact', 'data artifacts', 'artifact', 'artifacts'] Any data file or directory, as well as intermediate or final result that is tracked by DVC, for example by using `dvc add` or `dvc run`. See -[Versioning Data and Models](/doc/use-cases/versioning-data-and-model-files). +[Versioning Data and Models](/doc/use-cases/versioning-data-and-models). diff --git a/content/docs/user-guide/related-technologies.md b/content/docs/user-guide/related-technologies.md index 3a7d72c704..de08407232 100644 --- a/content/docs/user-guide/related-technologies.md +++ b/content/docs/user-guide/related-technologies.md @@ -12,8 +12,7 @@ bringing best practices from software engineering into the data science field versions of data, data pipelines, and experiments. - DVC is not fundamentally bound to Git, and can work without it (except - [versioning-related](/doc/use-cases/versioning-data-and-model-files) - features). + [versioning-related](/doc/use-cases/versioning-data-and-models) features). ## Git-LFS (Large File Storage) diff --git a/content/docs/user-guide/what-is-dvc.md b/content/docs/user-guide/what-is-dvc.md index adcb39d742..8f8175da6f 100644 --- a/content/docs/user-guide/what-is-dvc.md +++ b/content/docs/user-guide/what-is-dvc.md @@ -20,7 +20,7 @@ can version experiments, manage large datasets, and make projects reproducible. - DVC works **on top of Git repositories** and has a similar command line interface and flow as Git. DVC can also work stand-alone, but without - [versioning](/doc/use-cases/versioning-data-and-model-files) capabilities. + [versioning](/doc/use-cases/versioning-data-and-models) capabilities. - **Data versioning** is enabled by replacing large files, dataset directories, machine learning models, etc. with small From 0ec735015d1b5951af8866d3a2cadd195e7a3f3b Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 21 Oct 2020 15:44:18 -0500 Subject: [PATCH 33/95] cases: refine Versioning intro, add proposed figure --- .../versioning-data-and-models/index.md | 30 +++++++++--------- static/img/data-as-code.png | Bin 0 -> 89443 bytes 2 files changed, 15 insertions(+), 15 deletions(-) create mode 100644 static/img/data-as-code.png diff --git a/content/docs/use-cases/versioning-data-and-models/index.md b/content/docs/use-cases/versioning-data-and-models/index.md index 0d49ff09d4..1fc663d05e 100644 --- a/content/docs/use-cases/versioning-data-and-models/index.md +++ b/content/docs/use-cases/versioning-data-and-models/index.md @@ -7,17 +7,17 @@ revisions of these data artifacts for easy access and sharing? It turns out that we can find some answers in software engineering, like [version control](https://en.wikipedia.org/wiki/Version_control). This means -adopting a standard file storage structure (cache) and keeping a change history -(commits), as well as further benefits like enabling parallel teamwork -(branching), peer-reviews (pull requests), etc. Imagine if we could do the same -with data! +keeping a change history (commits), automatic file deduplication, enabling +parallel teamwork (branching), peer-reviews (pull requests), etc. Imagine if we +could do the same with data! -![](/img/404) _Data as code_ +![](/img/data-as-code.png) _Data as code_ Some advantages: -- Manage and share multiple versions of datasets and ML models easily, - maintaining visibility over them. +- Manage and share multiple versions of datasets and ML models easily, while + maintaining visibility over them and + [preventing duplication](/doc/user-guide/large-dataset-optimization). - Codifying data artifacts (and processes) enables proven Git workflows such as branching, pull requests, release management, and even CI/CD for your data lifecycle. @@ -78,24 +78,24 @@ can be put in Git. Similarly, `dvc.lock` files can also refer to any data and linked\* back to their original location: > \* See -> [Large Dataset Optimization](/doc/user-guide/large-dataset-optimization) and -> `dvc config cache` for more info. on file linking. +> [File link types](/doc/user-guide/large-dataset-optimization#file-link-types-for-the-dvc-cache) +> and `dvc config cache` for more info. on file linking. ```git . +├── .dvc # Hidden DVC internals +│ ├── cache -+│ │ ├── b6... # data/ contents moved here -+│ │ └── ed... # model.pkl moved here ++│ │ ├── b6e29fb... # data/ contents moved here ++│ │ └── ede2872... # model.pkl moved here +│ ... ├── data # Now a link to the cache │ ├── labels.csv │ └── transactions.csv ... -+├── data.dvc # Points to data/ -+├── dvc.lock # Points to model.h5 -+├── dvc.yaml # Wrapper for running training.py -+├── model.h5 # Final result (also a link to the cache) ++├── data.dvc # Points to data/ ++├── dvc.lock # Points to model.h5 ++├── dvc.yaml # Wrapper for running training.py ++├── model.h5 # Final result (also a link to the cache) ├── training.py ``` diff --git a/static/img/data-as-code.png b/static/img/data-as-code.png new file mode 100644 index 0000000000000000000000000000000000000000..3c916f34479dc10e2bce470af8017cd71bc3a6f2 GIT binary patch literal 89443 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 A{{R30 literal 0 HcmV?d00001 From 68619f17967c4898b6efc51be8b5b29ea5ff1fe0 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 21 Oct 2020 17:13:55 -0500 Subject: [PATCH 34/95] cases: summarize, simplify, focus on the essence, et al. and propose new "Versioned storage" use case --- content/docs/use-cases/data-registries.md | 6 +- content/docs/use-cases/versioned-storage.md | 13 +++ .../versioning-data-and-models/index.md | 98 ++++++++----------- .../basic-concepts/data-artifact.md | 5 +- 4 files changed, 60 insertions(+), 62 deletions(-) create mode 100644 content/docs/use-cases/versioned-storage.md diff --git a/content/docs/use-cases/data-registries.md b/content/docs/use-cases/data-registries.md index 9a9e98c6ae..d09ba6561e 100644 --- a/content/docs/use-cases/data-registries.md +++ b/content/docs/use-cases/data-registries.md @@ -30,9 +30,9 @@ are some of it's advantages: [shared](/doc/use-cases/sharing-data-and-model-files) by multiple projects in a single location (distributed copies are possible too). This simplifies data management and optimizes space requirements. -- Data as code: leverage Git workflow such as commits, branching, pull requests, - reviews, and even CI/CD for your data and models lifecycle. Think "Git for - cloud storage", but without ad-hoc conventions. +- Data as code: leverage Git workflows such as commits, branching, pull + requests, reviews, and even CI/CD for your data and models lifecycle. Think + "Git for cloud storage", but without ad-hoc conventions. - Security: registries can be setup with read-only remote storage (e.g. an HTTP server). And [DVC metafiles](/doc/user-guide/dvc-files-and-directories) enable auditing data changes. diff --git a/content/docs/use-cases/versioned-storage.md b/content/docs/use-cases/versioned-storage.md new file mode 100644 index 0000000000..3ced05eacf --- /dev/null +++ b/content/docs/use-cases/versioned-storage.md @@ -0,0 +1,13 @@ +# Versioned storage + +What if we could **combine data and ML model versioning features with large file +storage** solutions like traditional hard drives, NAS, or cloud services such as +Amazon S3 and Google Drive? DVC brings together the best of both worlds by +implementing easy synchronization between the data cache and +on-premises or cloud storage for sharing. + +![](/img/model-versioning-diagram.png) _DVC's hybrid versioned storage_ + +> Note that [remote storage](/doc/command-reference/remote) is optional in DVC: +> no server setup or special services are needed, just the `dvc` command-line +> tool. diff --git a/content/docs/use-cases/versioning-data-and-models/index.md b/content/docs/use-cases/versioning-data-and-models/index.md index 1fc663d05e..c68d7352c1 100644 --- a/content/docs/use-cases/versioning-data-and-models/index.md +++ b/content/docs/use-cases/versioning-data-and-models/index.md @@ -11,18 +11,18 @@ keeping a change history (commits), automatic file deduplication, enabling parallel teamwork (branching), peer-reviews (pull requests), etc. Imagine if we could do the same with data! -![](/img/data-as-code.png) _Data as code_ +![](/img/data-as-code.png) _Matching data descriptions to a working environment_ -Some advantages: +Some advantages of versioning data and models: -- Manage and share multiple versions of datasets and ML models easily, while - maintaining visibility over them and +- Manage multiple versions of datasets and ML models easily, while [preventing duplication](/doc/user-guide/large-dataset-optimization). -- Codifying data artifacts (and processes) enables proven Git - workflows such as branching, pull requests, release management, and even CI/CD - for your data lifecycle. -- Reproducibility: Guarantee that anyone can rewind data pipelines exactly as - they were created originally. +- Data as code: leverage Git workflows such as commits, branching, pull + requests, reviews, and even CI/CD for your data and models lifecycle. Think + "Git for data" +- Reproducibility: Guarantee that anyone can rewind + [data pipelines](/doc/start/data-pipelines) exactly as they were created + originally. - Simple CLI: work with simple terminal commands like `dvc add` or `dvc checkout` (similar to familiar `git` commands). - Security: [DVC metafiles](/doc/user-guide/dvc-files-and-directories) enable @@ -33,34 +33,32 @@ Some advantages: Unfortunately, SCM tools like [Git](https://git-scm.com/) are designed to handle small text files, so data scientists can only control part of their assets that -way. Storage itself is also severely limited by code hosting services +way. Storage itself is also severely limited by code hosting platforms [like GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota), so transferring and managing data storage separately is a constant hurdle. Rather than reinventing the wheel, DVC proposes to treat **data as code** in -order to manage it with existing engineering tools and best practices. - -DVC enables [tracking](#how-it-looks) large datasets and other data -artifacts in Git by replacing them with small, human-readable -[metafiles](/doc/user-guide/dvc-files-and-directories). The data itself is -cached outside of Git (locally or externally), and can be -synchronized automatically with [dedicated storage](#versioned-storage). More -advanced features of DVC build upon this foundation. +order to manage it with existing engineering tools and best practices. Codifying +data science projects (building a declarative description of which data and +models should be in the environment) lets DVC match this description to the +workspace automatically, among other advanced uses. > 💡 Please see [Get Started](/doc/start) for a primer on DVC's features. ## How it looks -It's easy to revisit previous versions of the code with Git, but the data also -changes along the way. With DVC, we can achieve true -[reproducibility](/doc/start/data-pipelines) by matching code commits with -snapshots of the data used at the time. DVC [commands](/doc/command-reference) -and metafiles aim to make this intuitive. +Versioning large data files and directories with Git is made possible by +replacing them with small, human-readable +[metafiles](/doc/user-guide/dvc-files-and-directories). The data itself is +cached outside of Git (locally or externally), and can be +synchronized automatically with +[dedicated storage](/doc/use-cases/versioned-storage) — a good way to share data +for collaboration. -### Basics of tracking and caching data +![](/img/404) _Parts of a DVC project_ -The following project directory contains a couple of large data files in -subdirectories of `data/`, along with some source code to process it: +Let's imagine a project containing a couple of large data files (in the `data/` +directory), along with some source code to process it: ```dvc . @@ -70,12 +68,12 @@ subdirectories of `data/`, along with some source code to process it: ├── training.py ``` -The `dvc add` command captures the essence of existing files or directories in -the workspace as `.dvc` files, tiny placeholders for the data that -can be put in Git. Similarly, `dvc.lock` files can also refer to any data -output by running the project's code (see `dvc repro` and -`dvc run`). All tracked data contents are saved to the DVC cache, -and linked\* back to their original location: +Tiny `.dvc` files capture snapshots of existing files or directories in the +workspace (see `dvc add`), and can be put in Git as placeholders +for the data. Similarly, `dvc.yaml` files can also capture any +output data produced by running the code (see `dvc repro`). All +tracked data contents are saved to the DVC cache, and linked\* back +to their original location: > \* See > [File link types](/doc/user-guide/large-dataset-optimization#file-link-types-for-the-dvc-cache) @@ -86,7 +84,7 @@ and linked\* back to their original location: +├── .dvc # Hidden DVC internals +│ ├── cache +│ │ ├── b6e29fb... # data/ contents moved here -+│ │ └── ede2872... # model.pkl moved here ++│ │ └── ede2872... # model.h5 stored here +│ ... ├── data # Now a link to the cache │ ├── labels.csv @@ -99,8 +97,6 @@ and linked\* back to their original location: ├── training.py ``` -> See also `dvc.yaml`. - The `data.dvc` and `dvc.lock` metafiles connect workspace and cache. Let's see their contents: @@ -122,15 +118,14 @@ stages: md5: ede2872bedbfe10342bb1c416e2f049f ``` -These metafiles, along with your code, can safely be put into a Git repo. The -tracked data in the workspace and the cache are separated by DVC (via -`.gitignore`). +By matching versions of code with snapshots of the data at the time, we can +achieve true [reproducibility](/doc/start/data-pipelines). -### Version control +## Version control -DVC doesn't replace Git. Having codified datasets, data pipelines, and their -outputs, use regular `git` commands to create versions (commits, tags, branches, -etc.): +DVC doesn't replace Git. Having codified data artifacts and +[pipelines](/doc/start/data-pipelines), use regular `git` commands to create +versions (commits, tags, branches, etc.): ```dvc $ git add cleanup.sh @@ -141,6 +136,9 @@ $ git add data.dvc data/.gitignore $ git commit -m 'Data cleanup v1.0' ``` +> Note that DVC automatically prevents Git from tracking data in the +> workspace (via `.gitignore`). + Now that Git is tracking the code (including [DVC metafiles](/doc/user-guide/dvc-files-and-directories)), and DVC is tracking the data, we can repeat the procedure to generate more commits. Use @@ -154,19 +152,5 @@ M data\raw ![](/img/versioning.png) _Full project restoration_ -> For more hands-on experience, we recommend following the +> For more hands-on experience, please follow the > [versioning tutorial](/doc/use-cases/versioning-data-and-models/tutorial). - -## Versioned storage - -What if we could **combine data and ML model versioning features with large file -storage** solutions like traditional hard drives, NAS, or cloud services such as -Amazon S3 and Google Drive? DVC brings together the best of both worlds by -implementing easy synchronization between the data cache and -on-premises or cloud storage for sharing. - -![](/img/model-versioning-diagram.png) _DVC's hybrid versioned storage_ - -> Note that [remote storage](/doc/command-reference/remote) is optional in DVC: -> no server setup or special services are needed, just the `dvc` command-line -> tool. diff --git a/content/docs/user-guide/basic-concepts/data-artifact.md b/content/docs/user-guide/basic-concepts/data-artifact.md index 4fed6f811a..786f58554e 100644 --- a/content/docs/user-guide/basic-concepts/data-artifact.md +++ b/content/docs/user-guide/basic-concepts/data-artifact.md @@ -3,6 +3,7 @@ name: 'Data Artifact' match: ['data artifact', 'data artifacts', 'artifact', 'artifacts'] --- -Any data file or directory, as well as intermediate or final result that is -tracked by DVC, for example by using `dvc add` or `dvc run`. See +Any data file or directory, as well as intermediate or final results such as +data features or ML models. These may be tracked by DVC as _dependencies_ or +_outputs_. See also [Versioning Data and Models](/doc/use-cases/versioning-data-and-models). From 12bc7ed4adc6400c70bf5d183a8c7b5471cf3189 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 21 Oct 2020 17:26:06 -0500 Subject: [PATCH 35/95] cases: add redirect for new Versioning use case location --- redirects-list.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/redirects-list.json b/redirects-list.json index 3e90ee4e9e..6a2e95344b 100644 --- a/redirects-list.json +++ b/redirects-list.json @@ -24,10 +24,11 @@ "^/doc/get-started(/.*)?$ /doc/start", "^/doc/tutorial(/.*)?$ /doc/start", "^/doc/tutorials/get-started(/.*)?$ /doc/start", - "^/doc/tutorials/versioning(/.*)?$ /doc/use-cases/versioning-data-and-model-files/tutorial", + "^/doc/tutorials/versioning(/.*)?$ /doc/use-cases/versioning-data-and-models/tutorial", "^/doc/tutorials(/.*)? /doc/start", - "^/doc/use-cases/data-and-model-files-versioning/?$ /doc/use-cases/versioning-data-and-model-files", + "^/doc/use-cases/data-and-model-files-versioning/?$ /doc/use-cases/versioning-data-and-models", + "^/doc/use-cases/versioning-data-and-model-files(/.*)?$ /doc/use-cases/versioning-data-and-models$1", "^/doc/user-guide/dvc-file-format$ /doc/user-guide/dvc-files-and-directories", "^/doc/user-guide/updating-tracked-files$ /doc/user-guide/how-to/update-tracked-files", "^/doc/understanding-dvc(/.*)?$ /doc/user-guide/what-is-dvc", From 78426d16d4c6bda49f49a4fd4545480a5e74ef37 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 21 Oct 2020 22:13:18 -0500 Subject: [PATCH 36/95] cases: merge How it looks + Version control sections --- .../versioning-data-and-models/index.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-models/index.md b/content/docs/use-cases/versioning-data-and-models/index.md index c68d7352c1..e551de46d1 100644 --- a/content/docs/use-cases/versioning-data-and-models/index.md +++ b/content/docs/use-cases/versioning-data-and-models/index.md @@ -118,14 +118,9 @@ stages: md5: ede2872bedbfe10342bb1c416e2f049f ``` -By matching versions of code with snapshots of the data at the time, we can -achieve true [reproducibility](/doc/start/data-pipelines). - -## Version control - -DVC doesn't replace Git. Having codified data artifacts and -[pipelines](/doc/start/data-pipelines), use regular `git` commands to create -versions (commits, tags, branches, etc.): +**Remember: DVC doesn't replace Git.** Having codified data +artifacts and [pipelines](/doc/start/data-pipelines), regular `git` +commands are used to create versions (commits, tags, branches, etc.): ```dvc $ git add cleanup.sh @@ -139,10 +134,13 @@ $ git commit -m 'Data cleanup v1.0' > Note that DVC automatically prevents Git from tracking data in the > workspace (via `.gitignore`). +💡 By matching versions of code with snapshots of the data at the time, we can +achieve full [reproducibility](/doc/start/data-pipelines). + Now that Git is tracking the code (including [DVC metafiles](/doc/user-guide/dvc-files-and-directories)), and DVC is tracking -the data, we can repeat the procedure to generate more commits. Use -`dvc checkout` to go back: +the data, we can repeat the procedure to generate more commits. `dvc checkout` +can then be used to go back: ```dvc $ git checkout v1.0 From bc7ff0a3a567af49c612ac07736387361e9fdbe8 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 21 Oct 2020 22:33:04 -0500 Subject: [PATCH 37/95] cases: simplify versioning-data-and-models#how-it-looks --- .../versioning-data-and-models/index.md | 43 ++++++++----------- 1 file changed, 18 insertions(+), 25 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-models/index.md b/content/docs/use-cases/versioning-data-and-models/index.md index e551de46d1..abdf757a82 100644 --- a/content/docs/use-cases/versioning-data-and-models/index.md +++ b/content/docs/use-cases/versioning-data-and-models/index.md @@ -58,26 +58,8 @@ for collaboration. ![](/img/404) _Parts of a DVC project_ Let's imagine a project containing a couple of large data files (in the `data/` -directory), along with some source code to process it: - -```dvc -. -├── data -│ ├── labels.csv # Many MB of labeled data here -│ └── transactions.csv # Several GB of raw historic data -├── training.py -``` - -Tiny `.dvc` files capture snapshots of existing files or directories in the -workspace (see `dvc add`), and can be put in Git as placeholders -for the data. Similarly, `dvc.yaml` files can also capture any -output data produced by running the code (see `dvc repro`). All -tracked data contents are saved to the DVC cache, and linked\* back -to their original location: - -> \* See -> [File link types](/doc/user-guide/large-dataset-optimization#file-link-types-for-the-dvc-cache) -> and `dvc config cache` for more info. on file linking. +directory), along with some source code to process it (`training.py`). Let's +codify it with DVC: ```git . @@ -97,6 +79,17 @@ to their original location: ├── training.py ``` +Tiny `.dvc` files capture snapshots of existing files or directories in the +workspace (see `dvc add`), and can be put in Git as placeholders +for the data. Similarly, `dvc.yaml` files can also capture any +output data produced by running the code (see `dvc repro`). All +tracked data contents are saved to the DVC cache, and linked\* back +to their original location: + +> \* See +> [File link types](/doc/user-guide/large-dataset-optimization#file-link-types-for-the-dvc-cache) +> and `dvc config cache` for more info. on file linking. + The `data.dvc` and `dvc.lock` metafiles connect workspace and cache. Let's see their contents: @@ -122,6 +115,9 @@ stages: artifacts and [pipelines](/doc/start/data-pipelines), regular `git` commands are used to create versions (commits, tags, branches, etc.): +> Note that DVC automatically prevents Git from tracking data in the +> workspace (via `.gitignore`). + ```dvc $ git add cleanup.sh $ dvc add data/ @@ -131,11 +127,8 @@ $ git add data.dvc data/.gitignore $ git commit -m 'Data cleanup v1.0' ``` -> Note that DVC automatically prevents Git from tracking data in the -> workspace (via `.gitignore`). - -💡 By matching versions of code with snapshots of the data at the time, we can -achieve full [reproducibility](/doc/start/data-pipelines). +> By matching versions of code with snapshots of the data at the time, we can +> achieve full [reproducibility](/doc/start/data-pipelines). Now that Git is tracking the code (including [DVC metafiles](/doc/user-guide/dvc-files-and-directories)), and DVC is tracking From 579cc5b68464bbc864ad71fc2ceb3b9da7b83607 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Fri, 23 Oct 2020 16:50:43 -0500 Subject: [PATCH 38/95] Revert "redirect for new Versioning use case URL" 12bc7ed and put back the files and nav --- content/docs/sidebar.json | 5 +++-- .../index.md | 0 .../tutorial.md | 0 redirects-list.json | 5 ++--- static/img/data-as-code.png | Bin 89443 -> 0 bytes 5 files changed, 5 insertions(+), 5 deletions(-) rename content/docs/use-cases/{versioning-data-and-models => versioning-data-and-model-files}/index.md (100%) rename content/docs/use-cases/{versioning-data-and-models => versioning-data-and-model-files}/tutorial.md (100%) delete mode 100644 static/img/data-as-code.png diff --git a/content/docs/sidebar.json b/content/docs/sidebar.json index c62c25c1ec..87c4b4b8ed 100644 --- a/content/docs/sidebar.json +++ b/content/docs/sidebar.json @@ -65,8 +65,9 @@ "source": "use-cases/index.md", "children": [ { - "slug": "versioning-data-and-models", - "source": "versioning-data-and-models/index.md", + "label": "Versioning Data and Models", + "slug": "versioning-data-and-model-files", + "source": "versioning-data-and-model-files/index.md", "children": ["tutorial"] }, { diff --git a/content/docs/use-cases/versioning-data-and-models/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md similarity index 100% rename from content/docs/use-cases/versioning-data-and-models/index.md rename to content/docs/use-cases/versioning-data-and-model-files/index.md diff --git a/content/docs/use-cases/versioning-data-and-models/tutorial.md b/content/docs/use-cases/versioning-data-and-model-files/tutorial.md similarity index 100% rename from content/docs/use-cases/versioning-data-and-models/tutorial.md rename to content/docs/use-cases/versioning-data-and-model-files/tutorial.md diff --git a/redirects-list.json b/redirects-list.json index 6a2e95344b..3e90ee4e9e 100644 --- a/redirects-list.json +++ b/redirects-list.json @@ -24,11 +24,10 @@ "^/doc/get-started(/.*)?$ /doc/start", "^/doc/tutorial(/.*)?$ /doc/start", "^/doc/tutorials/get-started(/.*)?$ /doc/start", - "^/doc/tutorials/versioning(/.*)?$ /doc/use-cases/versioning-data-and-models/tutorial", + "^/doc/tutorials/versioning(/.*)?$ /doc/use-cases/versioning-data-and-model-files/tutorial", "^/doc/tutorials(/.*)? /doc/start", - "^/doc/use-cases/data-and-model-files-versioning/?$ /doc/use-cases/versioning-data-and-models", - "^/doc/use-cases/versioning-data-and-model-files(/.*)?$ /doc/use-cases/versioning-data-and-models$1", + "^/doc/use-cases/data-and-model-files-versioning/?$ /doc/use-cases/versioning-data-and-model-files", "^/doc/user-guide/dvc-file-format$ /doc/user-guide/dvc-files-and-directories", "^/doc/user-guide/updating-tracked-files$ /doc/user-guide/how-to/update-tracked-files", "^/doc/understanding-dvc(/.*)?$ /doc/user-guide/what-is-dvc", diff --git a/static/img/data-as-code.png b/static/img/data-as-code.png deleted file mode 100644 index 3c916f34479dc10e2bce470af8017cd71bc3a6f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89443 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 A{{R30 From fb7265c0eb484799cadb236af1360c90cafda4a6 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Sat, 24 Oct 2020 03:19:14 -0500 Subject: [PATCH 39/95] cases: rewrite intro to improve motivation and post a draft figure proposal --- .../versioning-data-and-model-files/index.md | 90 ++++++++---------- static/img/data_ver_complex.png | Bin 0 -> 34749 bytes 2 files changed, 42 insertions(+), 48 deletions(-) create mode 100644 static/img/data_ver_complex.png diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index abdf757a82..811be745d8 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -1,52 +1,46 @@ # Versioning Data and Models -Taking data science from conceptual to applied requires answering data -management questions around dataset and machine learning model versioning. How -to track the evolution of data and ML models? How to organize and store the -revisions of these data artifacts for easy access and sharing? - -It turns out that we can find some answers in software engineering, like -[version control](https://en.wikipedia.org/wiki/Version_control). This means -keeping a change history (commits), automatic file deduplication, enabling -parallel teamwork (branching), peer-reviews (pull requests), etc. Imagine if we -could do the same with data! - -![](/img/data-as-code.png) _Matching data descriptions to a working environment_ - -Some advantages of versioning data and models: - -- Manage multiple versions of datasets and ML models easily, while - [preventing duplication](/doc/user-guide/large-dataset-optimization). -- Data as code: leverage Git workflows such as commits, branching, pull - requests, reviews, and even CI/CD for your data and models lifecycle. Think - "Git for data" -- Reproducibility: Guarantee that anyone can rewind - [data pipelines](/doc/start/data-pipelines) exactly as they were created - originally. -- Simple CLI: work with simple terminal commands like `dvc add` or - `dvc checkout` (similar to familiar `git` commands). -- Security: [DVC metafiles](/doc/user-guide/dvc-files-and-directories) enable - auditing data changes. And data access controls can be setup via storage - integrations. - -## Why DVC - -Unfortunately, SCM tools like [Git](https://git-scm.com/) are designed to handle -small text files, so data scientists can only control part of their assets that -way. Storage itself is also severely limited by code hosting platforms -[like GitHub](https://docs.github.com/en/github/managing-large-files/what-is-my-disk-quota), -so transferring and managing data storage separately is a constant hurdle. - -Rather than reinventing the wheel, DVC proposes to treat **data as code** in -order to manage it with existing engineering tools and best practices. Codifying -data science projects (building a declarative description of which data and -models should be in the environment) lets DVC match this description to the -workspace automatically, among other advanced uses. - -> 💡 Please see [Get Started](/doc/start) for a primer on DVC's features. +Data science teams have to face data management questions around versioning +datasets, data artifacts, and machine learning models. How do we keep track of +changes in data, code, and ML models? What’s the best way to organize and store +multiple versions of data files for safe and persistent access? How can the +lifecycle of data and models be followed and enforced? + +![](/img/data_ver_complex.png) _Exponential complexity of data science projects_ + +DVC proposes to codify data projects in order to adopt existing engineering +tools like Git +[version control](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control), +continuous integration (CI), and other best practices. This means writing a +description of which data, ML artifacts, etc. should be in the environment at a +given point. DVC can restore the workspace files and directories +from a specialized data storage, to match that description. Here are some +benefits of this approach: + +- Track all the things (code, data, ML models) with a unified toolset. +- Simple CLI: work with simple terminal [commands](/doc/command-reference) + similar to `git`. +- [Reproducibility](/doc/start/data-pipelines): enable rewinding data science + experiments to use the exact data employed originally. +- Low coupling: separate code from data by caching large files/directories + automatically. This makes your project easier to maintain (high cohesion) and + improves data persistence. +- Treating data as code also allows for other advanced features, see + [Get Started](/doc/start) for a primer. +- Security: Audit an immutable history of changes to your data and models. ## How it looks +Replace large data files and directories with tiny, human-readable metafiles +that can be versioned with Git. + +A CAS (DVC Cache) is created automatically. + +Metafiles link data from cache to workspace. + +Use Git commands to create versions (commits), branches, etc. git+dvc checkout +to switch between versions + Versioning large data files and directories with Git is made possible by replacing them with small, human-readable [metafiles](/doc/user-guide/dvc-files-and-directories). The data itself is @@ -57,8 +51,8 @@ for collaboration. ![](/img/404) _Parts of a DVC project_ -Let's imagine a project containing a couple of large data files (in the `data/` -directory), along with some source code to process it (`training.py`). Let's +Let’s imagine a project containing a couple of large data files (in the `data/` +directory), along with some source code to process it (`training.py`). Let’s codify it with DVC: ```git @@ -90,7 +84,7 @@ to their original location: > [File link types](/doc/user-guide/large-dataset-optimization#file-link-types-for-the-dvc-cache) > and `dvc config cache` for more info. on file linking. -The `data.dvc` and `dvc.lock` metafiles connect workspace and cache. Let's see +The `data.dvc` and `dvc.lock` metafiles connect workspace and cache. Let’s see their contents: ```yaml @@ -111,7 +105,7 @@ stages: md5: ede2872bedbfe10342bb1c416e2f049f ``` -**Remember: DVC doesn't replace Git.** Having codified data +**Remember: DVC doesn’t replace Git.** Having codified data artifacts and [pipelines](/doc/start/data-pipelines), regular `git` commands are used to create versions (commits, tags, branches, etc.): diff --git a/static/img/data_ver_complex.png b/static/img/data_ver_complex.png new file mode 100644 index 0000000000000000000000000000000000000000..442e1f70015525e97786bc16a4e49ee9dd5c7663 GIT binary patch literal 34749 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 literal 0 HcmV?d00001 From c9d0444805baad74d4800d0a6c925a9eb7507759 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Sat, 24 Oct 2020 15:45:44 -0500 Subject: [PATCH 40/95] cases: update Why DVC and benefits list based on https://docs.google.com/document/d/1jmvbsRC2JhzqAF0eTGu0tX9ydMNndiBviCHq5ezzfEY/edit --- .../versioning-data-and-model-files/index.md | 44 ++++++++----------- 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 811be745d8..3fdd308bb6 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -1,46 +1,40 @@ # Versioning Data and Models -Data science teams have to face data management questions around versioning +Data science teams today face data management questions around versioning datasets, data artifacts, and machine learning models. How do we keep track of changes in data, code, and ML models? What’s the best way to organize and store -multiple versions of data files for safe and persistent access? How can the +multiple versions of data files for safe, persistent access? How can the lifecycle of data and models be followed and enforced? -![](/img/data_ver_complex.png) _Exponential complexity of data science projects_ +![](/img/data_ver_complex.png) _Exponential complexity of DS projects_ -DVC proposes to codify data projects in order to adopt existing engineering +DVC proposes to _codify_ data projects in order to adopt existing engineering tools like Git [version control](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control), -continuous integration (CI), and other best practices. This means writing a -description of which data, ML artifacts, etc. should be in the environment at a -given point. DVC can restore the workspace files and directories -from a specialized data storage, to match that description. Here are some -benefits of this approach: - -- Track all the things (code, data, ML models) with a unified toolset. -- Simple CLI: work with simple terminal [commands](/doc/command-reference) - similar to `git`. -- [Reproducibility](/doc/start/data-pipelines): enable rewinding data science - experiments to use the exact data employed originally. +continuous integration (CI), and other best practices that improve productivity. +This means writing a description of which data, ML artifacts, etc. should be in +the environment at a given time. DVC can restore the workspace +files and directories (from a separate data storage) to match that description. +Here are some benefits of this approach: + +- Track all the things (code, data, ML models) with a unified toolset that is + accessible to every project participant (data scientists, engineers, managers, + etc.). +- Reproducibility and trustworthiness: identify exact research inputs, enable + anyone to understand and verify results. +- Enforce data lifecycle policies — all project changes have to go through the + repository history. - Low coupling: separate code from data by caching large files/directories automatically. This makes your project easier to maintain (high cohesion) and improves data persistence. +- Simple CLI: work with simple terminal [commands](/doc/command-reference) + similar to `git`. - Treating data as code also allows for other advanced features, see [Get Started](/doc/start) for a primer. - Security: Audit an immutable history of changes to your data and models. ## How it looks -Replace large data files and directories with tiny, human-readable metafiles -that can be versioned with Git. - -A CAS (DVC Cache) is created automatically. - -Metafiles link data from cache to workspace. - -Use Git commands to create versions (commits), branches, etc. git+dvc checkout -to switch between versions - Versioning large data files and directories with Git is made possible by replacing them with small, human-readable [metafiles](/doc/user-guide/dvc-files-and-directories). The data itself is From f49cce6d58a70b6010c9204753c135a8fc1df910 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Sat, 24 Oct 2020 15:52:18 -0500 Subject: [PATCH 41/95] cases: actually revert URL change from recent commit --- content/docs/api-reference/index.md | 4 ++-- content/docs/command-reference/add.md | 6 +++--- content/docs/command-reference/import.md | 2 +- .../docs/use-cases/versioning-data-and-model-files/index.md | 2 +- content/docs/user-guide/basic-concepts/data-artifact.md | 2 +- content/docs/user-guide/related-technologies.md | 3 ++- content/docs/user-guide/what-is-dvc.md | 2 +- 7 files changed, 11 insertions(+), 10 deletions(-) diff --git a/content/docs/api-reference/index.md b/content/docs/api-reference/index.md index 627ac4a2d4..ae302503b8 100644 --- a/content/docs/api-reference/index.md +++ b/content/docs/api-reference/index.md @@ -9,8 +9,8 @@ import dvc.api ``` The purpose of this API is to provide programmatic access to the data or models -[stored and versioned](/doc/use-cases/versioning-data-and-models) in DVC -repositories from Python code. +[stored and versioned](/doc/use-cases/versioning-data-and-model-files) in +DVC repositories from Python code. Please choose a function from the navigation sidebar to the left, or click the `Next` button below to jump into the first one ↘ diff --git a/content/docs/command-reference/add.md b/content/docs/command-reference/add.md index 89488a0cc5..52f7c3ad6f 100644 --- a/content/docs/command-reference/add.md +++ b/content/docs/command-reference/add.md @@ -22,8 +22,8 @@ track the added data. This command can be used to track large files, models, dataset directories, etc. that are too big for Git to handle directly. This enables -[versioning](/doc/use-cases/versioning-data-and-models) them indirectly with -Git. +[versioning](/doc/use-cases/versioning-data-and-model-files) them indirectly +with Git. The `targets` are the files or directories to add, which are turned into data artifacts of the project. These are stored in the @@ -214,7 +214,7 @@ $ dvc run -n train \ ``` > To try this example, see the -> [versioning tutorial](/doc/use-cases/versioning-data-and-models/tutorial). +> [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial). If instead we use the `--recursive` (`-R`) option, the output looks like this: diff --git a/content/docs/command-reference/import.md b/content/docs/command-reference/import.md index b883d69677..181479ec60 100644 --- a/content/docs/command-reference/import.md +++ b/content/docs/command-reference/import.md @@ -206,7 +206,7 @@ $ dvc get https://github.com/iterative/dataset-registry \ ``` > Used in our -> [versioning tutorial](/doc/use-cases/versioning-data-and-models/tutorial) +> [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) Or diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 3fdd308bb6..31f1c7c24f 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -132,4 +132,4 @@ M data\raw ![](/img/versioning.png) _Full project restoration_ > For more hands-on experience, please follow the -> [versioning tutorial](/doc/use-cases/versioning-data-and-models/tutorial). +> [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial). diff --git a/content/docs/user-guide/basic-concepts/data-artifact.md b/content/docs/user-guide/basic-concepts/data-artifact.md index 786f58554e..db5e13e0d1 100644 --- a/content/docs/user-guide/basic-concepts/data-artifact.md +++ b/content/docs/user-guide/basic-concepts/data-artifact.md @@ -6,4 +6,4 @@ match: ['data artifact', 'data artifacts', 'artifact', 'artifacts'] Any data file or directory, as well as intermediate or final results such as data features or ML models. These may be tracked by DVC as _dependencies_ or _outputs_. See also -[Versioning Data and Models](/doc/use-cases/versioning-data-and-models). +[Versioning Data and Models](/doc/use-cases/versioning-data-and-model-files). diff --git a/content/docs/user-guide/related-technologies.md b/content/docs/user-guide/related-technologies.md index de08407232..3a7d72c704 100644 --- a/content/docs/user-guide/related-technologies.md +++ b/content/docs/user-guide/related-technologies.md @@ -12,7 +12,8 @@ bringing best practices from software engineering into the data science field versions of data, data pipelines, and experiments. - DVC is not fundamentally bound to Git, and can work without it (except - [versioning-related](/doc/use-cases/versioning-data-and-models) features). + [versioning-related](/doc/use-cases/versioning-data-and-model-files) + features). ## Git-LFS (Large File Storage) diff --git a/content/docs/user-guide/what-is-dvc.md b/content/docs/user-guide/what-is-dvc.md index 8f8175da6f..adcb39d742 100644 --- a/content/docs/user-guide/what-is-dvc.md +++ b/content/docs/user-guide/what-is-dvc.md @@ -20,7 +20,7 @@ can version experiments, manage large datasets, and make projects reproducible. - DVC works **on top of Git repositories** and has a similar command line interface and flow as Git. DVC can also work stand-alone, but without - [versioning](/doc/use-cases/versioning-data-and-models) capabilities. + [versioning](/doc/use-cases/versioning-data-and-model-files) capabilities. - **Data versioning** is enabled by replacing large files, dataset directories, machine learning models, etc. with small From 5b95d36eefc8aa9acd19d29055b9d428eed2e451 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Sat, 24 Oct 2020 16:31:05 -0500 Subject: [PATCH 42/95] cases: more updates to the benefits bullets in Versioning --- .../versioning-data-and-model-files/index.md | 32 +++++++++++++------ 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 31f1c7c24f..1e4b8b5160 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -17,24 +17,38 @@ the environment at a given time. DVC can restore the workspace files and directories (from a separate data storage) to match that description. Here are some benefits of this approach: -- Track all the things (code, data, ML models) with a unified toolset that is - accessible to every project participant (data scientists, engineers, managers, - etc.). -- Reproducibility and trustworthiness: identify exact research inputs, enable - anyone to understand and verify results. -- Enforce data lifecycle policies — all project changes have to go through the - repository history. +- Track all the things (code, data, ML models) as they change. +- Collaborate using a unified toolset that is accessible to everyone (data + scientists, engineers, managers, etc.). +- Reproducibility and trustworthiness: identify exact inputs of past research, + enable anyone to understand and verify results. +- Enforce data lifecycle policies: all project changes have to go through the + repository history. Security audits are also made possible by an immutable + history of changes in data and models. - Low coupling: separate code from data by caching large files/directories automatically. This makes your project easier to maintain (high cohesion) and improves data persistence. -- Simple CLI: work with simple terminal [commands](/doc/command-reference) +- Simple interface: work with simple terminal [commands](/doc/command-reference) similar to `git`. - Treating data as code also allows for other advanced features, see [Get Started](/doc/start) for a primer. -- Security: Audit an immutable history of changes to your data and models. ## How it looks +DS/ML are iterative + +Replace large data files and directories with tiny, human-readable metafiles +that can be versioned with Git. + +A +[Content-addressable storage](https://www.google.com/url?q=https://en.wikipedia.org/wiki/Content-addressable_storage&sa=D&ust=1603526252385000&usg=AOvVaw3Y4fV6jAM2grfE4k9AP3HX) +(DVC Cache) is created automatically. + +Metafiles link data from cache to workspace. + +Use Git commands to create versions (commits), branches, etc. git+dvc checkout +to switch between versions + Versioning large data files and directories with Git is made possible by replacing them with small, human-readable [metafiles](/doc/user-guide/dvc-files-and-directories). The data itself is From aeb860e966bf870f1dd9635688a4947d66ca2179 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Sat, 24 Oct 2020 19:45:13 -0500 Subject: [PATCH 43/95] cases: rewrite How it looks (& feels) section --- .../versioning-data-and-model-files/index.md | 115 +++++++----------- 1 file changed, 47 insertions(+), 68 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 1e4b8b5160..2ddd424fa6 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -15,7 +15,8 @@ continuous integration (CI), and other best practices that improve productivity. This means writing a description of which data, ML artifacts, etc. should be in the environment at a given time. DVC can restore the workspace files and directories (from a separate data storage) to match that description. -Here are some benefits of this approach: + +## Why do it with DVC - Track all the things (code, data, ML models) as they change. - Collaborate using a unified toolset that is accessible to everyone (data @@ -26,82 +27,62 @@ Here are some benefits of this approach: repository history. Security audits are also made possible by an immutable history of changes in data and models. - Low coupling: separate code from data by caching large files/directories - automatically. This makes your project easier to maintain (high cohesion) and + automatically. This makes data projects easier to maintain (high cohesion) and improves data persistence. - Simple interface: work with simple terminal [commands](/doc/command-reference) similar to `git`. -- Treating data as code also allows for other advanced features, see +- Treating _data as code_ also allows for other advanced features, see [Get Started](/doc/start) for a primer. -## How it looks - -DS/ML are iterative - -Replace large data files and directories with tiny, human-readable metafiles -that can be versioned with Git. - -A -[Content-addressable storage](https://www.google.com/url?q=https://en.wikipedia.org/wiki/Content-addressable_storage&sa=D&ust=1603526252385000&usg=AOvVaw3Y4fV6jAM2grfE4k9AP3HX) -(DVC Cache) is created automatically. - -Metafiles link data from cache to workspace. - -Use Git commands to create versions (commits), branches, etc. git+dvc checkout -to switch between versions - -Versioning large data files and directories with Git is made possible by -replacing them with small, human-readable -[metafiles](/doc/user-guide/dvc-files-and-directories). The data itself is -cached outside of Git (locally or externally), and can be -synchronized automatically with -[dedicated storage](/doc/use-cases/versioned-storage) — a good way to share data -for collaboration. +## How it looks & feels -![](/img/404) _Parts of a DVC project_ +Data science and machine learning are iterative processes where the lifecycles +of data, code, and models occur semi-independently. Let's see how data +codification helps manage them effectively. -Let’s imagine a project containing a couple of large data files (in the `data/` -directory), along with some source code to process it (`training.py`). Let’s -codify it with DVC: +DVC starts by replacing large data files and directories in the +workspace with tiny, human-readable +[metafiles](/doc/user-guide/dvc-files-and-directories) that can be versioned +using Git. The data itself is cached outside of Git: ```git . -+├── .dvc # Hidden DVC internals -+│ ├── cache -+│ │ ├── b6e29fb... # data/ contents moved here -+│ │ └── ede2872... # model.h5 stored here ++├── .dvc # Hidden DVC internals ++│ ├── cache # CAS, excluded from Git ++│ │ ├── b6/e29fb... # data/ contents moved here ++│ │ └── ed/e2872... # model.h5 stored here +│ ... - ├── data # Now a link to the cache - │ ├── labels.csv - │ └── transactions.csv + ├── data # Large dir, kept outside of Git + │ ├── raw.txt + │ └── labels.csv ... -+├── data.dvc # Points to data/ -+├── dvc.lock # Points to model.h5 -+├── dvc.yaml # Wrapper for running training.py -+├── model.h5 # Final result (also a link to the cache) ++├── data.dvc # Metafile that replaces data/ ++├── dvc.yaml # Metafile that replaces model.h5 + ├── model.h5 # Large file, also cached outside of Git ├── training.py ``` -Tiny `.dvc` files capture snapshots of existing files or directories in the -workspace (see `dvc add`), and can be put in Git as placeholders -for the data. Similarly, `dvc.yaml` files can also capture any -output data produced by running the code (see `dvc repro`). All -tracked data contents are saved to the DVC cache, and linked\* back -to their original location: +The [data cache](/doc/command-reference/config#cache) is a +[content-addressable storage](https://www.google.com/url?q=https://en.wikipedia.org/wiki/Content-addressable_storage&sa=D&ust=1603526252385000&usg=AOvVaw3Y4fV6jAM2grfE4k9AP3HX) +(CAS), which adds a layer of indirection between code and data... In other +words, your code doesn't need to look for the right version of input files, nor +to write complicated output file names, leave it to DVC to match them later 💘 -> \* See -> [File link types](/doc/user-guide/large-dataset-optimization#file-link-types-for-the-dvc-cache) -> and `dvc config cache` for more info. on file linking. +> 💡 This cache can be +> [synchronized](/doc/start/data-versioning#storing-and-sharing) automatically +> with [dedicated storage](/doc/use-cases/versioned-storage) for sharing. -The `data.dvc` and `dvc.lock` metafiles connect workspace and cache. Let’s see -their contents: +Metafiles connect workspace and cache (among other purposes). For example: ```yaml +# data.dvc outs: - - md5: b6e29fb8740486c7e64a240e45505e41.dir + - md5: b6e29fb... # Points to .dvc/cache/b6/e29fb... path: data ``` ```yaml +# dvc.lock stages: train_model: cmd: python training.py data/ model.h5 @@ -113,34 +94,32 @@ stages: md5: ede2872bedbfe10342bb1c416e2f049f ``` -**Remember: DVC doesn’t replace Git.** Having codified data -artifacts and [pipelines](/doc/start/data-pipelines), regular `git` -commands are used to create versions (commits, tags, branches, etc.): +> See [Data Pipelines](/doc/start/data-pipelines) to learn about stages. -> Note that DVC automatically prevents Git from tracking data in the -> workspace (via `.gitignore`). +Having codified the data and models in the project, a regular `git` workflow can +be used to create versions (commits), branches, etc. using the metafiles as +proxies to the underlying data: ```dvc -$ git add cleanup.sh +$ git add training.py $ dvc add data/ ... $ git add data.dvc data/.gitignore +$ git commit -m 'First modeling experiment' -$ git commit -m 'Data cleanup v1.0' +# Iterate, repeat! ``` -> By matching versions of code with snapshots of the data at the time, we can -> achieve full [reproducibility](/doc/start/data-pipelines). +> Note that DVC prevents Git from tracking data in the workspace (via +> `.gitignore`). -Now that Git is tracking the code (including -[DVC metafiles](/doc/user-guide/dvc-files-and-directories)), and DVC is tracking -the data, we can repeat the procedure to generate more commits. `dvc checkout` -can then be used to go back: +With the project metadata in Git (along with matching code), it can now easily +be rewound ⏪: ```dvc -$ git checkout v1.0 +$ git checkout v1 $ dvc checkout -M data\raw +M data ``` ![](/img/versioning.png) _Full project restoration_ From 2c7e2ea92cba3b037dee394395171711400e249e Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Sat, 24 Oct 2020 20:49:32 -0500 Subject: [PATCH 44/95] cases: remove non-essential info. from How it looks section of Versioning (a little aggressive) --- .../versioning-data-and-model-files/index.md | 55 ++++++------------- 1 file changed, 17 insertions(+), 38 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 2ddd424fa6..71bb41e5da 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -18,7 +18,7 @@ files and directories (from a separate data storage) to match that description. ## Why do it with DVC -- Track all the things (code, data, ML models) as they change. +- Track all the things (source code, data, ML models) as they change. - Collaborate using a unified toolset that is accessible to everyone (data scientists, engineers, managers, etc.). - Reproducibility and trustworthiness: identify exact inputs of past research, @@ -47,18 +47,18 @@ using Git. The data itself is cached outside of Git: ```git . -+├── .dvc # Hidden DVC internals -+│ ├── cache # CAS, excluded from Git -+│ │ ├── b6/e29fb... # data/ contents moved here -+│ │ └── ed/e2872... # model.h5 stored here ++├── .dvc ++│ ├── cache ++│ │ ├── b6/e29fb... # data/ contents moved here ++│ │ └── ed/e2872... # model.h5 stored here +│ ... - ├── data # Large dir, kept outside of Git + ├── data # Kept outside of Git │ ├── raw.txt │ └── labels.csv ... +├── data.dvc # Metafile that replaces data/ -+├── dvc.yaml # Metafile that replaces model.h5 - ├── model.h5 # Large file, also cached outside of Git ++├── dvc.yaml # Replaces model.h5 + ├── model.h5 # Also outside of Git ├── training.py ``` @@ -66,55 +66,34 @@ The [data cache](/doc/command-reference/config#cache) is a [content-addressable storage](https://www.google.com/url?q=https://en.wikipedia.org/wiki/Content-addressable_storage&sa=D&ust=1603526252385000&usg=AOvVaw3Y4fV6jAM2grfE4k9AP3HX) (CAS), which adds a layer of indirection between code and data... In other words, your code doesn't need to look for the right version of input files, nor -to write complicated output file names, leave it to DVC to match them later 💘 +to write complicated output file paths, leave it to DVC to match them later 💘 > 💡 This cache can be > [synchronized](/doc/start/data-versioning#storing-and-sharing) automatically > with [dedicated storage](/doc/use-cases/versioned-storage) for sharing. -Metafiles connect workspace and cache (among other purposes). For example: +Metafiles connect workspace and cache (among other purposes). For example +`data.dvc`: ```yaml -# data.dvc outs: - - md5: b6e29fb... # Points to .dvc/cache/b6/e29fb... + - md5: b6e29fb... # Points to .dvc/cache/b6/e29fb... path: data ``` -```yaml -# dvc.lock -stages: - train_model: - cmd: python training.py data/ model.h5 - deps: - - path: data - md5: b6e29fb8740486c7e64a240e45505e41.dir - outs: - - path: model.h5 - md5: ede2872bedbfe10342bb1c416e2f049f -``` - -> See [Data Pipelines](/doc/start/data-pipelines) to learn about stages. - Having codified the data and models in the project, a regular `git` workflow can -be used to create versions (commits), branches, etc. using the metafiles as -proxies to the underlying data: +be used to create versions (commits), branches, etc. ```dvc -$ git add training.py -$ dvc add data/ -... -$ git add data.dvc data/.gitignore +$ git add data.dvc data.yaml ... training.py $ git commit -m 'First modeling experiment' # Iterate, repeat! ``` -> Note that DVC prevents Git from tracking data in the workspace (via -> `.gitignore`). - -With the project metadata in Git (along with matching code), it can now easily -be rewound ⏪: +The data science project metadata in Git works as a proxy to the +cached data files that matches specific versions of code and config +files. DVC uses it to rewind ⏪ (or ⏩) the entire project: ```dvc $ git checkout v1 From 30ad4e7fb9bd16b915603b61b678438909b95e03 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Mon, 26 Oct 2020 19:34:38 -0600 Subject: [PATCH 45/95] cases: simplify How it looks per David and some of Ivan's feedback (remove cache mentions) --- .../versioning-data-and-model-files/index.md | 64 +++++++------------ 1 file changed, 23 insertions(+), 41 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 71bb41e5da..9271100dee 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -26,32 +26,24 @@ files and directories (from a separate data storage) to match that description. - Enforce data lifecycle policies: all project changes have to go through the repository history. Security audits are also made possible by an immutable history of changes in data and models. -- Low coupling: separate code from data by caching large files/directories - automatically. This makes data projects easier to maintain (high cohesion) and - improves data persistence. +- DVC separates code from data automatically. This makes the project easier to + maintain (low coupling, high cohesion) and improves data persistence. - Simple interface: work with simple terminal [commands](/doc/command-reference) similar to `git`. - Treating _data as code_ also allows for other advanced features, see [Get Started](/doc/start) for a primer. -## How it looks & feels +In summary, data science and machine learning are iterative processes where the +lifecycles of data, code, and ML models occur independently. DVC helps manage +them effectively. -Data science and machine learning are iterative processes where the lifecycles -of data, code, and models occur semi-independently. Let's see how data -codification helps manage them effectively. +## How it looks & feels -DVC starts by replacing large data files and directories in the -workspace with tiny, human-readable -[metafiles](/doc/user-guide/dvc-files-and-directories) that can be versioned -using Git. The data itself is cached outside of Git: +DVC replaces large data files and directories in the workspace with +tiny, human-readable _metafiles_ that can be versioned using Git. ```git . -+├── .dvc -+│ ├── cache -+│ │ ├── b6/e29fb... # data/ contents moved here -+│ │ └── ed/e2872... # model.h5 stored here -+│ ... ├── data # Kept outside of Git │ ├── raw.txt │ └── labels.csv @@ -62,44 +54,34 @@ using Git. The data itself is cached outside of Git: ├── training.py ``` -The [data cache](/doc/command-reference/config#cache) is a -[content-addressable storage](https://www.google.com/url?q=https://en.wikipedia.org/wiki/Content-addressable_storage&sa=D&ust=1603526252385000&usg=AOvVaw3Y4fV6jAM2grfE4k9AP3HX) -(CAS), which adds a layer of indirection between code and data... In other -words, your code doesn't need to look for the right version of input files, nor -to write complicated output file paths, leave it to DVC to match them later 💘 +Your code doesn't need to look for the right version of input files, nor to +write complicated output file paths, leave it to DVC to match them later 💘 -> 💡 This cache can be -> [synchronized](/doc/start/data-versioning#storing-and-sharing) automatically -> with [dedicated storage](/doc/use-cases/versioned-storage) for sharing. +> See [DVC Files and Directories](/doc/user-guide/dvc-files-and-directories) for +> more details. -Metafiles connect workspace and cache (among other purposes). For example -`data.dvc`: +Metafiles contain a unique identifier of the version of the data (stored +separately). For example: ```yaml +# data.dvc outs: - - md5: b6e29fb... # Points to .dvc/cache/b6/e29fb... + - md5: 6d048097506e0f7b6e431ca7d1b00f02 path: data ``` -Having codified the data and models in the project, a regular `git` workflow can -be used to create versions (commits), branches, etc. +A regular `git` workflow can be used to create versions (commits), branches, +etc. with the codified data and models: ```dvc $ git add data.dvc data.yaml ... training.py -$ git commit -m 'First modeling experiment' - -# Iterate, repeat! +$ git commit -m "First modeling experiment" +$ git tag -a v1 -m "Model v1" ``` -The data science project metadata in Git works as a proxy to the -cached data files that matches specific versions of code and config -files. DVC uses it to rewind ⏪ (or ⏩) the entire project: - -```dvc -$ git checkout v1 -$ dvc checkout -M data -``` +The project metadata in Git works as a proxy to the actual data that match the +current code version. DVC uses it to rewind ⏪ (or ⏩) the entire project (see +`dvc checkout`). ![](/img/versioning.png) _Full project restoration_ From c5e34ce6bbc911965cbee6c3680d8043c70c5c44 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Mon, 26 Oct 2020 20:08:21 -0600 Subject: [PATCH 46/95] cases: remove H2s temporarily, simplify benefits bullet list, et al. --- content/docs/use-cases/index.md | 8 +++--- .../versioning-data-and-model-files/index.md | 26 +++++++------------ 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/content/docs/use-cases/index.md b/content/docs/use-cases/index.md index 2eb692b461..367d4b13bf 100644 --- a/content/docs/use-cases/index.md +++ b/content/docs/use-cases/index.md @@ -19,10 +19,12 @@ If you store and process data files or datasets to produce other data or machine learning models, and you want to - track and save data artifacts the same way you capture code; -- create and switch among different versions of data or models easily; -- understand how data or ML models were built in the first place; +- create and switch between versions of data and ML models easily; +- understand how data or ML artifacts were built in the first place; - compare machine learning models and metrics to each other; -- bring software engineering best practices and tools to your data science team +- bring software engineering best practices and tools to your data science team; +- work with a simple interface consisting of familiar terminal + [commands](/doc/command-reference) (similar to `git`). DVC is for you! diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 9271100dee..cd3cda85c1 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -15,29 +15,21 @@ continuous integration (CI), and other best practices that improve productivity. This means writing a description of which data, ML artifacts, etc. should be in the environment at a given time. DVC can restore the workspace files and directories (from a separate data storage) to match that description. - -## Why do it with DVC +Some benefits of this approach: - Track all the things (source code, data, ML models) as they change. -- Collaborate using a unified toolset that is accessible to everyone (data - scientists, engineers, managers, etc.). -- Reproducibility and trustworthiness: identify exact inputs of past research, - enable anyone to understand and verify results. -- Enforce data lifecycle policies: all project changes have to go through the - repository history. Security audits are also made possible by an immutable - history of changes in data and models. +- Collaborate using a unified toolset, accessible to everyone (data scientists, + engineers, managers, etc.). +- Identify exact research input, enabling anyone to understand and verify the + results later (reproducibility). +- All project changes go through the immutable history of a repository, allowing + for enforcement of lifecycle policies (data security). - DVC separates code from data automatically. This makes the project easier to - maintain (low coupling, high cohesion) and improves data persistence. -- Simple interface: work with simple terminal [commands](/doc/command-reference) - similar to `git`. + maintain and improves data persistence (low coupling, high cohesion). - Treating _data as code_ also allows for other advanced features, see [Get Started](/doc/start) for a primer. -In summary, data science and machine learning are iterative processes where the -lifecycles of data, code, and ML models occur independently. DVC helps manage -them effectively. - -## How it looks & feels +Let's go over how it looks & feels! DVC replaces large data files and directories in the workspace with tiny, human-readable _metafiles_ that can be versioned using Git. From 04e42cb150a4dbf77a8a9f7692e5f60c20c0ea26 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Tue, 27 Oct 2020 02:54:52 -0600 Subject: [PATCH 47/95] cses: rewrite benefit bullets and simplify how it feels section --- content/docs/use-cases/index.md | 11 ++-- .../versioning-data-and-model-files/index.md | 62 ++++++++++--------- 2 files changed, 39 insertions(+), 34 deletions(-) diff --git a/content/docs/use-cases/index.md b/content/docs/use-cases/index.md index 367d4b13bf..e8ab5a7dff 100644 --- a/content/docs/use-cases/index.md +++ b/content/docs/use-cases/index.md @@ -19,12 +19,13 @@ If you store and process data files or datasets to produce other data or machine learning models, and you want to - track and save data artifacts the same way you capture code; -- create and switch between versions of data and ML models easily; +- switch between + [versions of data and ML models](/doc/use-cases/versioning-data-and-model-files) + easily; - understand how data or ML artifacts were built in the first place; -- compare machine learning models and metrics to each other; -- bring software engineering best practices and tools to your data science team; -- work with a simple interface consisting of familiar terminal - [commands](/doc/command-reference) (similar to `git`). +- compare ML models and metrics among [experiments](/doc/start/experiments); +- bring tools and best practices from software engineering to your data science + projects; DVC is for you! diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index cd3cda85c1..bb0a838c80 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -4,7 +4,7 @@ Data science teams today face data management questions around versioning datasets, data artifacts, and machine learning models. How do we keep track of changes in data, code, and ML models? What’s the best way to organize and store multiple versions of data files for safe, persistent access? How can the -lifecycle of data and models be followed and enforced? +intertwined lifecycles of data and models be followed and enforced? ![](/img/data_ver_complex.png) _Exponential complexity of DS projects_ @@ -17,42 +17,33 @@ the environment at a given time. DVC can restore the workspace files and directories (from a separate data storage) to match that description. Some benefits of this approach: -- Track all the things (source code, data, ML models) as they change. -- Collaborate using a unified toolset, accessible to everyone (data scientists, - engineers, managers, etc.). -- Identify exact research input, enabling anyone to understand and verify the - results later (reproducibility). -- All project changes go through the immutable history of a repository, allowing - for enforcement of lifecycle policies (data security). -- DVC separates code from data automatically. This makes the project easier to - maintain and improves data persistence (low coupling, high cohesion). -- Treating _data as code_ also allows for other advanced features, see +- Identify exact research inputs, so anyone can understand and verify results + later (reproducibility). +- Separate code from data neatly, making projects easier to work on by separate + teams, and improving data persistence. +- All changes go through the immutable history of a Git repo, allowing to + enforce data lifecycles policies (data security). +- Compose your own collaboration toolset that everyone (data scientists, + engineers, managers) is familiar with, e.g. GitHub, Google Drive, etc. +- Treating _data as code_ enables other advanced features; See [Get Started](/doc/start) for a primer. -Let's go over how it looks & feels! - -DVC replaces large data files and directories in the workspace with -tiny, human-readable _metafiles_ that can be versioned using Git. +But how does DVC look & feel? First we replaces large data files and directories +with tiny, human-readable _metafiles_ that can be versioned using Git. ```git . ├── data # Kept outside of Git │ ├── raw.txt - │ └── labels.csv + │ ├── labels.csv ... +├── data.dvc # Metafile that replaces data/ +├── dvc.yaml # Replaces model.h5 - ├── model.h5 # Also outside of Git + ├── model.h5 # Also ignored by Git ├── training.py ``` -Your code doesn't need to look for the right version of input files, nor to -write complicated output file paths, leave it to DVC to match them later 💘 - -> See [DVC Files and Directories](/doc/user-guide/dvc-files-and-directories) for -> more details. - -Metafiles contain a unique identifier of the version of the data (stored +Metafiles contain a unique identifier of this version of the data (stored separately). For example: ```yaml @@ -62,8 +53,17 @@ outs: path: data ``` -A regular `git` workflow can be used to create versions (commits), branches, -etc. with the codified data and models: +> See [DVC Files and Directories](/doc/user-guide/dvc-files-and-directories) for +> more details. + +Th bottom line is that your code doesn't need to read or write complicated +output file paths like `data/2020-10-27...`. Leave it to DVC to match the right +versions of code and data later 💘. + +A regular `git` workflow can be used to create project +[snapshots](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository) +(commits), branches, etc. encompassing all the things (source code, data, and +models): ```dvc $ git add data.dvc data.yaml ... training.py @@ -71,11 +71,15 @@ $ git commit -m "First modeling experiment" $ git tag -a v1 -m "Model v1" ``` -The project metadata in Git works as a proxy to the actual data that match the -current code version. DVC uses it to rewind ⏪ (or ⏩) the entire project (see -`dvc checkout`). +DVC can use this metadata in Git as a proxy to the actual +[data storage](/doc/use-cases/versioned-storage), and rewind ⏪ or fast-forward +⏩ the entire project based on it (see `dvc checkout`). ![](/img/versioning.png) _Full project restoration_ > For more hands-on experience, please follow the > [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial). + +In summary, data science and machine learning are iterative processes where the +lifecycles of data, code, and ML models occur at different paces. DVC helps +integrate and manage them effectively. From 531071a3ef47c3391127cadcfeb0a3d084ed58f9 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Tue, 27 Oct 2020 14:50:46 -0600 Subject: [PATCH 48/95] cases: make bullet list into paragraph temp. --- .../versioning-data-and-model-files/index.md | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index bb0a838c80..9890fbf981 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -15,18 +15,14 @@ continuous integration (CI), and other best practices that improve productivity. This means writing a description of which data, ML artifacts, etc. should be in the environment at a given time. DVC can restore the workspace files and directories (from a separate data storage) to match that description. -Some benefits of this approach: - -- Identify exact research inputs, so anyone can understand and verify results - later (reproducibility). -- Separate code from data neatly, making projects easier to work on by separate - teams, and improving data persistence. -- All changes go through the immutable history of a Git repo, allowing to - enforce data lifecycles policies (data security). -- Compose your own collaboration toolset that everyone (data scientists, - engineers, managers) is familiar with, e.g. GitHub, Google Drive, etc. -- Treating _data as code_ enables other advanced features; See - [Get Started](/doc/start) for a primer. + +Data versioning lets us identify exact research inputs later, so anyone can +understand and reproduce results. DVC brings additional benefits on top of that: +make projects easier to work on by separating code from data (which also +increases data persistence); enforce lifecycle and security policies by having +all changes go though a Git repo (immutable history); collaborate with a toolset +everyone is familiar with (data scientists, engineers, managers), and others +(see [Get Started](/doc/start)). But how does DVC look & feel? First we replaces large data files and directories with tiny, human-readable _metafiles_ that can be versioned using Git. @@ -81,5 +77,5 @@ DVC can use this metadata in Git as a proxy to the actual > [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial). In summary, data science and machine learning are iterative processes where the -lifecycles of data, code, and ML models occur at different paces. DVC helps -integrate and manage them effectively. +lifecycles of data, code, and ML models occur at different paces. DVC's unique +_data-as-code_ approach helps integrate and manage them effectively. From 40f09df9d307364c3816b83bf6e62df60f99237a Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 28 Oct 2020 02:10:51 -0600 Subject: [PATCH 49/95] cases: wrap up Vrsng? (text) --- content/docs/use-cases/versioned-storage.md | 13 ---- .../versioning-data-and-model-files/index.md | 60 +++++++++++-------- 2 files changed, 36 insertions(+), 37 deletions(-) delete mode 100644 content/docs/use-cases/versioned-storage.md diff --git a/content/docs/use-cases/versioned-storage.md b/content/docs/use-cases/versioned-storage.md deleted file mode 100644 index 3ced05eacf..0000000000 --- a/content/docs/use-cases/versioned-storage.md +++ /dev/null @@ -1,13 +0,0 @@ -# Versioned storage - -What if we could **combine data and ML model versioning features with large file -storage** solutions like traditional hard drives, NAS, or cloud services such as -Amazon S3 and Google Drive? DVC brings together the best of both worlds by -implementing easy synchronization between the data cache and -on-premises or cloud storage for sharing. - -![](/img/model-versioning-diagram.png) _DVC's hybrid versioned storage_ - -> Note that [remote storage](/doc/command-reference/remote) is optional in DVC: -> no server setup or special services are needed, just the `dvc` command-line -> tool. diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 9890fbf981..c9eb221bab 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -27,38 +27,50 @@ everyone is familiar with (data scientists, engineers, managers), and others But how does DVC look & feel? First we replaces large data files and directories with tiny, human-readable _metafiles_ that can be versioned using Git. +**Before**: manual filename-based versioning mess with ad hoc conventions — +prone to human error + +```dvc + . + ├── data + │ ├── 2019-04 + │ │ └── raw + │ ├── 2019-10 + │ │ ├── raw + │ │ └── clean.txt + │ ├── 2020-03 + │ │ ├── raw.txt + │ │ ├── labels.csv + │ │ ├── labels-2.csv +... + ├── model.h5 + ├── model_final.h5 + ├── training.py # Only file in Git +``` + +**After**: Lean DVC workspace that is easy to navigate. Only one version of the +data is shown along with the current code version. `dvc.yaml` and `.dvc` +metafiles replace all the complexity. + ```git . - ├── data # Kept outside of Git + ├── data │ ├── raw.txt │ ├── labels.csv ... -+├── data.dvc # Metafile that replaces data/ -+├── dvc.yaml # Replaces model.h5 - ├── model.h5 # Also ignored by Git - ├── training.py ++├── data.dvc # in Git ++├── dvc.yaml # in Git + ├── model.h5 + ├── training.py # in Git ``` -Metafiles contain a unique identifier of this version of the data (stored -separately). For example: - -```yaml -# data.dvc -outs: - - md5: 6d048097506e0f7b6e431ca7d1b00f02 - path: data -``` - -> See [DVC Files and Directories](/doc/user-guide/dvc-files-and-directories) for -> more details. - -Th bottom line is that your code doesn't need to read or write complicated -output file paths like `data/2020-10-27...`. Leave it to DVC to match the right +The bottom line is that your code doesn't need to read or write complicated +output file paths like `data/2019-10...`. Leave it to DVC to match the right versions of code and data later 💘. A regular `git` workflow can be used to create project [snapshots](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository) -(commits), branches, etc. encompassing all the things (source code, data, and +(commits), branches, etc. that encompass all the things (source code, data, and models): ```dvc @@ -67,9 +79,9 @@ $ git commit -m "First modeling experiment" $ git tag -a v1 -m "Model v1" ``` -DVC can use this metadata in Git as a proxy to the actual -[data storage](/doc/use-cases/versioned-storage), and rewind ⏪ or fast-forward -⏩ the entire project based on it (see `dvc checkout`). +DVC uses the metadata we put in Git as a proxy to the actual data +([stored separately](/doc/command-reference/cache)), and can rewind ⏪ or +fast-forward ⏩ the entire project based on it (see `dvc checkout`). ![](/img/versioning.png) _Full project restoration_ From 8fcd2e6d767b1c19a9affb03c86050541a625b12 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 28 Oct 2020 02:33:20 -0600 Subject: [PATCH 50/95] cases: hardcode colums in How it feels section of Vrsng --- .../versioning-data-and-model-files/index.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index c9eb221bab..12a1f999f2 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -27,6 +27,9 @@ everyone is familiar with (data scientists, engineers, managers), and others But how does DVC look & feel? First we replaces large data files and directories with tiny, human-readable _metafiles_ that can be versioned using Git. +
+
+ **Before**: manual filename-based versioning mess with ad hoc conventions — prone to human error @@ -36,18 +39,18 @@ prone to human error │ ├── 2019-04 │ │ └── raw │ ├── 2019-10 - │ │ ├── raw - │ │ └── clean.txt + │ │ └── raw.txt │ ├── 2020-03 │ │ ├── raw.txt - │ │ ├── labels.csv - │ │ ├── labels-2.csv -... + │ ... └── labels.csv ├── model.h5 ├── model_final.h5 ├── training.py # Only file in Git ``` +
+
+ **After**: Lean DVC workspace that is easy to navigate. Only one version of the data is shown along with the current code version. `dvc.yaml` and `.dvc` metafiles replace all the complexity. @@ -56,7 +59,7 @@ metafiles replace all the complexity. . ├── data │ ├── raw.txt - │ ├── labels.csv + │ └── labels.csv ... +├── data.dvc # in Git +├── dvc.yaml # in Git @@ -64,6 +67,9 @@ metafiles replace all the complexity. ├── training.py # in Git ``` +
+
+ The bottom line is that your code doesn't need to read or write complicated output file paths like `data/2019-10...`. Leave it to DVC to match the right versions of code and data later 💘. From 669f9f54480b58ac54b9666424c261b209a9523f Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 28 Oct 2020 02:58:05 -0600 Subject: [PATCH 51/95] cache: simplify it's structure explanation and add CAS term (from Vrsng use case) --- content/docs/command-reference/cache/index.md | 2 +- .../user-guide/dvc-files-and-directories.md | 55 +++++++++---------- 2 files changed, 26 insertions(+), 31 deletions(-) diff --git a/content/docs/command-reference/cache/index.md b/content/docs/command-reference/cache/index.md index f9c1bc91f4..0117e2b4f7 100644 --- a/content/docs/command-reference/cache/index.md +++ b/content/docs/command-reference/cache/index.md @@ -25,7 +25,7 @@ Learn more about it's > [File link types](/doc/user-guide/large-dataset-optimization#file-link-types-for-the-dvc-cache) > for more information on file links on different platforms. -> For more cache-related configuration options refer to `dvc config cache`. +For cache configuration options, refer to `dvc config cache`. ## Options diff --git a/content/docs/user-guide/dvc-files-and-directories.md b/content/docs/user-guide/dvc-files-and-directories.md index 81cc0fa8d3..4f4f3280bb 100644 --- a/content/docs/user-guide/dvc-files-and-directories.md +++ b/content/docs/user-guide/dvc-files-and-directories.md @@ -282,22 +282,31 @@ Full parameters (key and value) are listed separately under ## Structure of the cache directory +The DVC cache is a +[content-addressable storage](https://en.wikipedia.org/wiki/Content-addressable_storage) +(CAS), which adds a layer of indirection between code and data. It's hidden from +the user (and from Git), and typically local. However, it can be synchronized +with [remote storage](/doc/command-reference/remote) for sharing. + There are two ways in which the data is stored in cache: As a -single file (eg. `data.csv`), or a directory of files. +single file (eg. `data.csv`), or as a directory. + +### For files -For the first case, we calculate the file hash, a 32 characters long string -(usually MD5). The first two characters are used to name the directory inside -`.dvc/cache`, and the rest become the file name of the cached file. For example, -if a data file `Posts.xml.zip` has a hash value of -`ec1d2935f811b77cc49b031b999cbf17`, its path in the cache will be -`.dvc/cache/ec/1d2935f811b77cc49b031b999cbf17`. +DVC calculates the file hash, a 32 characters long string (usually MD5). The +first two characters are used to name the directory inside `.dvc/cache`, and the +rest become the file name of the cached file. For example, if a data file +`Posts.xml.zip` has a hash value of `ec1d2935f811b77cc49b031b999cbf17`, its path +in the cache will be `.dvc/cache/ec/1d2935f811b77cc49b031b999cbf17`. > Note that file hashes are calculated from file contents only. 2 or more files > with different names but the same contents can exist in the workspace and be > tracked by DVC, but only one copy is stored in the cache. This helps avoid > data duplication in cache and remotes. -For the second case, let us consider a directory with 2 images. +### For directories + +Let's imagine [adding](/doc/command-reference/add) a directory with 2 images: ```dvc $ tree data/images/ @@ -308,21 +317,10 @@ data/images/ $ dvc add data/images ``` -When running `dvc add` on this directory of images, a `data/images.dvc` -[DVC-file](/doc/user-guide/dvc-files-and-directories) is created, containing the -hash value of the directory: - -```yaml -outs: - - md5: 196a322c107c2572335158503c64bfba.dir - path: data/images -``` - -The directory in cache is stored as a JSON file (with `.dir` file extension) -describing it's contents, along with the files it contains in cache, like this: +The directory entry in the cache is stored as a JSON file with `.dir` file +extension, along with the files it contains in cache, like this: ```dvc -$ tree .dvc/cache .dvc/cache/ ├── 19 │   └── 6a322c107c2572335158503c64bfba.dir @@ -332,16 +330,13 @@ $ tree .dvc/cache     └── 0b40427ee0998e9802335d98f08cd98f ``` -The cache file with `.dir` extension is a special text file that contains the -mapping of files in the `data/` directory (as a JSON array), along with their -hash values. The other two cache files are the files inside `data/`. +This `.dir` file contains the mapping of files in `data/images` (as a JSON +array), including their hash values. That's how DVC knows that the other two +cached files belong in the directory: -A typical `.dir` cache file looks like this: - -```dvc -$ cat .dvc/cache/19/6a322c107c2572335158503c64bfba.dir -[{"md5": "dff70c0392d7d386c39a23c64fcc0376", "relpath": "cat.jpeg"}, -{"md5": "29a6c8271c0c8fbf75d3b97aecee589f", "relpath": "index.jpeg"}] +```json +[{ "md5": "dff70c0392d7d386c39a23c64fcc0376", "relpath": "cat.jpeg" }, +{ "md5": "29a6c8271c0c8fbf75d3b97aecee589f", "relpath": "index.jpeg" }] ``` See also `dvc cache dir` to set the location of the cache directory. From 67c6bebb970c5cf45ff2a711b1ce323364606111 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 28 Oct 2020 15:15:18 -0600 Subject: [PATCH 52/95] guide: revert changes to this section for now --- .../user-guide/dvc-files-and-directories.md | 55 ++++++++++--------- 1 file changed, 30 insertions(+), 25 deletions(-) diff --git a/content/docs/user-guide/dvc-files-and-directories.md b/content/docs/user-guide/dvc-files-and-directories.md index 4f4f3280bb..81cc0fa8d3 100644 --- a/content/docs/user-guide/dvc-files-and-directories.md +++ b/content/docs/user-guide/dvc-files-and-directories.md @@ -282,31 +282,22 @@ Full parameters (key and value) are listed separately under ## Structure of the cache directory -The DVC cache is a -[content-addressable storage](https://en.wikipedia.org/wiki/Content-addressable_storage) -(CAS), which adds a layer of indirection between code and data. It's hidden from -the user (and from Git), and typically local. However, it can be synchronized -with [remote storage](/doc/command-reference/remote) for sharing. - There are two ways in which the data is stored in cache: As a -single file (eg. `data.csv`), or as a directory. - -### For files +single file (eg. `data.csv`), or a directory of files. -DVC calculates the file hash, a 32 characters long string (usually MD5). The -first two characters are used to name the directory inside `.dvc/cache`, and the -rest become the file name of the cached file. For example, if a data file -`Posts.xml.zip` has a hash value of `ec1d2935f811b77cc49b031b999cbf17`, its path -in the cache will be `.dvc/cache/ec/1d2935f811b77cc49b031b999cbf17`. +For the first case, we calculate the file hash, a 32 characters long string +(usually MD5). The first two characters are used to name the directory inside +`.dvc/cache`, and the rest become the file name of the cached file. For example, +if a data file `Posts.xml.zip` has a hash value of +`ec1d2935f811b77cc49b031b999cbf17`, its path in the cache will be +`.dvc/cache/ec/1d2935f811b77cc49b031b999cbf17`. > Note that file hashes are calculated from file contents only. 2 or more files > with different names but the same contents can exist in the workspace and be > tracked by DVC, but only one copy is stored in the cache. This helps avoid > data duplication in cache and remotes. -### For directories - -Let's imagine [adding](/doc/command-reference/add) a directory with 2 images: +For the second case, let us consider a directory with 2 images. ```dvc $ tree data/images/ @@ -317,10 +308,21 @@ data/images/ $ dvc add data/images ``` -The directory entry in the cache is stored as a JSON file with `.dir` file -extension, along with the files it contains in cache, like this: +When running `dvc add` on this directory of images, a `data/images.dvc` +[DVC-file](/doc/user-guide/dvc-files-and-directories) is created, containing the +hash value of the directory: + +```yaml +outs: + - md5: 196a322c107c2572335158503c64bfba.dir + path: data/images +``` + +The directory in cache is stored as a JSON file (with `.dir` file extension) +describing it's contents, along with the files it contains in cache, like this: ```dvc +$ tree .dvc/cache .dvc/cache/ ├── 19 │   └── 6a322c107c2572335158503c64bfba.dir @@ -330,13 +332,16 @@ extension, along with the files it contains in cache, like this:     └── 0b40427ee0998e9802335d98f08cd98f ``` -This `.dir` file contains the mapping of files in `data/images` (as a JSON -array), including their hash values. That's how DVC knows that the other two -cached files belong in the directory: +The cache file with `.dir` extension is a special text file that contains the +mapping of files in the `data/` directory (as a JSON array), along with their +hash values. The other two cache files are the files inside `data/`. -```json -[{ "md5": "dff70c0392d7d386c39a23c64fcc0376", "relpath": "cat.jpeg" }, -{ "md5": "29a6c8271c0c8fbf75d3b97aecee589f", "relpath": "index.jpeg" }] +A typical `.dir` cache file looks like this: + +```dvc +$ cat .dvc/cache/19/6a322c107c2572335158503c64bfba.dir +[{"md5": "dff70c0392d7d386c39a23c64fcc0376", "relpath": "cat.jpeg"}, +{"md5": "29a6c8271c0c8fbf75d3b97aecee589f", "relpath": "index.jpeg"}] ``` See also `dvc cache dir` to set the location of the cache directory. From 4329b605fef14da633d90b3bb91e184819aed73f Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 28 Oct 2020 15:31:16 -0600 Subject: [PATCH 53/95] cases: polish latest iteration of Versioning use case --- .../versioning-data-and-model-files/index.md | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 12a1f999f2..2020ef51da 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -25,26 +25,27 @@ everyone is familiar with (data scientists, engineers, managers), and others (see [Get Started](/doc/start)). But how does DVC look & feel? First we replaces large data files and directories -with tiny, human-readable _metafiles_ that can be versioned using Git. +with tiny, human-readable [metafiles](/doc/user-guide/dvc-files-and-directories) +that can be versioned using Git.
-**Before**: manual filename-based versioning mess with ad hoc conventions — -prone to human error +**Before**: manual filename-based versioning with ad hoc conventions — prone to +human error 😕 -```dvc +```git . ├── data │ ├── 2019-04 │ │ └── raw - │ ├── 2019-10 - │ │ └── raw.txt - │ ├── 2020-03 - │ │ ├── raw.txt - │ ... └── labels.csv ++│ ├── 2019-10 ++│ │ └── raw.txt ++│ ├── 2020-03 ++│ │ ├── raw.txt ++│ ... └── labels.csv ├── model.h5 - ├── model_final.h5 ++├── model_final.h5 ├── training.py # Only file in Git ``` @@ -52,8 +53,8 @@ prone to human error
**After**: Lean DVC workspace that is easy to navigate. Only one version of the -data is shown along with the current code version. `dvc.yaml` and `.dvc` -metafiles replace all the complexity. +data is shown alongside the current code. `dvc.yaml` and `.dvc` metafiles +replace all the complexity. ```git . @@ -70,24 +71,24 @@ metafiles replace all the complexity.
-The bottom line is that your code doesn't need to read or write complicated -output file paths like `data/2019-10...`. Leave it to DVC to match the right -versions of code and data later 💘. +The bottom line is that your code doesn't need to figure out complicated output +file paths like `data/2019-10...`. Leave it to DVC to match the right versions +of code and data later 💘. -A regular `git` workflow can be used to create project +And now a regular `git` workflow can be used to create project [snapshots](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository) (commits), branches, etc. that encompass all the things (source code, data, and models): ```dvc -$ git add data.dvc data.yaml ... training.py +$ git add data.dvc dvc.* training.py $ git commit -m "First modeling experiment" $ git tag -a v1 -m "Model v1" ``` -DVC uses the metadata we put in Git as a proxy to the actual data -([stored separately](/doc/command-reference/cache)), and can rewind ⏪ or -fast-forward ⏩ the entire project based on it (see `dvc checkout`). +The metadata we put in Git points to the actual data +([stored separately](/doc/command-reference/cache)). DVC can rewind ⏪ or +fast-forward ⏩ the entire project based on that (see `dvc checkout`). ![](/img/versioning.png) _Full project restoration_ From 66b08294092dfa8ad6535b9edd13de45b20348d7 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Sat, 31 Oct 2020 11:45:49 -0600 Subject: [PATCH 54/95] cases: next iteration of Versioning page per private feedback. Some issues may still be outstanding, will send smalles commits next --- .../versioning-data-and-model-files/index.md | 107 ++++++++++-------- 1 file changed, 59 insertions(+), 48 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 2020ef51da..c148fa40d1 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -3,36 +3,22 @@ Data science teams today face data management questions around versioning datasets, data artifacts, and machine learning models. How do we keep track of changes in data, code, and ML models? What’s the best way to organize and store -multiple versions of data files for safe, persistent access? How can the -intertwined lifecycles of data and models be followed and enforced? +multiple versions of data and model files? How can data lifecycles be defined +and enforced? ![](/img/data_ver_complex.png) _Exponential complexity of DS projects_ -DVC proposes to _codify_ data projects in order to adopt existing engineering -tools like Git -[version control](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control), -continuous integration (CI), and other best practices that improve productivity. -This means writing a description of which data, ML artifacts, etc. should be in -the environment at a given time. DVC can restore the workspace -files and directories (from a separate data storage) to match that description. - -Data versioning lets us identify exact research inputs later, so anyone can -understand and reproduce results. DVC brings additional benefits on top of that: -make projects easier to work on by separating code from data (which also -increases data persistence); enforce lifecycle and security policies by having -all changes go though a Git repo (immutable history); collaborate with a toolset -everyone is familiar with (data scientists, engineers, managers), and others -(see [Get Started](/doc/start)). - -But how does DVC look & feel? First we replaces large data files and directories -with tiny, human-readable [metafiles](/doc/user-guide/dvc-files-and-directories) -that can be versioned using Git. +Let's see if DVC can help 😉. How about we agree NOT to complicate things with +ad hoc conventions when naming changed data files and directories? Check! DVC +captures the contents of datasets, intermediate results, and ML models +automatically when you create snapshots of the project +[with Git](<(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)>) +(commits, branches, etc.).
-**Before**: manual filename-based versioning with ad hoc conventions — prone to -human error 😕 +**Before**: manual filename versioning — error-prone ```git . @@ -43,58 +29,83 @@ human error 😕 +│ │ └── raw.txt +│ ├── 2020-03 +│ │ ├── raw.txt -+│ ... └── labels.csv ++│ │ └── labels.csv ++│ ... ├── model.h5 ++├── model_20200421.h5 +├── model_final.h5 - ├── training.py # Only file in Git + └── training.py ```
-**After**: Lean DVC workspace that is easy to navigate. Only one version of the -data is shown alongside the current code. `dvc.yaml` and `.dvc` metafiles -replace all the complexity. +**After**: Lean workspace that's easy to navigate. Only one version +of the data is shown alongside the current code. + +```dvc +$ git checkout v1 +``` ```git . ++├── .dvc ├── data │ ├── raw.txt │ └── labels.csv - ... -+├── data.dvc # in Git -+├── dvc.yaml # in Git ├── model.h5 - ├── training.py # in Git + └── training.py ``` +DVC +[hides](/doc/user-guide/dvc-files-and-directories#internal-directories-and-files) +the complexity and matches the right versions of code and data for you 💘. +
-The bottom line is that your code doesn't need to figure out complicated output -file paths like `data/2019-10...`. Leave it to DVC to match the right versions -of code and data later 💘. +> 💡 A side benefit of this approach is that your code doesn't need to figure +> out variable file paths like `data/2019/words_final`. Coding is decoupled from +> data management. -And now a regular `git` workflow can be used to create project -[snapshots](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository) -(commits), branches, etc. that encompass all the things (source code, data, and -models): +## What magic is this? 🧞 -```dvc -$ git add data.dvc dvc.* training.py -$ git commit -m "First modeling experiment" -$ git tag -a v1 -m "Model v1" -``` +We won't go too deep into how DVC works here, since we have many +[guides](/doc/user-guide) and [references](/doc/command-reference) that explain +the mechanics in detail, but here's the gist of it: Data versioning is achieved +through _codification_. This means producing a description of which data, ML +artifacts, etc. should be in the environment at any given time (matching the +code commits). -The metadata we put in Git points to the actual data -([stored separately](/doc/command-reference/cache)). DVC can rewind ⏪ or -fast-forward ⏩ the entire project based on that (see `dvc checkout`). +The codified description consists of tiny `.dvc` files (among other +[metafiles](/doc/user-guide/dvc-files-and-directories)) in the workspace that +point to the data files and directories +([stored separately](/doc/command-reference/cache)). We can put this metadata in +Git instead of the actual data, and DVC can rewind ⏪ or fast-forward ⏩ the +entire project based on it (see `dvc checkout`). ![](/img/versioning.png) _Full project restoration_ -> For more hands-on experience, please follow the +Data and models use the same immutable change history as code now (Git commit), +so you can [semver](https://semver.org/) the project as a whole (as is typical +in software engineering). + +> 🔍 For more hands-on experience, please follow the > [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial). +## Benefits of DVC + +- Identify exact research inputs to understand and reproduce past results: just + restore the desired project version, and find the file(s) in question. +- adopt existing engineering tools like Git SCM, continuous integration (CI), + and other best practices that improve productivity. +- Make data-centric projects easier to work on by separating code from data, + which also increases data persistence. +- Collaborate with a toolset everyone is familiar with (data scientists, + engineers, managers), and others (see [Get Started](/doc/start)). +- Enforce lifecycle and security policies by having all changes go though a Git + repo. + In summary, data science and machine learning are iterative processes where the lifecycles of data, code, and ML models occur at different paces. DVC's unique _data-as-code_ approach helps integrate and manage them effectively. From aa6c43efc3e46c1b16368355213393171ba46a28 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Tue, 3 Nov 2020 09:01:24 -0800 Subject: [PATCH 55/95] cases: polishing my last iteration of the Vsng page --- content/docs/use-cases/data-registries.md | 3 +-- content/docs/use-cases/index.md | 23 ++++++++++--------- .../versioning-data-and-model-files/index.md | 11 +++++---- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/content/docs/use-cases/data-registries.md b/content/docs/use-cases/data-registries.md index 1e56175028..82ea2bf244 100644 --- a/content/docs/use-cases/data-registries.md +++ b/content/docs/use-cases/data-registries.md @@ -34,8 +34,7 @@ are some of it's advantages: requests, reviews, and even CI/CD for your data and models lifecycle. Think "Git for cloud storage", but without ad-hoc conventions. - Security: registries can be setup with read-only remote storage (e.g. an HTTP - server). And [DVC metafiles](/doc/user-guide/dvc-files-and-directories) enable - auditing data changes. + server). ## Building registries diff --git a/content/docs/use-cases/index.md b/content/docs/use-cases/index.md index be44ca7d79..55933d74d5 100644 --- a/content/docs/use-cases/index.md +++ b/content/docs/use-cases/index.md @@ -1,16 +1,16 @@ # Use Cases -We provide short articles on common ML workflow and data science use cases that -DVC can help with or improve. Our use cases are not written to be run end-to-end -like tutorials. For more general, hands-on experience with DVC, please see +We provide short articles on common data science scenarios that DVC can help +with or improve. Our use cases are not written to be run end-to-end like +tutorials. For more general, hands-on experience with DVC, please see [Get Started](/doc/tutorials/get-started) instead. ## Why DVC? -Even with all the success we've seen today in machine learning (ML), especially -with deep learning and its applications in business, data scientists still lack -best practices for organizing their projects and collaborating effectively. This -is a critical challenge: while ML algorithms and methods are no longer tribal +Even with all the success we've seen today in machine learning, especially with +deep learning and its applications in business, data scientists still lack best +practices for organizing their projects and collaborating effectively. This is a +critical challenge: while ML algorithms and methods are no longer tribal knowledge, they are still difficult to implement, reuse, and manage. ## Basic uses of DVC @@ -19,11 +19,12 @@ If you store and process data files or datasets to produce other data or machine learning models, and you want to - track and save data and machine learning models the same way you capture code; -- create and switch among different versions of data or models easily; +- create and switch between + [versions of data and ML models](/doc/use-cases/versioning-data-and-model-files) + easily; - understand how datasets and ML artifacts were built in the first place; -- compare ML models and metrics among [experiments](/doc/start/experiments); -- bring tools and best practices from software engineering to your data science - projects; +- compare model metrics among [experiments](/doc/start/experiments); +- adopt engineering tools and best practices in data science projects; DVC is for you! diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index c148fa40d1..9f561ba60a 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -86,14 +86,14 @@ entire project based on it (see `dvc checkout`). ![](/img/versioning.png) _Full project restoration_ -Data and models use the same immutable change history as code now (Git commit), -so you can [semver](https://semver.org/) the project as a whole (as is typical -in software engineering). +Data and models use the same change history as code now (Git commit), so you can +[semver](https://semver.org/) the project as a whole (as is typical in software +engineering). > 🔍 For more hands-on experience, please follow the > [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial). -## Benefits of DVC +## Benefits of Data Version Control - Identify exact research inputs to understand and reproduce past results: just restore the desired project version, and find the file(s) in question. @@ -104,7 +104,8 @@ in software engineering). - Collaborate with a toolset everyone is familiar with (data scientists, engineers, managers), and others (see [Get Started](/doc/start)). - Enforce lifecycle and security policies by having all changes go though a Git - repo. + repo. This immutable change history enables auditing changes to data and + models. In summary, data science and machine learning are iterative processes where the lifecycles of data, code, and ML models occur at different paces. DVC's unique From 3c61ea77a01cda8e72cc39740c39c6411d05ea11 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Tue, 3 Nov 2020 19:32:46 -0800 Subject: [PATCH 56/95] remove a bunch of info from Vrsng to simplify again --- .../versioning-data-and-model-files/index.md | 59 +++++++----------- static/img/versioning.png | Bin 125557 -> 0 bytes 2 files changed, 22 insertions(+), 37 deletions(-) delete mode 100644 static/img/versioning.png diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 9f561ba60a..40a6b40216 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -10,15 +10,15 @@ and enforced? Let's see if DVC can help 😉. How about we agree NOT to complicate things with ad hoc conventions when naming changed data files and directories? Check! DVC -captures the contents of datasets, intermediate results, and ML models -automatically when you create snapshots of the project +can capture the contents of datasets, intermediate results, and ML models as +project snapshots are created [with Git](<(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)>) (commits, branches, etc.).
-**Before**: manual filename versioning — error-prone +**Before**: multiple filename versions — inefficient and error-prone ```git . @@ -29,12 +29,13 @@ automatically when you create snapshots of the project +│ │ └── raw.txt +│ ├── 2020-03 +│ │ ├── raw.txt -+│ │ └── labels.csv ++│ │ └── features.csv +│ ... ├── model.h5 +├── model_20200421.h5 +├── model_final.h5 - └── training.py + └── src + └── training.py ```
@@ -52,9 +53,10 @@ $ git checkout v1 +├── .dvc ├── data │ ├── raw.txt - │ └── labels.csv + │ └── features.csv ├── model.h5 - └── training.py + └── src + └── training.py ``` DVC @@ -64,36 +66,23 @@ the complexity and matches the right versions of code and data for you 💘.
-> 💡 A side benefit of this approach is that your code doesn't need to figure -> out variable file paths like `data/2019/words_final`. Coding is decoupled from -> data management. +We won't go too deep into how it works here, since we have many +[guides](/doc/user-guide) and [references](/doc/command-reference) for that, but +here's the gist of it: DVC enables data _versioning through codification_. This +means producing a description of which data, ML artifacts, etc. should be in the +environment at any given time. -## What magic is this? 🧞 +![](/img/404.png) _Data as code_ -We won't go too deep into how DVC works here, since we have many -[guides](/doc/user-guide) and [references](/doc/command-reference) that explain -the mechanics in detail, but here's the gist of it: Data versioning is achieved -through _codification_. This means producing a description of which data, ML -artifacts, etc. should be in the environment at any given time (matching the -code commits). - -The codified description consists of tiny `.dvc` files (among other -[metafiles](/doc/user-guide/dvc-files-and-directories)) in the workspace that -point to the data files and directories -([stored separately](/doc/command-reference/cache)). We can put this metadata in -Git instead of the actual data, and DVC can rewind ⏪ or fast-forward ⏩ the -entire project based on it (see `dvc checkout`). - -![](/img/versioning.png) _Full project restoration_ - -Data and models use the same change history as code now (Git commit), so you can -[semver](https://semver.org/) the project as a whole (as is typical in software -engineering). - -> 🔍 For more hands-on experience, please follow the +> 👩‍💻 To try data versioning with DVC hands-on, please follow the > [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial). -## Benefits of Data Version Control +With this approach, your source code doesn't need to figure out variable file +paths like `data/2019/words_final`. Only the actual processing code and +[hyperparameters](/doc/command-reference/params) change between commits, while +file paths remain stable. + +Here are other major benefits of DVC: - Identify exact research inputs to understand and reproduce past results: just restore the desired project version, and find the file(s) in question. @@ -106,7 +95,3 @@ engineering). - Enforce lifecycle and security policies by having all changes go though a Git repo. This immutable change history enables auditing changes to data and models. - -In summary, data science and machine learning are iterative processes where the -lifecycles of data, code, and ML models occur at different paces. DVC's unique -_data-as-code_ approach helps integrate and manage them effectively. diff --git a/static/img/versioning.png b/static/img/versioning.png deleted file mode 100644 index 1b92fcb0b5861142e755128bc1a9d6bbc561d09c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125557 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 U$Mo==iwr>E>FVdQ&MBb@0PRFz!vFvP From b74e687049578637be367e24265172d979aeb336 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 4 Nov 2020 17:14:45 -0800 Subject: [PATCH 57/95] cases: minor iteration of Vrsng, pending benefits list --- .../versioning-data-and-model-files/index.md | 54 +++++++++++-------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 40a6b40216..3952349358 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -2,18 +2,19 @@ Data science teams today face data management questions around versioning datasets, data artifacts, and machine learning models. How do we keep track of -changes in data, code, and ML models? What’s the best way to organize and store +changes in data, code, and ML models? What's the best way to organize and store multiple versions of data and model files? How can data lifecycles be defined and enforced? ![](/img/data_ver_complex.png) _Exponential complexity of DS projects_ -Let's see if DVC can help 😉. How about we agree NOT to complicate things with -ad hoc conventions when naming changed data files and directories? Check! DVC -can capture the contents of datasets, intermediate results, and ML models as -project snapshots are created -[with Git](<(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)>) -(commits, branches, etc.). +Let's see if DVC can help. Can we avoid ad hoc naming conventions for changed +data files and directories? Check! ✔️ DVC captures the contents of datasets, +intermediate results, and ML models as project snapshots are created +([Git commits](<(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)>)). +✔️ All these versions of the data are +[stored separately](/doc/user-guide/dvc-files-and-directories#structure-of-the-cache-directory) +in an efficient way that prevents file duplication.
@@ -59,39 +60,48 @@ $ git checkout v1 └── training.py ``` -DVC -[hides](/doc/user-guide/dvc-files-and-directories#internal-directories-and-files) -the complexity and matches the right versions of code and data for you 💘. +DVC hides the complexity and matches the right versions of code and data for you +💘.
-We won't go too deep into how it works here, since we have many +We won't go too deep into how everything works here, since we have many [guides](/doc/user-guide) and [references](/doc/command-reference) for that, but here's the gist of it: DVC enables data _versioning through codification_. This means producing a description of which data, ML artifacts, etc. should be in the -environment at any given time. +environment at any given time. It consists of special +[metafiles](/doc/user-guide/dvc-files-and-directories) that we can put in Git +along with the source code. ![](/img/404.png) _Data as code_ -> 👩‍💻 To try data versioning with DVC hands-on, please follow the -> [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial). - -With this approach, your source code doesn't need to figure out variable file -paths like `data/2019/words_final`. Only the actual processing code and -[hyperparameters](/doc/command-reference/params) change between commits, while -file paths remain stable. +This way data and models use the same change history as code, so you can +[semver](https://semver.org/) the project as a whole (as normally done in +software engineering). DVC can rewind ⏪ or fast-forward ⏩ the data needed for +your project based on the metadata in Git, letting you focus on data science +instead of moving data around! -Here are other major benefits of DVC: +Other major benefits of Data Version Control: - Identify exact research inputs to understand and reproduce past results: just - restore the desired project version, and find the file(s) in question. -- adopt existing engineering tools like Git SCM, continuous integration (CI), + restore the desired project version, and find the data you need. +- Adopt existing engineering tools like Git SCM, continuous integration (CI), and other best practices that improve productivity. - Make data-centric projects easier to work on by separating code from data, which also increases data persistence. +- Your code doesn't need to figure out complicated file paths like + `data/2019/labels_v2_final`. You can focus on writing code and doing data + science. - Collaborate with a toolset everyone is familiar with (data scientists, engineers, managers), and others (see [Get Started](/doc/start)). - Enforce lifecycle and security policies by having all changes go though a Git repo. This immutable change history enables auditing changes to data and models. + +> 👩‍💻 To try hands-on data versioning with DVC, please follow the +> [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial). + +In summary, data science and machine learning are iterative processes where the +lifecycles of data, code, and ML models occur at different paces. DVC helps +integrate and manage them effectively. From f02c1a7d982d9bff979a0ac0298c73e7de3cd53f Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Thu, 5 Nov 2020 10:30:55 -0800 Subject: [PATCH 58/95] guide: updates to What is DVC per https://github.com/iterative/dvc.org/pull/1747#pullrequestreview-521165841 and https://github.com/iterative/dvc.org/pull/1747#pullrequestreview-521165872 --- content/docs/user-guide/what-is-dvc.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/content/docs/user-guide/what-is-dvc.md b/content/docs/user-guide/what-is-dvc.md index adcb39d742..7e92379f90 100644 --- a/content/docs/user-guide/what-is-dvc.md +++ b/content/docs/user-guide/what-is-dvc.md @@ -48,7 +48,7 @@ can version experiments, manage large datasets, and make projects reproducible. > Git servers, as well as SSH and cloud storage providers are supported, > however. -## DVC is not Git! +## DVC does not replace Git! DVC metafiles such as `dvc.yaml` and `.dvc` files serve as placeholders to track large data files and directories for versioning (among other @@ -58,7 +58,6 @@ along with your data, and you can use Git to place them under as a proxy to the actual data versions, which are stored in the DVC cache (outside of Git). This does not replace features of Git. -DVC does, however, provide several commands that are somewhat analogous to their -Git counterparts, and that interact with the underlying Git repo (if one is -being used, which is not required). For example: `dvc init`, `dvc add`, -`dvc checkout`, `dvc push`, among others. +DVC does, however, provide several commands similar to Git such as `dvc init`, +`dvc add`, `dvc checkout`, or `dvc push`, which interact with the underlying Git +repo (if one is being used, which is not required). From 63970bc64c1e9a9daab583a40e3e651c606ed805 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Thu, 5 Nov 2020 11:40:41 -0800 Subject: [PATCH 59/95] cmd: roll-back unrelated changes (stashed elsewhere for now) per https://github.com/iterative/dvc.org/pull/1747#pullrequestreview-521165575 and https://github.com/iterative/dvc.org/pull/1747#pullrequestreview-521165604 --- content/docs/command-reference/cache/index.md | 2 +- content/docs/command-reference/index.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/content/docs/command-reference/cache/index.md b/content/docs/command-reference/cache/index.md index 0117e2b4f7..f9c1bc91f4 100644 --- a/content/docs/command-reference/cache/index.md +++ b/content/docs/command-reference/cache/index.md @@ -25,7 +25,7 @@ Learn more about it's > [File link types](/doc/user-guide/large-dataset-optimization#file-link-types-for-the-dvc-cache) > for more information on file links on different platforms. -For cache configuration options, refer to `dvc config cache`. +> For more cache-related configuration options refer to `dvc config cache`. ## Options diff --git a/content/docs/command-reference/index.md b/content/docs/command-reference/index.md index 70f3187396..6f70ce2816 100644 --- a/content/docs/command-reference/index.md +++ b/content/docs/command-reference/index.md @@ -14,10 +14,10 @@ does not change directories in your terminal). `dvc init`. - Copy data files or dataset directories for modeling into the repository, and track them with DVC using the `dvc add` command. -- Process the data with your own source code, using `dvc.yaml` and/or the +- Process raw data with your own source code, using `dvc.yaml` and/or the `dvc run` command, specifying further outputs that should also be tracked by DVC after the code is executed. -- Sharing a DVC repository with the codified data +- Sharing a DVC repository with the codified ML [pipeline](/doc/command-reference/dag) will not include the project's cache. Use [remote storage](/doc/command-reference/remote) and `dvc push` to share this cache (data tracked by DVC). From e6ce632c1608d4e50130166521ac24708c8c620c Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Thu, 5 Nov 2020 12:07:01 -0800 Subject: [PATCH 60/95] cases: work on benefits of Vrsng --- .../versioning-data-and-model-files/index.md | 31 +++++++++--------- static/img/data-as-code.png | Bin 0 -> 17766 bytes 2 files changed, 15 insertions(+), 16 deletions(-) create mode 100644 static/img/data-as-code.png diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 3952349358..fdbb77961e 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -74,34 +74,33 @@ environment at any given time. It consists of special [metafiles](/doc/user-guide/dvc-files-and-directories) that we can put in Git along with the source code. -![](/img/404.png) _Data as code_ +![](/img/data-as-code.png) _Data as code_ This way data and models use the same change history as code, so you can [semver](https://semver.org/) the project as a whole (as normally done in software engineering). DVC can rewind ⏪ or fast-forward ⏩ the data needed for your project based on the metadata in Git, letting you focus on data science -instead of moving data around! +instead of moving files around! -Other major benefits of Data Version Control: +Major benefits of Data Version Control: -- Identify exact research inputs to understand and reproduce past results: just - restore the desired project version, and find the data you need. +- Restore any project version and find the data you need instantly: Identifying + research inputs to understand and reproduce past results is made easy. +- No need to figure out complicated file paths like `data/2019/labels_v2_final` + in your code. - Adopt existing engineering tools like Git SCM, continuous integration (CI), - and other best practices that improve productivity. + and other best practices that improve collaboration and productivity. +- Having a separate project storage let's you easily + [share data and models](/doc/use-cases/sharing-data-and-model-files). - Make data-centric projects easier to work on by separating code from data, which also increases data persistence. -- Your code doesn't need to figure out complicated file paths like - `data/2019/labels_v2_final`. You can focus on writing code and doing data - science. -- Collaborate with a toolset everyone is familiar with (data scientists, - engineers, managers), and others (see [Get Started](/doc/start)). -- Enforce lifecycle and security policies by having all changes go though a Git - repo. This immutable change history enables auditing changes to data and +- Enforce lifecycle policies by having a defined process to change data and models. - -> 👩‍💻 To try hands-on data versioning with DVC, please follow the -> [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial). +- The project's immutable change history enables data security audits. In summary, data science and machine learning are iterative processes where the lifecycles of data, code, and ML models occur at different paces. DVC helps integrate and manage them effectively. + +> 👩‍💻 To try hands-on data versioning with DVC, please follow the +> [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial). diff --git a/static/img/data-as-code.png b/static/img/data-as-code.png new file mode 100644 index 0000000000000000000000000000000000000000..39354b76c05b076f627161cfec0e47fce1012c71 GIT binary patch literal 17766 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 Date: Thu, 5 Nov 2020 12:24:29 -0800 Subject: [PATCH 61/95] cases: more work on benefits of Vrsng --- .../versioning-data-and-model-files/index.md | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index fdbb77961e..645426c036 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -78,29 +78,28 @@ along with the source code. This way data and models use the same change history as code, so you can [semver](https://semver.org/) the project as a whole (as normally done in -software engineering). DVC can rewind ⏪ or fast-forward ⏩ the data needed for +software engineering). DVC can rewind ⏪ or ⏩ fast-forward the data needed for your project based on the metadata in Git, letting you focus on data science instead of moving files around! +> To try hands-on data versioning with DVC, please follow the +> [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) +> 👩‍💻. + Major benefits of Data Version Control: -- Restore any project version and find the data you need instantly: Identifying - research inputs to understand and reproduce past results is made easy. -- No need to figure out complicated file paths like `data/2019/labels_v2_final` - in your code. -- Adopt existing engineering tools like Git SCM, continuous integration (CI), +- ⏲️ Restore any project version and find the data you need instantly. Now you + can always identify past research inputs to understand and reproduce the + results! +- 📜 No need for complicated file paths like `data/2019/labels_v7_final` in your + code. +- ⚙️ Adopt existing engineering tools like Git SCM, continuous integration (CI), and other best practices that improve collaboration and productivity. -- Having a separate project storage let's you easily - [share data and models](/doc/use-cases/sharing-data-and-model-files). -- Make data-centric projects easier to work on by separating code from data, - which also increases data persistence. -- Enforce lifecycle policies by having a defined process to change data and - models. -- The project's immutable change history enables data security audits. +- 🤝 A separate data storage increases persistence, and allows + [sharing data and models](/doc/use-cases/sharing-data-and-model-files) easily. +- 💂 Enforce lifecycle policies by having a defined process to change data and + models. Data security audits, anyone? In summary, data science and machine learning are iterative processes where the lifecycles of data, code, and ML models occur at different paces. DVC helps integrate and manage them effectively. - -> 👩‍💻 To try hands-on data versioning with DVC, please follow the -> [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial). From aeacb1fc204fceba3a7bc8cdc2fd46f20497c025 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Mon, 9 Nov 2020 19:08:10 -0800 Subject: [PATCH 62/95] cases: remove emojis; improve benefits list; add refs to other cases --- .../versioning-data-and-model-files/index.md | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 645426c036..5fd9ade4b3 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -9,10 +9,10 @@ and enforced? ![](/img/data_ver_complex.png) _Exponential complexity of DS projects_ Let's see if DVC can help. Can we avoid ad hoc naming conventions for changed -data files and directories? Check! ✔️ DVC captures the contents of datasets, +data files and directories? Yes: DVC captures the contents of datasets, intermediate results, and ML models as project snapshots are created ([Git commits](<(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)>)). -✔️ All these versions of the data are +And all these versions of the data are [stored separately](/doc/user-guide/dvc-files-and-directories#structure-of-the-cache-directory) in an efficient way that prevents file duplication. @@ -88,16 +88,18 @@ instead of moving files around! Major benefits of Data Version Control: -- ⏲️ Restore any project version and find the data you need instantly. Now you - can always identify past research inputs to understand and reproduce the - results! -- 📜 No need for complicated file paths like `data/2019/labels_v7_final` in your +- Restore any project version and find the data you need instantly. Now you can + always identify past research inputs to understand and reproduce the results! +- No need for complicated file paths like `data/2019/labels_v7_final` in your code. -- ⚙️ Adopt existing engineering tools like Git SCM, continuous integration (CI), - and other best practices that improve collaboration and productivity. -- 🤝 A separate data storage increases persistence, and allows - [sharing data and models](/doc/use-cases/sharing-data-and-model-files) easily. -- 💂 Enforce lifecycle policies by having a defined process to change data and +- Adopt existing engineering tools like Git SCM, continuous integration (CI) + such as [CML](https://cml.dev/), and other best practices that improve + collaboration and productivity. +- A separate data storage increases persistence, and allows + [sharing data and models](/doc/use-cases/sharing-data-and-model-files) easily + You can even build a [data registry](/doc/use-cases/data-registries) or a + [model zoo](/doc/api-reference/open). +- Enforce lifecycle policies by having a defined process to change data and models. Data security audits, anyone? In summary, data science and machine learning are iterative processes where the From 39565909ca3004677f64a7123fea4216537063c9 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Mon, 9 Nov 2020 20:25:33 -0800 Subject: [PATCH 63/95] cses: clarify about cache and about metafiles in Versioning --- .../versioning-data-and-model-files/index.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 5fd9ade4b3..698f15a8b1 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -9,12 +9,12 @@ and enforced? ![](/img/data_ver_complex.png) _Exponential complexity of DS projects_ Let's see if DVC can help. Can we avoid ad hoc naming conventions for changed -data files and directories? Yes: DVC captures the contents of datasets, +data files and directories? Yes: DVC stores the contents of datasets, intermediate results, and ML models as project snapshots are created ([Git commits](<(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)>)). -And all these versions of the data are -[stored separately](/doc/user-guide/dvc-files-and-directories#structure-of-the-cache-directory) -in an efficient way that prevents file duplication. +All these versions of the data are +[cached](/doc/user-guide/dvc-files-and-directories#structure-of-the-cache-directory) +outside of Git in an efficient way that prevents file duplication.
@@ -69,8 +69,8 @@ DVC hides the complexity and matches the right versions of code and data for you We won't go too deep into how everything works here, since we have many [guides](/doc/user-guide) and [references](/doc/command-reference) for that, but here's the gist of it: DVC enables data _versioning through codification_. This -means producing a description of which data, ML artifacts, etc. should be in the -environment at any given time. It consists of special +means describing which data, ML artifacts, etc. should be in the environment at +any given time. It's achieved with special [metafiles](/doc/user-guide/dvc-files-and-directories) that we can put in Git along with the source code. @@ -95,10 +95,10 @@ Major benefits of Data Version Control: - Adopt existing engineering tools like Git SCM, continuous integration (CI) such as [CML](https://cml.dev/), and other best practices that improve collaboration and productivity. -- A separate data storage increases persistence, and allows - [sharing data and models](/doc/use-cases/sharing-data-and-model-files) easily - You can even build a [data registry](/doc/use-cases/data-registries) or a - [model zoo](/doc/api-reference/open). +- Independent storage (DVC cache) increases data persistence, and + allows [sharing data and models](/doc/use-cases/sharing-data-and-model-files) + easily You can even build a [data registry](/doc/use-cases/data-registries) or + a [model zoo](/doc/api-reference/open). - Enforce lifecycle policies by having a defined process to change data and models. Data security audits, anyone? From eeccb681c4367742346c1d56a7f116e58eaeed96 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Mon, 9 Nov 2020 20:34:20 -0800 Subject: [PATCH 64/95] cases: simplify p about roll back/fwds; split benefit about data regs --- .../versioning-data-and-model-files/index.md | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 698f15a8b1..f67c9f7eaa 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -76,29 +76,30 @@ along with the source code. ![](/img/data-as-code.png) _Data as code_ -This way data and models use the same change history as code, so you can -[semver](https://semver.org/) the project as a whole (as normally done in -software engineering). DVC can rewind ⏪ or ⏩ fast-forward the data needed for -your project based on the metadata in Git, letting you focus on data science -instead of moving files around! - > To try hands-on data versioning with DVC, please follow the > [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) > 👩‍💻. +This way data the change history of the the whole project (data and code) is in +Git. DVC can rewind ⏪ or ⏩ fast-forward the data needed for your project based +on the metadata in Git. You can focus on data science instead of moving files +around! + Major benefits of Data Version Control: - Restore any project version and find the data you need instantly. Now you can always identify past research inputs to understand and reproduce the results! - No need for complicated file paths like `data/2019/labels_v7_final` in your code. -- Adopt existing engineering tools like Git SCM, continuous integration (CI) - such as [CML](https://cml.dev/), and other best practices that improve - collaboration and productivity. +- Adopt existing engineering tools like Git SCM, [semver](https://semver.org/), + continuous integration (CI) such as [CML](https://cml.dev/), and other best + practices that improve collaboration and productivity. - Independent storage (DVC cache) increases data persistence, and allows [sharing data and models](/doc/use-cases/sharing-data-and-model-files) - easily You can even build a [data registry](/doc/use-cases/data-registries) or - a [model zoo](/doc/api-reference/open). + easily. +- Enable specialized project patterns such as + [data registries](/doc/use-cases/data-registries) and + [model zoos](/doc/api-reference/open). - Enforce lifecycle policies by having a defined process to change data and models. Data security audits, anyone? From 00b88e14671cb1ecfc00c615d37d14c84bdaffda Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Tue, 10 Nov 2020 18:14:07 -0800 Subject: [PATCH 65/95] cases: change BEFORE to be similar to the top fig. --- .../versioning-data-and-model-files/index.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index f67c9f7eaa..69c895ab65 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -24,17 +24,17 @@ outside of Git in an efficient way that prevents file duplication. ```git . ├── data - │ ├── 2019-04 - │ │ └── raw -+│ ├── 2019-10 -+│ │ └── raw.txt -+│ ├── 2020-03 -+│ │ ├── raw.txt -+│ │ └── features.csv -+│ ... + │ ├── raw ++│ ├── raw_v2.txt ++│ ├── feats_1.tsv ++│ ├── feats_2.csv ++│ ├── ... ├── model.h5 ++├── model_py.pkl ++├── model_2_2 +├── model_20200421.h5 +├── model_final.h5 ++├── ... └── src └── training.py ``` From 702d61977df1dbdb23cba7bc1d4da06d1ef39f36 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Thu, 12 Nov 2020 19:20:18 -0800 Subject: [PATCH 66/95] cases: another iteration of Versioning --- .../versioning-data-and-model-files/index.md | 87 ++++-------------- static/img/data-as-code.png | Bin 17766 -> 0 bytes static/img/ml-pipeline-evolution.png | Bin 0 -> 48934 bytes 3 files changed, 20 insertions(+), 67 deletions(-) delete mode 100644 static/img/data-as-code.png create mode 100644 static/img/ml-pipeline-evolution.png diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 69c895ab65..0f1e160e59 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -8,63 +8,19 @@ and enforced? ![](/img/data_ver_complex.png) _Exponential complexity of DS projects_ -Let's see if DVC can help. Can we avoid ad hoc naming conventions for changed -data files and directories? Yes: DVC stores the contents of datasets, -intermediate results, and ML models as project snapshots are created +Let's see if DVC can help. First, let's avoid ad hoc naming conventions for +changing data files and directories. For this, DVC stores the contents of +datasets, intermediate results, and ML models under the same file name, as +project snapshots are created ([Git commits](<(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)>)). + All these versions of the data are [cached](/doc/user-guide/dvc-files-and-directories#structure-of-the-cache-directory) -outside of Git in an efficient way that prevents file duplication. - -
-
- -**Before**: multiple filename versions — inefficient and error-prone - -```git - . - ├── data - │ ├── raw -+│ ├── raw_v2.txt -+│ ├── feats_1.tsv -+│ ├── feats_2.csv -+│ ├── ... - ├── model.h5 -+├── model_py.pkl -+├── model_2_2 -+├── model_20200421.h5 -+├── model_final.h5 -+├── ... - └── src - └── training.py -``` - -
-
- -**After**: Lean workspace that's easy to navigate. Only one version -of the data is shown alongside the current code. - -```dvc -$ git checkout v1 -``` - -```git - . -+├── .dvc - ├── data - │ ├── raw.txt - │ └── features.csv - ├── model.h5 - └── src - └── training.py -``` - -DVC hides the complexity and matches the right versions of code and data for you -💘. +outside of Git in an efficient way that prevents file duplication. Only one +version of the data is in the workspace at any given time (alongside the +corresponding code). DVC matches the right versions of code and data for you 💘. -
-
+![](/img/ml-pipeline-evolution.png) _Evolution of an ML project_ We won't go too deep into how everything works here, since we have many [guides](/doc/user-guide) and [references](/doc/command-reference) for that, but @@ -74,23 +30,16 @@ any given time. It's achieved with special [metafiles](/doc/user-guide/dvc-files-and-directories) that we can put in Git along with the source code. -![](/img/data-as-code.png) _Data as code_ +This way the change history of the the whole project (data and code) is in Git. +DVC can rewind or fast-forward the data ⏪ ⏩ as needed, based on the metadata +in Git. Now you can focus on data science instead of moving files around! -> To try hands-on data versioning with DVC, please follow the -> [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) -> 👩‍💻. - -This way data the change history of the the whole project (data and code) is in -Git. DVC can rewind ⏪ or ⏩ fast-forward the data needed for your project based -on the metadata in Git. You can focus on data science instead of moving files -around! - -Major benefits of Data Version Control: +Let's summarize the benefits of Data Version Control: -- Restore any project version and find the data you need instantly. Now you can - always identify past research inputs to understand and reproduce the results! +- Restore any project version and find the data you need instantly. You can + always identify past research inputs to understand and reproduce the results. - No need for complicated file paths like `data/2019/labels_v7_final` in your - code. + projects. - Adopt existing engineering tools like Git SCM, [semver](https://semver.org/), continuous integration (CI) such as [CML](https://cml.dev/), and other best practices that improve collaboration and productivity. @@ -103,6 +52,10 @@ Major benefits of Data Version Control: - Enforce lifecycle policies by having a defined process to change data and models. Data security audits, anyone? +> To try hands-on data versioning with DVC, please follow the +> [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) +> 👩‍💻. + In summary, data science and machine learning are iterative processes where the lifecycles of data, code, and ML models occur at different paces. DVC helps integrate and manage them effectively. diff --git a/static/img/data-as-code.png b/static/img/data-as-code.png deleted file mode 100644 index 39354b76c05b076f627161cfec0e47fce1012c71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17766 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 EKg{%ca{vGU literal 0 HcmV?d00001 From 00dc2d6105285e37e9aae69ae7511f310e8d5f12 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Thu, 12 Nov 2020 20:15:19 -0800 Subject: [PATCH 67/95] cases: simplify Versioning again --- .../versioning-data-and-model-files/index.md | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 0f1e160e59..9bbefde1e3 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -8,21 +8,23 @@ and enforced? ![](/img/data_ver_complex.png) _Exponential complexity of DS projects_ -Let's see if DVC can help. First, let's avoid ad hoc naming conventions for -changing data files and directories. For this, DVC stores the contents of -datasets, intermediate results, and ML models under the same file name, as -project snapshots are created -([Git commits](<(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)>)). +Data Version Control (DVC) can address these issues by helping you organize your +data and models like any other asset that can be captured with +[Git commits](<(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)>), +storing their historic versions automatically outside ot Git. DVC matches the +right versions of code and data for you 💘. -All these versions of the data are +Unique versions of data contents are [cached](/doc/user-guide/dvc-files-and-directories#structure-of-the-cache-directory) -outside of Git in an efficient way that prevents file duplication. Only one -version of the data is in the workspace at any given time (alongside the -corresponding code). DVC matches the right versions of code and data for you 💘. +under the same file name so you don't need to name them manually — this also +prevents storing duplicate files. Only one data version is placed in the +workspace at any given time (alongside the corresponding code). This way you can +worry about the current state of your data pipeline instead of on moving files +around. ![](/img/ml-pipeline-evolution.png) _Evolution of an ML project_ -We won't go too deep into how everything works here, since we have many +We won't go too deep into how it works here, since we have many [guides](/doc/user-guide) and [references](/doc/command-reference) for that, but here's the gist of it: DVC enables data _versioning through codification_. This means describing which data, ML artifacts, etc. should be in the environment at @@ -30,16 +32,16 @@ any given time. It's achieved with special [metafiles](/doc/user-guide/dvc-files-and-directories) that we can put in Git along with the source code. -This way the change history of the the whole project (data and code) is in Git. -DVC can rewind or fast-forward the data ⏪ ⏩ as needed, based on the metadata -in Git. Now you can focus on data science instead of moving files around! +> To try hands-on data versioning with DVC, please follow the +> [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) +> 👩‍💻. Let's summarize the benefits of Data Version Control: - Restore any project version and find the data you need instantly. You can always identify past research inputs to understand and reproduce the results. -- No need for complicated file paths like `data/2019/labels_v7_final` in your - projects. +- Avoid ad hoc naming conventions: No need for complicated file paths like + `data/2019/labels_v7_final` in your projects. - Adopt existing engineering tools like Git SCM, [semver](https://semver.org/), continuous integration (CI) such as [CML](https://cml.dev/), and other best practices that improve collaboration and productivity. @@ -52,10 +54,6 @@ Let's summarize the benefits of Data Version Control: - Enforce lifecycle policies by having a defined process to change data and models. Data security audits, anyone? -> To try hands-on data versioning with DVC, please follow the -> [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) -> 👩‍💻. - In summary, data science and machine learning are iterative processes where the lifecycles of data, code, and ML models occur at different paces. DVC helps integrate and manage them effectively. From 5edf5025e8621b5c5603f87eaa261a69a3dc8b20 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Fri, 13 Nov 2020 00:16:33 -0800 Subject: [PATCH 68/95] cases: improvements on Vrsng per direct feedback --- .../versioning-data-and-model-files/index.md | 60 +++++++++---------- 1 file changed, 27 insertions(+), 33 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 9bbefde1e3..6ce1041a39 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -2,9 +2,9 @@ Data science teams today face data management questions around versioning datasets, data artifacts, and machine learning models. How do we keep track of -changes in data, code, and ML models? What's the best way to organize and store -multiple versions of data and model files? How can data lifecycles be defined -and enforced? +changes in data, code, and ML models together? What's the best way to organize +and store multiple versions of data and model files? How can data lifecycles be +defined and enforced? ![](/img/data_ver_complex.png) _Exponential complexity of DS projects_ @@ -14,14 +14,6 @@ data and models like any other asset that can be captured with storing their historic versions automatically outside ot Git. DVC matches the right versions of code and data for you 💘. -Unique versions of data contents are -[cached](/doc/user-guide/dvc-files-and-directories#structure-of-the-cache-directory) -under the same file name so you don't need to name them manually — this also -prevents storing duplicate files. Only one data version is placed in the -workspace at any given time (alongside the corresponding code). This way you can -worry about the current state of your data pipeline instead of on moving files -around. - ![](/img/ml-pipeline-evolution.png) _Evolution of an ML project_ We won't go too deep into how it works here, since we have many @@ -29,30 +21,32 @@ We won't go too deep into how it works here, since we have many here's the gist of it: DVC enables data _versioning through codification_. This means describing which data, ML artifacts, etc. should be in the environment at any given time. It's achieved with special -[metafiles](/doc/user-guide/dvc-files-and-directories) that we can put in Git -along with the source code. - -> To try hands-on data versioning with DVC, please follow the -> [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) -> 👩‍💻. - -Let's summarize the benefits of Data Version Control: - -- Restore any project version and find the data you need instantly. You can - always identify past research inputs to understand and reproduce the results. -- Avoid ad hoc naming conventions: No need for complicated file paths like - `data/2019/labels_v7_final` in your projects. -- Adopt existing engineering tools like Git SCM, [semver](https://semver.org/), - continuous integration (CI) such as [CML](https://cml.dev/), and other best - practices that improve collaboration and productivity. -- Independent storage (DVC cache) increases data persistence, and - allows [sharing data and models](/doc/use-cases/sharing-data-and-model-files) - easily. -- Enable specialized project patterns such as +[metafiles](/doc/user-guide/dvc-files-and-directories) that can be put in Git. + +Only the desired data versions exist in the workspace at any given +time. This way you can worry about the current state of your +[data pipelines](/doc/command-reference/dag) instead of on moving files around — +to see how this looks and feels, try our +[versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) +👩‍💻. This approach bring the following benefits: + +- **Reproducibility**: Restore any project version and find the data you need + instantly. You can always identify past research inputs and understand the + results. +- **Simplify**: No need for ad hoc naming conventions like + `data/2019/labels_v7_final`. +- **Best practices**: Adopt existing engineering tools like Git SCM, + [semver](https://semver.org/), continuous integration (CI) such as + [CML](https://cml.dev/), etc. to improve collaboration and productivity. +- **Efficient storage**: Versions of data and models contents are + [cached](/doc/user-guide/dvc-files-and-directories#structure-of-the-cache-directory) + in a way that prevents file duplication and allows + [sharing them](/doc/use-cases/sharing-data-and-model-files) easily. +- **Specialize**: Implement useful project patterns such as [data registries](/doc/use-cases/data-registries) and [model zoos](/doc/api-reference/open). -- Enforce lifecycle policies by having a defined process to change data and - models. Data security audits, anyone? +- **Data security**: Enforce lifecycle policies by having a defined process to + change data and models. In summary, data science and machine learning are iterative processes where the lifecycles of data, code, and ML models occur at different paces. DVC helps From 21fce9b863a3bbbadd96a04dbeedf27691de9b2a Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Fri, 13 Nov 2020 01:12:25 -0800 Subject: [PATCH 69/95] cases: more updates to latest text and figures --- .../versioning-data-and-model-files/index.md | 39 ++++++++++-------- static/img/data-ver-complex.png | Bin 0 -> 59391 bytes static/img/data_ver_complex.png | Bin 34749 -> 0 bytes static/img/ml-pipeline-evolution.png | Bin 48934 -> 67767 bytes 4 files changed, 21 insertions(+), 18 deletions(-) create mode 100644 static/img/data-ver-complex.png delete mode 100644 static/img/data_ver_complex.png diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 6ce1041a39..bf7d0d7aaa 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -6,14 +6,18 @@ changes in data, code, and ML models together? What's the best way to organize and store multiple versions of data and model files? How can data lifecycles be defined and enforced? -![](/img/data_ver_complex.png) _Exponential complexity of DS projects_ +![](/img/data-ver-complex.png) _Traceability of data artifacts_ Data Version Control (DVC) can address these issues by helping you organize your -data and models like any other asset that can be captured with +data and models effectively and capture their versions in [Git commits](<(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)>), -storing their historic versions automatically outside ot Git. DVC matches the +while storing the actual data contents outside ot Git. DVC also matches the right versions of code and data for you 💘. +Only the desired data versions exist in the workspace at any given +time. This way you can worry about the current state of your +[data pipelines](/doc/command-reference/dag) instead of on moving files around. + ![](/img/ml-pipeline-evolution.png) _Evolution of an ML project_ We won't go too deep into how it works here, since we have many @@ -21,28 +25,27 @@ We won't go too deep into how it works here, since we have many here's the gist of it: DVC enables data _versioning through codification_. This means describing which data, ML artifacts, etc. should be in the environment at any given time. It's achieved with special -[metafiles](/doc/user-guide/dvc-files-and-directories) that can be put in Git. - -Only the desired data versions exist in the workspace at any given -time. This way you can worry about the current state of your -[data pipelines](/doc/command-reference/dag) instead of on moving files around — -to see how this looks and feels, try our +[metafiles](/doc/user-guide/dvc-files-and-directories) that can be put in Git — +to learn how this looks and feels, try our [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) -👩‍💻. This approach bring the following benefits: +👩‍💻. +This approach bring the following benefits: + +- **Simplicity**: No need for ad hoc naming conventions like + `data/2019/labels_v7_final`. - **Reproducibility**: Restore any project version and find the data you need - instantly. You can always identify past research inputs and understand the + instantly. Now you can always identify past research inputs and understand the results. -- **Simplify**: No need for ad hoc naming conventions like - `data/2019/labels_v7_final`. +- **Efficient storage**: Relevant versions of data contents are + [cached](/doc/user-guide/dvc-files-and-directories#structure-of-the-cache-directory) + automatically and in a way that prevents file duplication. +- [**Share**](/doc/use-cases/sharing-data-and-model-files): Data and models can + be easily pushed and pulled from online/cloud storage. - **Best practices**: Adopt existing engineering tools like Git SCM, [semver](https://semver.org/), continuous integration (CI) such as [CML](https://cml.dev/), etc. to improve collaboration and productivity. -- **Efficient storage**: Versions of data and models contents are - [cached](/doc/user-guide/dvc-files-and-directories#structure-of-the-cache-directory) - in a way that prevents file duplication and allows - [sharing them](/doc/use-cases/sharing-data-and-model-files) easily. -- **Specialize**: Implement useful project patterns such as +- **Specialization**: Implement useful project patterns such as [data registries](/doc/use-cases/data-registries) and [model zoos](/doc/api-reference/open). - **Data security**: Enforce lifecycle policies by having a defined process to diff --git a/static/img/data-ver-complex.png b/static/img/data-ver-complex.png new file mode 100644 index 0000000000000000000000000000000000000000..31fab0b217599e7c458cd0e5741a6112b27dc94c GIT binary patch literal 59391 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 N?x^3+zj^Q3{|95~Zg2nq literal 0 HcmV?d00001 diff --git a/static/img/data_ver_complex.png b/static/img/data_ver_complex.png deleted file mode 100644 index 442e1f70015525e97786bc16a4e49ee9dd5c7663..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34749 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 diff --git a/static/img/ml-pipeline-evolution.png b/static/img/ml-pipeline-evolution.png index 576f656cbb0ecd0c08f8966ae8536ff9c312d99f..f1882b0beb945f884ac8802c51d85cdd2acedfe0 100644 GIT binary patch literal 67767 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 EKg{%ca{vGU From 6cab1f3fad113c4c0ad9157583728247adaabd86 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Fri, 13 Nov 2020 23:19:37 -0800 Subject: [PATCH 70/95] cases: rephrase Vrsng benefits list --- .../versioning-data-and-model-files/index.md | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index bf7d0d7aaa..4e7d306dc5 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -30,21 +30,23 @@ to learn how this looks and feels, try our [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) 👩‍💻. -This approach bring the following benefits: - -- **Simplicity**: No need for ad hoc naming conventions like - `data/2019/labels_v7_final`. -- **Reproducibility**: Restore any project version and find the data you need - instantly. Now you can always identify past research inputs and understand the - results. -- **Efficient storage**: Relevant versions of data contents are +DVC's approach brings the following benefits: + +- **Simplicity**: Work with a straightforward project file structure. No need + for ad hoc naming conventions like `data/2019/labels_v7_final`. +- **Efficient storage**: All versions of data contents are [cached](/doc/user-guide/dvc-files-and-directories#structure-of-the-cache-directory) - automatically and in a way that prevents file duplication. -- [**Share**](/doc/use-cases/sharing-data-and-model-files): Data and models can - be easily pushed and pulled from online/cloud storage. -- **Best practices**: Adopt existing engineering tools like Git SCM, - [semver](https://semver.org/), continuous integration (CI) such as - [CML](https://cml.dev/), etc. to improve collaboration and productivity. + automatically, in a way that prevents file duplication. +- **Collaboration**: Data and models can be easily + [shared](/doc/use-cases/sharing-data-and-model-files) and + [reused](/doc/start/data-access) via on-premises or cloud + [storage remotes](/doc/command-reference/remote). +- **Roll-backs**: Restore any project version and find the data you need + instantly. Identify past research inputs and understand/reproduce previous + results at any time! +- **Codification**: Adopt existing engineering tools like Git SCM, and best + practices like [semver](https://semver.org/) and continuous integration + (CI/CD) such as [CML](https://cml.dev/) to improve team productivity. - **Specialization**: Implement useful project patterns such as [data registries](/doc/use-cases/data-registries) and [model zoos](/doc/api-reference/open). From b1d75c7219ed16eea1e66b1e6001a420344f6edd Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 18 Nov 2020 12:25:13 -0600 Subject: [PATCH 71/95] cases: revert to previous draft fig --- static/img/data-ver-complex.png | Bin 59391 -> 34749 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/static/img/data-ver-complex.png b/static/img/data-ver-complex.png index 31fab0b217599e7c458cd0e5741a6112b27dc94c..442e1f70015525e97786bc16a4e49ee9dd5c7663 100644 GIT binary patch literal 34749 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 literal 59391 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 N?x^3+zj^Q3{|95~Zg2nq From 8307583d181a6a1721007d9aee2b4e1e3ed23c87 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 18 Nov 2020 12:59:26 -0600 Subject: [PATCH 72/95] cases: update 2nd figure draft, and reorder codification p --- .../versioning-data-and-model-files/index.md | 21 +++++++----------- static/img/data-ver-storage.png | Bin 0 -> 42391 bytes static/img/ml-pipeline-evolution.png | Bin 67767 -> 0 bytes 3 files changed, 8 insertions(+), 13 deletions(-) create mode 100644 static/img/data-ver-storage.png delete mode 100644 static/img/ml-pipeline-evolution.png diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 4e7d306dc5..85941496aa 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -6,7 +6,7 @@ changes in data, code, and ML models together? What's the best way to organize and store multiple versions of data and model files? How can data lifecycles be defined and enforced? -![](/img/data-ver-complex.png) _Traceability of data artifacts_ +![](/img/data-ver-complex.png) _Exponential complexity of data science projects_ Data Version Control (DVC) can address these issues by helping you organize your data and models effectively and capture their versions in @@ -14,19 +14,14 @@ data and models effectively and capture their versions in while storing the actual data contents outside ot Git. DVC also matches the right versions of code and data for you 💘. -Only the desired data versions exist in the workspace at any given -time. This way you can worry about the current state of your -[data pipelines](/doc/command-reference/dag) instead of on moving files around. +![](/img/data-ver-storage.png) _Simple data science project organization_ -![](/img/ml-pipeline-evolution.png) _Evolution of an ML project_ - -We won't go too deep into how it works here, since we have many -[guides](/doc/user-guide) and [references](/doc/command-reference) for that, but -here's the gist of it: DVC enables data _versioning through codification_. This -means describing which data, ML artifacts, etc. should be in the environment at -any given time. It's achieved with special -[metafiles](/doc/user-guide/dvc-files-and-directories) that can be put in Git — -to learn how this looks and feels, try our +DVC enables data _versioning through codification_. This means describing which +data, ML artifacts, etc. should be in the environment at any given time. This is +achieved with special [metafiles](/doc/user-guide/dvc-files-and-directories) +that can be put in Git — but we won't much deeper into how it works here, since +we have many [guides](/doc/user-guide) and [references](/doc/command-reference) +for that. To learn how it looks and feels, try our [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) 👩‍💻. diff --git a/static/img/data-ver-storage.png b/static/img/data-ver-storage.png new file mode 100644 index 0000000000000000000000000000000000000000..8d385d993ee47ed076cfd56529578e771dc00add GIT binary patch literal 42391 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
>AV(E{QP59t$5@Fx<$4FRMOcZUiU(G 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 b9(5h1{~}-I9gn>RGF9g_^)zzSuK4{o)i0kX diff --git a/static/img/project-versions.png b/static/img/project-versions.png new file mode 100644 index 0000000000000000000000000000000000000000..e0ca2b33819bc4aab2ec88af87730d458054e8be GIT binary patch literal 22216 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 Ti{14FdY-}4)z4*}Q$iB}Ma9dx literal 0 HcmV?d00001 From 98b31353ca761d3a2de1423b39655f37a63acc31 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Sun, 22 Nov 2020 13:58:29 -0600 Subject: [PATCH 76/95] cases: make first Vrsg figure shorter --- static/img/data-ver-complex.png | Bin 34749 -> 40037 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/static/img/data-ver-complex.png b/static/img/data-ver-complex.png index 442e1f70015525e97786bc16a4e49ee9dd5c7663..a0cf33cf7ebb5d5469b5555cf3e13772d848711b 100644 GIT binary patch literal 40037 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 OuPLct$-8v(!T$oB0&;r* literal 34749 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 From 87b83333d2643b12e08e01573696e3a377da75b0 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Sun, 22 Nov 2020 19:00:32 -0600 Subject: [PATCH 77/95] cases: merge advanced scenarios with benefits list --- .../versioning-data-and-model-files/index.md | 59 +++++++------------ 1 file changed, 21 insertions(+), 38 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index cd756f794a..e33f5bc8ce 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -29,49 +29,32 @@ for that. To learn how it looks and feels, try our DVC's approach brings the following benefits: -- **Simplicity**: Work with a straightforward project file structure. No need - for ad hoc naming conventions like `data/2019/labels_v7_final`. -- **Roll-backs**: Restore any project version and find the data you need - instantly. Identify past research inputs and understand/reproduce previous - results at any time! -- **Collaboration**: Data and models can be easily - [shared](/doc/use-cases/sharing-data-and-model-files) and - [reused](/doc/start/data-access) via on-premises or cloud - [storage remotes](/doc/command-reference/remote). -- **Efficient storage**: All versions of data contents are +- **Tidy project**: Work with a natural file structure. No need for ad hoc + naming conventions like `data/20190922/labels_v7_final`. +- **Reproducibility**: Restore any project version and find the corresponding + data instantly. Identify past research inputs to understand its results, or + for debugging. +- **Easy storage**: All versions of data are [cached](/doc/user-guide/dvc-files-and-directories#structure-of-the-cache-directory) - automatically, in a way that prevents file duplication. -- **Standard**: Adopt existing engineering tools like Git SCM, and best - practices like [semver](https://semver.org/) and continuous integration - (CI/CD) such as [CML](https://cml.dev/) to improve team productivity. -- **Lightweight**: DVC keeps it simple. No databases, servers, or external + automatically in an efficient way that prevents file duplication. +- **Lightweight**: DVC keeps it simple: No databases, servers, or external services are required.
DVC is a [free](https://github.com/iterative/dvc/blob/master/LICENSE), open-source [command line](/doc/command-reference) tool. +- **Collaboration**: Data and models can be easily + [shared](/doc/use-cases/sharing-data-and-model-files) and + [reused](/doc/start/data-access) via on-premises or cloud + [storage remotely](/doc/command-reference/remote). +- **Integrations**: Adopting a + [Git workflow](https://about.gitlab.com/topics/version-control/what-is-git-workflow/) + opens the door to advanced scenarios such as continuous integration (CI/CD + e.g. [CML](https://cml.dev/)), specialized patterns like + [data registries](/doc/use-cases/data-registries), and other best practices + that improve productivity and scalability. +- **Data security**: The project history (in Git) is immutable, which allows for + defining and auditing processes to change data and models. Existing tools + (like pull requests) can be used to review and approve data updates. In summary, data science and machine learning are iterative processes where the lifecycles of data, code, and ML models occur at different paces. DVC helps integrate and manage them effectively. - -## What's next? - -Adopting codification and -[Git workflows](https://about.gitlab.com/topics/version-control/what-is-git-workflow/) -in data science opens the door to advanced scenarios, for example extending -codification to the project's data pipelines, implementing specialized data and -model storage patters, and improvements to data security. Let's look at these: - -A first natural next step for codifying data is to apply the same for -[data pipelines](/doc/start/data-pipelines). DVC allows this out-of-the-box, and -automatically tracks intermediate and final results produced by the pipeline, -for versioning and other purposes. - -Implementing specialized data and model storage patterns such as -[data registries](/doc/use-cases/data-registries) and -[model zoos](/doc/api-reference/open) is made easy with DVC. - -Data security can also benefit from DVC's approach. You can enforce lifecycle -policies by having a defined process to change data and models: The project -history (in Git) is immutable, which allows for auditing changes; Git hosting -and CI tools can be used to review and approve data update, for example via pull -requests that are accessible to multiple stakeholders. From 59fc3f9a41b60ee28c4b1116aeae24fb35243707 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Sun, 22 Nov 2020 19:09:44 -0600 Subject: [PATCH 78/95] cases: roll back changes to Data Regs per https://github.com/iterative/dvc.org/pull/1747/files#r515533725 --- content/docs/use-cases/data-registries.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/content/docs/use-cases/data-registries.md b/content/docs/use-cases/data-registries.md index 82ea2bf244..33983e13b8 100644 --- a/content/docs/use-cases/data-registries.md +++ b/content/docs/use-cases/data-registries.md @@ -8,17 +8,16 @@ like `dvc import` and `dvc get`. This means that your projects can depend on data from other DVC repositories, **similar to a package management systems for data science**. -![](/img/data-registry.png) _Data management middleware_ +![](/img/data-registry.png) _Data and models as code_ This means we can build a DVC project dedicated to tracking and -versioning _datasets_ (or any large files, directories, machine learning models, -etc.). The repository would have all the metadata and history of changes in the -different datasets. We could see who updated what and when, and use pull -requests to update data, the same way we do with code. +versioning _datasets_ (or any large files, directories, ML models, etc.). The +repository would have all the metadata and history of changes in the different +datasets. We could see who updated what and when, and use pull requests to +update data, the same way we do with code. -That's what we call a **data registry**: data management _middleware_ between -data science projects and large file storage. Think Git for cloud storage. Here -are some of it's advantages: +This is what we call a **data registry** — a kind of data management +_middleware_ between ML projects and cloud storage. Here are its advantages: - Reusability: reproduce and organize _feature stores_ with a simple CLI (`dvc get` and `dvc import` commands, similar to software package management @@ -101,7 +100,7 @@ images/dvc-logo-outlines.png ... ``` -Both Git-tracked files and DVC-tracked data and ML models are listed. +Both Git-tracked files and DVC-tracked data and models are listed. ### Simple downloads From 7677d25367b70270b39fa444d8583fd929f00f76 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Mon, 23 Nov 2020 01:59:34 -0600 Subject: [PATCH 79/95] cases: improvements per Dmitry's feedback... see https://github.com/iterative/dvc.org/pull/1747#pullrequestreview-536152192 --- .../versioning-data-and-model-files/index.md | 45 +++++++++---------- 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index e33f5bc8ce..664eea81b2 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -9,11 +9,11 @@ defined and enforced? ![](/img/data-ver-complex.png) _Exponential complexity of data science projects_ Data Version Control (DVC) can address these issues by helping you organize your -data and models effectively and capture their versions in -[Git commits](<(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)>), -while storing the actual data contents outside ot Git. This way there's a single -project history for all of its assets and artifacts, and at the same time the -data stays with you. +data and models effectively, and capture their versions with +[Git commits](<(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)>) +without having to put the actual data contents in the repo. This way you can +have a single, immutable history for all of your assets and artifacts, and at +the same time, the data stays with you. ![](/img/project-versions.png) _DVC matches the right versions of code and data._ @@ -21,39 +21,36 @@ data._ DVC enables data _versioning through codification_. This means describing which data, ML artifacts, etc. should be in the environment at any given time. This is achieved with special [metafiles](/doc/user-guide/dvc-files-and-directories) -that can be put in Git — but we won't much deeper into how it works here, since -we have many [guides](/doc/user-guide) and [references](/doc/command-reference) -for that. To learn how it looks and feels, try our +that can be put in Git — but we won't go much deeper into how it works here, +since we have many [guides](/doc/user-guide) and +[references](/doc/command-reference) for that. To learn how it looks and feels, +try our [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) 👩‍💻. DVC's approach brings the following benefits: -- **Tidy project**: Work with a natural file structure. No need for ad hoc - naming conventions like `data/20190922/labels_v7_final`. +- **Simple file names**: Work with a natural project structure. No need for ad + hoc naming conventions like `data/20190922/labels_v7_final`. +- **Lightweight**: No databases, servers, or external services are required. DVC + is a [free](https://github.com/iterative/dvc/blob/master/LICENSE), open-source + [command line](/doc/command-reference) tool. +- **Collaboration**: Data artifacts and machine learning models can be easily + [shared](/doc/use-cases/sharing-data-and-model-files) and + [reused](/doc/start/data-access) via on-premises or cloud storage + [remotely](/doc/command-reference/remote). - **Reproducibility**: Restore any project version and find the corresponding data instantly. Identify past research inputs to understand its results, or for debugging. -- **Easy storage**: All versions of data are - [cached](/doc/user-guide/dvc-files-and-directories#structure-of-the-cache-directory) - automatically in an efficient way that prevents file duplication. -- **Lightweight**: DVC keeps it simple: No databases, servers, or external - services are required.
DVC is a - [free](https://github.com/iterative/dvc/blob/master/LICENSE), open-source - [command line](/doc/command-reference) tool. -- **Collaboration**: Data and models can be easily - [shared](/doc/use-cases/sharing-data-and-model-files) and - [reused](/doc/start/data-access) via on-premises or cloud - [storage remotely](/doc/command-reference/remote). - **Integrations**: Adopting a [Git workflow](https://about.gitlab.com/topics/version-control/what-is-git-workflow/) opens the door to advanced scenarios such as continuous integration (CI/CD e.g. [CML](https://cml.dev/)), specialized patterns like [data registries](/doc/use-cases/data-registries), and other best practices that improve productivity and scalability. -- **Data security**: The project history (in Git) is immutable, which allows for - defining and auditing processes to change data and models. Existing tools - (like pull requests) can be used to review and approve data updates. +- **Data compliance**: Maintain visibility on data and ML model changes. Review + who wants to modify them, and why, via pull requests (e.g. on GitHub). Audit + this process later: when was a model version approved, and by whom? In summary, data science and machine learning are iterative processes where the lifecycles of data, code, and ML models occur at different paces. DVC helps From a6f335264b620f5fed421bdaf4b45992f3a14500 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Mon, 23 Nov 2020 13:54:00 -0600 Subject: [PATCH 80/95] cases: train_feats > features in figures for Vrsng --- static/img/data-ver-complex.png | Bin 40037 -> 27718 bytes static/img/project-versions.png | Bin 22216 -> 14701 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/static/img/data-ver-complex.png b/static/img/data-ver-complex.png index a0cf33cf7ebb5d5469b5555cf3e13772d848711b..f633a53d22f1685a34c0f3e50f3ad63553caabd0 100644 GIT binary patch literal 27718 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 P+>(>W&KRT}z2g1f5>V1S literal 40037 zcmeFZcT`hb^e&2eJRS?8BBCI06ahn(E?p4>LzB?Eg7gxpp<_otKqP>45jGI2^qOF! zH-S(?KsqE8DWQaRcR(!Xoc9~=k2l^Jcij7jMw7MIUS+Pi=KSV2XTWV$1?nRVN2sW% zsBbCC!KkSI=%=FE@AKDw@SD5Rt0LgXK4+MMELBd+`6=)}e^_2uxlTou7kYH#?m_VX zhwm%uIa5)ca-sa$H(|1Xvsn-gQm)2fI=vrcRFuF_fh_l`3y!`11eo%B)A4t zRPQsAkd!5$(xwJZQ$F9>Tm~qg543Ll@6-jddGI{b#*B(?N$&7dfsh_i z*6G13u!FWd(RR3lwA|iz!)@SqjzaA+c6Mn<&)pY=S*1Lg92J2js2 z;%=RC5eehl*(BX_!N?O#p~0F@V1$D^Gvs;`cIxd2IxO%u6#ZsrRwo!B7sN3PsJ{U0 z(H&V>cuQ$g^0Uc%Ca{imf;Hu&L;7mI@6w-Qp1w}%O&J$%&WmF{g@ohZTfP5sF8z<~!$(MZwv$?0(nU6{udThe}YJnv`#S&A=9WzlJju_EqDl&MD!Qkd! zbDGt%|H5#-I4IBLnMN3nG^h=u;Pmm!I*Gp)#WQVHYi#e# zpB@9S&$XcRXR>R`N`*YPwC6q#E2lnUSE$l8e5s>R-}51%aF!EBGWhl@Iok!qS{&VcY-QQ=FEE0DCC%ou(k?fwM4 zKRH(jVQ4ptk#-Tb79Lr`e$nkRx(pQGhCT+h(}}~!;vYiqG#)tzMV-t<#^k5b#^wg& zHIAl?&PZf8lQG48V$POPn5bx@Xn&Ppl32!9t97~5%OUZFd}QyzsIFI7SgubZZd_@z zWTqOc&dRscuX)rd$YCTvEK{A2xv|pszt{Cr2XlwUCweAVhwil}`j;7|ni*Tr_7bx# z=}(oU^n!9GMHpq~tWpHb&?TKm8auk})ndvpmLmr+WBuXUDUC5^l@qVcka-d1 zyto+_f>$$Ql95SFI5$$8|<>LLp{S`RFfa9O`ZwCOY=SAXGw0CPKc@m{^R57NTHF`9EbX zWj~DmFiSx2m zuBX4EuKOfM-Tu$@q`M4+Ch8$e&WMw9jBB^*$S*6`W_u)=G$vlud)9<-5l*KboUm}d z0crlPfxktH5cO_%cLWE%m?~?I4tPDYJoVZpsxi-Z{jj`wji-Zt&|>FTBoSr1@Dvtv z_+MIw0VN0VxvQ&Y#GCf&28V)ukX%iOQQq>L3J+=02N8UXCAJG;ND#9#DBOl^+v61v z)(R4I^5fzvaF{`iA~4_FSbHdUx}`kqzdKiiY;MetHzs$D0`IOAT%{b$Z`n!pz`3IB z?3aP@_0bAa-ewIpS&dUz&FK)2+|Q3VQ&1?JQ{Lh^MztoCVAzqVrKaY!q`M>My!_`v zs%eiB_@g}S5J||s8xZPK!0Bt3uDJZk`H+X}-euq>rzTYXxLRm)Bj5lFXv6SN7&Sfj z6f;Yt?Sutv(LBp$T`HFxq3E0PFXd1k=EibRh0{WQc({G=O^-J(~c8WI6MoM*NfV{^G1T!R!zmNGmGlIP|>kL$)CEH#Slca&?Q@E z@vsS!!sUPIO7OaIKZH+q^G~1Sy>k- z1Q3E%{j2dL*qCSk@2mJ^^0W@rI;9#kXDQlMwOgFQCgoX(EkWcxA9#O3lpql|JY=6s z*)ZN_gb1oT{3$HZ3AE4@a7(8sM&$BMa&xo)Xll~l?Do;b z*WyHFULrU&J2n{&T6zt-?dFtvouA~Jr3|C9aiY>zl3ipDgqz{(2wQ_w^KG*sUGWBq zbsPH&mOqf6P0+a1p10);_>kI&njGR@}R+GreY2x!5^F9a<-Kv%A~gns9Yu zi(7utXnXhoQ*@MO!B!YKo3GeaZPY_6U{z7A_91;qmrT-%XSUCs8=scDW^Z+SJ(n5u zo>(-fninn^jAkE3&kWzlOBmY{U!)D7na<9{-@hZ5ty$^b-9;MS94thSDbB5yi4-x4 z0H??P2DkBJnJHztt};xqh!i(w->^5UdrT3{M@-_Og_Dn$PQU9G@rqe{nr5z1yIOXD zx}_F{_r6qclvrmwcw4lhPG6%VyOq}j;%X!oyI!y=yjG0fC`aLY1PE4s1+3ZB(I%P} z231qwY7H!u{% zQGv)>a+7KodiSPFgze9mqZk9VVlg6VtR>sm5^7mdlKU-09h#R)kvg|Ce^K0u?we2u z={aTE+SZfP+oFJ&MrskGo7;<)z;eL>hv~wy;Sav2N)-AM)T=L>;E=-#SPeR3mDZ?0 zopzC{(TdR}?CcU*mMFhWY(1<>5GY{L>&z|owOoHcnx&6?9e>_x5S3|(x8<7UjD5}2 zSuHWA{@iC;Q_{-ktD16W?^IQ$d>4<1%b>s_JVE!vm8W)@BDbl#c00FS9 z-_L+^08r>QVk_pAuX1Xks^G<3=;s4tluHe>HIGOx^&eHJ`5Q1H}@bqMb`WkTP*wjG^u3Tkb? znV`XZWNK#KVV&Rg1?vj7n;5Tpw5!^N2bgbZw#lXwTZxE|pLFnYv_-q#xis(4DWjf? zC~R3tk%pq&9lQR>w_x@~0ok^fcsZgQgTBveyNR0OhkXQ{AqVbX4(P-wD9S&CzqiQe zDU0^Ae58d6JG}*tRaCgQtiAPiqdK(t0DD!;L{B60_KnAUNEkBWyp#lIIxA)9+IA@y zoxId>XBR+c@c9!h263Ht$eO{G`zPMsk7~~?ahFC1HvVCevw(!L@iVfpOcH18;MQx_ z<0-)e3an{{5rgbi1vrc)Qp!OUH6i(tRYKU5Yu4|K;$B32uUh$E8N#9nyq4qPF_}W$%3DmyLyty{T@KAEu zR1mZ8B!TJs3om9+T;y6aR=O~Q;9ckN+NG@aFM3h!<*Cw{hk+Mjg#)ZAu`F5H_%Fkf zXEJL;!lHTlJG^k7&!6_Le!gZ&Tn;8rrw(xg(K-&(C)dM^_u=cCSKQuY+P5xJyRLLk zmgwYe2PZBQWNos&c=!@}A;tp9=nR#mT_Z-0P*(tY-x6M{4S21ScM==d1M&YqTVfrQ^R|otkVw@Mpur z4q?&v-+yA^?G&aK-+n1Km_R2j?}{|r9Q^x8I(|zXCBqdjIXrhvoURCJaE4PJlwDWN zCzL_uf`cky`Z1`Yq($(=dk(Z)``pNksV``O!d{wjW_@9msEhYUO9kDL3QM?9D40r1 znvOGSTLf}KBR`1+N5@QW1W2=@GW*DhE=0lf7>O>=kp+KcH-~yJ_y{&R;|ejl-Fu0{ z_y|1FY%MkSs6i2UA6`&s1x0Y78V+t?Z0L^-9RK3s2CDa_B!?#2C+8<88M`GAN46}X zDh1*AY`xI_ZyO243G-pgS&{TL(J*t7NT0x{7?P{nYdE~M?p_PobnL*m1G+1Q8t2#7 zCB@$!**R}$0X{uq#Df#nOB*Pw%JFS%IiTQKOTu)pCzHFnSgwjn40IGb2TAuT&m3T6 zD6Z<`zn!{i8x4^kt7|K;1y%j&Hbwc-Gbwu)+nzrp=Gg+C$(O?nsOSC9vHvhzmO)d- zI^{{-Y5X3bvF9^>45TP&$R6_X!`4IYU?x5PYQCe>e*h(v<~doP>mI6jsKvY*BtKhr zB>e?KHYGuzwKxr)L6|2iUD6KlMDg6XY~S4?u~*H)&#BX#WV_&50s5>rLlO>O5N8vC zom{)RcU0ehDa${_%A+QrLC||Xzzdp0VaXE;+oL|R&!6|4XC|+}#i6N#yRgv@_w>bi zDVeR06HiY3%i7$-Tzv^^7r5@Q1&=Pz8Z91y$ivekH>e)P+e}8*&30l8JQp4-db^LB(IKy zTBi(MgHT@_;sm5bJ3IK&I*vLkY0Lwt*!rhUFHnYwe~UGq@Bl)1q)??2+$=?U}H_PDdxI-{v!&y4?EudTYD{M@+^wR_Z)X9w3`Gf8)}+#0$Uv zE>|v*C}=~XaB9a<(K%)>4(F`+8d1I#S^OSh^#WrmTox`;l9;Pc&`D3Gv5qCU=#}pi@Ab z{Myy}q~s8Jar$-3EZ6e$LHzmFXxs>4FvQ>yt?8)tF|Wm$5P1uidS&CXaoy3#p{9o(mb24NyxEU- zq@SeVeJ)7xB-~nTb#_Rh#_nhA(ki%JFo(&JPktn+=+qqveBH`U7w# zr~;%#g5!npxU%Ncc+_ZEIF~ zeTFj{Z=3dP+PPp%@=KU+uHo|6PCmX?NgKCkg7At0c^#D{ zqY0V+FyFh+xWCl#h67*K<_z3AMO|YC&~#C)y~z4l`)FK6cr;>yu92h<>cuWSVpLu*Wxqh zu#?>|#0T-F=>_Z?3_k~XGQU_)8-3KlyN7hAY%K&M(eGt25W`HYvf4ljiTW%$_$lfs zO&!&#nXOk)3XRVn%vr(n+_y94YVOWDq^CMiIkdpCKjYGO#bVO5JCdL4K-m;iGck{a zOTj{qE(2Y`Q3_gv%E7+r@TLGIG?qjAR&c_*Z0k@jNN4Nh^@B>*36NnrH=bf(&2&!1 zcE5+?>>bzHQm!2=3(GQ(=e9Zg_Jyei@cB@!<)N(0@v2oT1740ex6YJ!%2EI_uv3zxxH#wU z`^Q!8vtHZ-3pp<)%NooMMY)=_2?E6uXT&u0znwFJ&BAPC8glv`>kPh{Y?X4+U=|(BorqkTk+x$JE*D0iRtV;@uDtEvWZ>Z@2e>yoRNJ7oTRZzNZe&W+WMx4)|)= zNYJEhsZ3#C+N*f=E1^nE^2$@D0U>8;m}?fh6vA^|d#fY(I8p5b_o&t&#iRqnQJ~bN zmegFzG%^s@oFL@*e57s z(LAEPi3z_QSPAii_-wp!b?ROM&mN{?O-)qX`&(m**1a1$k+$7eq{;JKM+SV?t>af1 zA8-h@*S$p&aEv7GbmG)a`QzY;cD$zVGu*K>Jm3Fm<2)D!;5c2NWIZ0Tr8=$m5JvuZ zka+ujW1gVrARb7N%(Yqh^2#A4Z_7q%pR&W=Ofs~DuWSBzjUwaw2CEeHn~>&y2btXZ ze*E%gvHV5v`Q4$qf7P+ga~~JO?VfUvw(aM-AtDiz}f<&UFZiPWZpD z6q;jJ<4!+xzp^C|*C_bwf zYX})ZBotR@rXn#{y!*-3SsykWty{#4SKQ3Ud_1my*OgAGnnJVzL|96W2IU1>08qGA z+1D-PJ21l?W7PG*Y@|Cr=!J4<{i#WAFYV=8am?#bzEr`2WYp5fChu)jP)Mq`_rtJ{Wb*W)Tk#)+>ofpNTvU!Jw3V4}x- z9#;s!c?e!@&zJww8$QRd8|L$S4H!0_x&ka?>P7I--s3?zRH zgi)fofTn1Bm6&+?j;BOYIQ?pHa~AP7`u@3IB{2T_H)z~|QDI#WhsE56ZsxTj8zL_{ z8U=oI{rMvd{Lxn(x_LJhx%bEg#r2fh8#Lz8YaeIMs<)}O0mz&Be}K4TKJsD%2>w2J z_ZIo=Z)Cd@P)Y%QkAvF527vM9vc}0Tv(4@9{w>Q=vdutxL>! z#qCynTEc(gx+oc^)WU0KLjp@tAX0rzmjcS!cpjs`FL=eOttFGj8QC33l0YK}819HE z<;BHQY!u9AI(R8ImZn~17qujWas$r=pwqjGdOI zC*z({5E_n>Fc^hG0V+RFSDCQ=5M%;vjFC`A7HcwKbs@ymiczO|*oe*k*lyGlmttLo3mHOusV8|L$D-1x6S z&|yzfU`{U3i7!K^+aL1)57bE$^o<)g-bVl76OA(Vk|%K%rba0lK@)8a?lu=8dY9we z@kHjWfmWIGLU72O#K_S1J@a=z!|G-!QGEN@M z=w2vdsY-TeHkx?8F=N~8BOyRsD&Ag8D3K294t5ooYiiAkN?g1enQv&hss%KK2_`b# zwg4kttO~7M6u_;P0&Ow;kX)UW@O+cys>S5(=4_#Xm3XPSszkW-w@;hFp%x+6h%SSO zSifkG$SqM!t^r#oxdk_p|Y%mN!ZuXU=8#;}*szW{H)HBYwO( z9_3@<{Q%)rG|b)XSBc|25AMzYBM1!L-vx%Yp642?D{&5gLJt<(eDw*H-W)bT&)3AR zuSl=h3#*hl#OqtNAT25vSvzsya^QmbX7PNpq#8!QqKS3Cdn)iQ?-_+?y_zi(W)Yp$ zDlL|*H5p@}E%h-e;q9wS^;gtL8*!Ig)rgd z*qIp?AFZ5ko1%tMU=*fq-<@CA?POl&m>D=`fjutJ&T$v5S_`&fAHztZw?nmpHu{|X zZQ$HxPiqKHSVaKdGhM!XO+g9u4cW7%=?i$h|=3Gl5y&>2=c`m>$8v#yz(g zW5>+0aSJ!Aoa0Ln>8j*u#+#y%hRht6saSI+jj|lUjSSe2^ZO+kR3;j7-*Gn3_aZg; z!Uh^=t2T&gsmEStE|8+UvfvxIM4 zi?r{Qv{%aZL3G>GqI+jBU2KBDx0)Z5b)ZZ((Dpl_Ygd9AW?wqS(0(e|R>2Q1wKbM| zx@N}q`?%?Q&FFbV#n}5}Wt9w4kr@U@3Zy36qOeCjnqKGgbXvkCGgBWh(s-vj2z$2SUf#&2<9#YWv7>bP^%BxMCM*R zU{T-z3@?{#ClgX628^d1^OaER;^yezwEgekC}`(*X7=3@bFJFo>CI&JT4Qw$*VtNn zpA(r@#ZEsq=9juOXIEv~oXjly$ ztsqh#MIEckK#Dnma7M!m5G4jljNJxX5*JdIzSHqQOoqVIuNzn~y`e^s>$lz;|TmW?fc|J{3%fJ zdGE$LcBBaVYM~=MeA}*;533^Lz^zYM1(gw9Vf-W!`HvVExcR-)%vihl8aD5R2Kq2=f0 z`3n?IIjdSK4Kpw7MV2sR7R*K;F_*>Nd}W0tJk3LIWt1jyQ*^v&ngCb|+jdEjKP7Iz zU0j;#V5wRsCp6PoGKq^Kn6;v=%^OM>i+v*#Wd_$=HphJylB$)|WfrnL?sv>~hx&3e z7cI`{xM3~hol>&^?6SXNi!^9+cqmrhiLdh3R>Au&>W$FkE#%ay5?Ov<2a~qBV+Uvk z8$5E{mYm;*FZoonXCu4YC|`V7Hx2CFQDdTdb>UJ`&ZzIvwU-y=G=2=b*D;Z*XBWz z#`@M{^3kr%j)~7K(eTZVT&bD9C?>*kdX)t*A-r1to8khQfY9gP{Uz{Pn&mLOx%fZL zl7ck;ek>`@(H@vbYOruxp4Rh_|5|=JjQBsa%W!*?Zu;v*4pM!-2VZuMUQ4Vaig!DQ zq{mmw^;sSF(IU_K-;ChjW(q2=kLHtn z=X|vw&ZAA1md@G9*EeJt&ZY{IGd*r*jkFtCJsM~EFwW#RNYGE`pbtN>MyG3 zZ!1zr9rb!eSFU6hnkT`2Tg42Uz14C4mWaO=u6NePCg#r_G7k?B5Y{cy5IHs+-BPO0 zbNhf-=b|WehJiMIy6ntK3Chi^(dtd7M?^8V=8+#UsoisZLTh(JQjs|x$vmzErp6*) z;(EAE(Vgrv7=tY?-8d|^ubC;TGjN|Sh594=>yE4}w#v}&00;uRCIzg#O9i9FH<$~r z>|rtyTyMz9gNftHj%usCwK)hDtRPVFE~Ijq+O;4kOIR3Bo?eK6bw?DG z$po2%!*Pwdj8TcumXJabU3|OsX6gafmISf(1=k|%QygzDYwoz0yTrtKcT=I(T&W0h z@oW78-2yaUXLtF^&_gML-lN!P8n;H-YIW%0w!Od)fv)He^_rdILfMM?m6AwtjhN85 z>%we*#>z?5!_6GFA?B$YS9Y(ciT!A*vkxX{RPVUN$`QoHR}n)>g-Fn;iF`o@lZb8~Yc@VzVKV)yP@JilQ% z@lRR~#ue@Vc=M7&XrWYc`7KN_q&hS`jk7W)fsZaX#s0oPm;hWw*-f_}jprr6Pj{|Ayz zx*pEM#YVJBnAwmGKt4PE+YuIn*MNA-?lKu_0foiBtq_{0OUv#ho3F)d!n_DXl4{yP zqG?fNyZeMiQCDExdP9q$Pt$I_3GPO6mLgo1H}6`LP&B zMbGfw@Y~h36B(QUv+tR!y}(LO6DtxBT6uHZqj$NknG-(S@H?po5hYP#koFK&RyB03 zjON*NHK)B^Iv9|RcJgq!g-J%W(SQtpMGqDpj&(lLplTz>Yw_5E!ei&~cptMR8`Gf# z&odXwka2-{EBu_Uv;9*Fk(hFKl-%FJn09sDaV}` zTam&MXB%KP5@kyGfqiP!@GqVvvv8{^hPFdDPkpZFT%H@v7eKay=PxH0l?`|E&?@lp z!nUfIEPcDtP1m%%C8VJkv_9lmmemd_mn38)1WbX7x~{^V486g3C9I1X zpUa~T^)0o0YIQlY(Mru#CiP`WGxeniDcAIZ@Q(@FqCs-loz!r_F496&`>K4ydK+udpOc7-idrc^`0yC}YuHL-j;ku`+niwwJAK!WPh zH*Q({awztLlT)jP{<<=*)N!G;Y3&YjTBCRsxo9P3BYIU;ynMk(nP@P&&z0}|w{QMR zt}2gPWG=OpSUy!#XByMp7Ja_oro>MZ7L27Xd(cOHsHT%ZS3+ScJ%#C~X3fC*yv?A} z374M;B5*5~A*_ z+(^_Gr<3r?YpXODhE7d1n-Jptqdc7=bDsWK-UbT_^o@1hg*S5BEkPF2n$7ra(ecBw z$6c0!iSZH#w*`UJ-ul_DECmO5Up0f)RYfoD#-k(3C;`Ss>1w5Bayds+Nr~k>0ZX5} zg?-K?#i^#Ab=_Gb}MXsWrEXbG>`rmh`vpEf3wD1BSy9;vs#^BBIUo5*Xb$z5Lk-)n-Gq zIkUQ3HG^26_*GG1%gw{G(Eb(GT8SKmO$Y+wGX&l4tf;lC8a0f7kyl@mGcN-tE&~*E z3$IrCV*GapI=aXJn!R68SO^S$Jy~3pe74jS6(zse@3xRb6njXYnmgwvncAQ`JMTMf z!JdYnb6@pTF5#?jams?1UkkSL=4fT2o?2b&-!fc=5t=w#k*V~dW86kZe+bdfJA4m= zwwQ@(e=48p$jcj?P}M1schyY7v}KY$$c7_8Q$WNq6S3-GXWS~EYG&y)aiP}Jq0d5L zBC_U%7oHHxQ)7>IykLRFXGw^dFdJzqMRiO?XCj)tc+8n}x?XCq(hRC!p2zd_7`^ega*)$}m z+F?Z8)OcRLDw!)3A+Gn?SgNk|MtJmKbrX}1gcPgY3mopbwf?qsWl9h8&-9#0_DBO4 zMzz;6q|>mVT7g`XOD}+>uRNQNpRLv%oM+*!9hcbPM1&A5I&T0p>Bpvs#T?E3jy9J|ZU-|Zb`_NL z3NNISpyPA19ikQj-roAWBFnI1JTnF+-tSnQG28Md=Gk79wv%h3x%9>KKLmsGGEf2+ zTS=jt${#;FS0-}a07cBl^U}z2oxaLekMa;^v)RTc`<7SAJafqnJ7kuTMTyumV!a@> zyf_CM14whz;fm?Z%Ac<>D9yWnj{F0J)KWGbeV)V&2*=s4`glhjkf^kKpX*>x$(`H70XW(D+ZQeg0trv| zI%{VpDoXhN$QAl)Y__8Ku__ShX~zLIiv4jmv^xJ#ul~&)WQPHTlhN(3lu&~X=R&|M zc}s&+%;nTDIqK{^(5F*Ft?je{v^!&Pu$oFkWG{ z=%UQj$U!_u^0CL2d=#6BnkdFdN{?dvnCvhEQxc?Ojtt>#Ti?7NOkQ zAIHKVl8}d3oz<1hd&BIEs&$Jxf@~k^l3q*UG+SJlkFw0^aX`44ZChh<(vVSeY-z(v z9<&vhKh<=h|43rGs6)wMB0|S6Mx32-P8_5qIn_vWWB{i&StduwrN3t{DfKE@TU3ob zf+ZV;NRXTSi~q#zSD-Q3z2bjK+OsV|E~CtjvgImE(4Q-lW?LWHz-v!j3=8T~yAe)F zWfe$Xmo5_&35Qy+%XHLNf9|30jybx$;JghCWZts%)Ht1auc=&#_+-tqBVZtF(>Ghl zWO~(98uMDU&&Gbi*k*iuc=B73PYd3YkGj4uPIc5{(^oKF?6kuL597*}^ObannVGUU zDQ}e>bMP0sW)>a>Rs0I36#1-rZ3pkO z$CSbs27}E6`rnh9I>W*V@6@)M@YZgUAyMFnbXHc(RG3Ta;DNkg#QGu_blxK!gYc9- z6DTmRhM|z)!mE@Nr=PjIlwbxJ{5})>&jhQDNEm}PCBPV2C{z;n#!*{=j$iL^G-nY{O$*F$1IZ5LG?^2)c zAB*3IeA=Jy&|k_gE-o%An&u$iNr|p^E}f+S@a18?n^RShxTkx2P?uCdK12nq)%tDJ zx=U_R*qaV|EPfmO!9qL9H6rL8$~-#E*Lm?mne}dPbf4U#^WvF)R9{UlhP{r7VPIz7 z>df_Z9j!ZArgB)Q{Yn`4!XZO`N+9Qa@DdFpZmjD^ew5P^g{~^PxVRV|9{%=ug19RI zj~I-=h5em_aB~af5^4uI*p>}_Ncv&zKMmR}X#=5XVaG+dk_&Hw$d1(ryQmHve zwEMI8t`beQ$)H^z)V@O_nBm?@?$7!8;DsXa!Gmn40&;SA%Q~NPy?wsCvXUr)P!-a8 zc$2{t4BA^ItjSV>_9j14h@9NBxAtAT-koa_75l<2$xW#JemFR)HJ6=ql>I+DKUqxa z+-Gep%G7J^>th;C+9Hr9s|F?;Yzm4}7JyQ{pe*mly7k_I01r4o)WXzjYHCW|94p5f zydR9!Yu;9%g!;2UBK+v`+da;`1qXoK&$aIFx9U$Ly?V`#FVUBbA|!*7df_MFRK1e>UgPWSl z+Ho5h841C9Hk;e7gY5*s`0Z|4ga?XOBp|?P-QKiBUrv$8a1OP0#Ux6ZhxyJQZ2d=+ z`Mf{UKDFdEhvpDDqpo6|@{%%QC4ryyZ>4wk?N&log-%w((G7L@dY-8uu5hoOA04#V?5#9IFRdNBAjWwAjT z&G$MG7q15w?aO*{^9ZFc3h95Zg2d&WcJRG+R8&`b7$HA{LX|kU;|iTeS1ov-+O!(YpO53;3ST|BI-B&rYwEU zwDv2Q<4-&^c)kUr^fEdGXrkXC?-z>i-2RkJIslqqU`qYm5cZ|B`bn{La_@rdbiSE- z-np(&YYr3p^^{Ic`U(Ab#4&EsRBVtg!I4)#e#iQuR33Q<(|76egh;t_@v^8(j?a{B z4H=+m7w4;8reEY~R;`XL4HKGSAae@59KOFSYaZ5jHSQ%%sidMo=Wd$_YC%a3&IL`Ej6d z^!DD1KIwA;-Dyp%A3TB&i#A>1jC(NG*prGDOfRO%>-bCeNpA(KZR@ zb1x^BPm*2Cxd6*EVZp$Gmiv0Bpu(QMgb-DPy-$3%eL%<&9OsdhW62o^qhL(0$|G z2*3F=gH{eKnDBcEKIq6-*c|0Q-k)G4#w6p1D!B%+$GC4~;8^ZB`IP5Jv?sBxUClYe zYwVQcws>!Zbq-0E<7&FkysUgi%K=ojk=YnFZEe;)4QS&%dr&Q%|*{iLLZt zoj6fsCM7D!#odpz)Y6NqM}fgntXnO`$wi|_Or2{ZMust6N9%V6IIdLtnRpr=L}IYW zIlFB&ezSr%oGTKBOFNP1f@y7BM68(OiHl|(HUW8CT8rpYh-hW*$&xEY?oE2tpjAL& z(osFQ%M%IHSaun{UmKw;Ba{N#g!e24+-Oj=aol_yWEz53^xA#Z2rg$&!HWFjqKQU@ zk$rCV!X54wZJtfo$$E9%+dQ*yy^fp^Sh>;)x?0T4xVw0glAUie*XJ^=+|_iq7mA|W zd@$=ppQ{U1sV}RTDUNq#RJ%9OlouY2lYfzBpikJoWPz*hd$AgxofgC3q#XG}-aqwm z1NE^bF-)$rU*k*lC(G9-tCKv6?%RCvU4J@&BP@?b*gD9J7d9tbG;f*DPIjI0r}2%B z7HM+u;U`91@(<~Q>sU{h_%4E;@Fpqi1B_4{JO9nm_NGt)$2VxNt8qNP@Pt}2NQB-g z(DO`K4@!$};l1Pp5v=W*aKgqZqY9#c@g_5I%iFF3uA*YtBzQNXaL}stokO->wwhW~ zOMfo_Zwe&UDLEgqFUdv22xN%&z||~<@rA;XzizE1Cvqjsm0bqZcPkCuRf&YH1e!9< zhzOIDoWq`bp(KD1{))=0-5GF~nqogxf_W!iphCQF#B<3A-}_1@N0d>9t+{#WwP$&j zjPp!HyQDn-98*DoANL}MfgpfMQjde4+d?||K0W>x z(N4)L31|jh^;T^+zd?T7Ei`qbRLPnspLvnY12Fg5p#Yby*}egvZV(&wBA;i3LhN>R z$&(7C=Tzjyr%>xWLBO}d9L&KuD&?3Nmij7>FQK(@0mdyedeiLQJz*dg~F?EX;Fh_C+Os{G==M*=X1i1ZWCVQJs}FhDv1RYl7tK zXxB*3rFjcM|IubdZQhnx(M@e)hrf2ipoNhJ9uS&Kru*fzUEl+XS&8EiuTM-mS(~b9 zxwvI)bKI(n#YGDPlNvWS4NGEd2&z`8wxu+#oZUp$5Q^}-8{ZxQI|5D)eDATld_dw{ z*LnwUnyDq9#r8FqQj+&aPURMV{0dMc$1Q$0GpdN`eHBb`4Q2oKrC-OM;hU0xKAJOog|azB8y^$2>D1 z*=Law6&3kxw@}RHXjhN&c)aLs=-r(nU=J>URY?jzgY{hsaA8K`!ouG5nDiUTU|SNtIZvman}i_^Cp*|7=W#M11X) zz9Fl^v5fZ9M&R`#zf-FVEM;YsoP^A|8OR0Rn!`I~wRY^OAI{s({S4B8t0=_eBfA2I z1dT!O2+%VN*t?cNv(*^v6rk|7sdnmP)$aLdUpG625@EnbO+G)mI%0fZGG75dVtVW%#R-KTFAJwpxw7*qGTZA+0kD*vF06v4#X_2=4g5a9Bm zpDvQzM^5T^2(YF6Pf7^GTu+Lz+8MB@07bd%)n7aD?TbgH&*A|Ogsd=rhwtIqyu0>zC$8HcJP@57qtKCVlzUzio|H*ydH0TaRA3FeVV8@n=2?2w)%dc z91QW@#6qis5cWoV1KTP%gOH_=L|cuDyBbjS;}o5>69)#1Qrz)xVdWwJEp>3Zs5!yH zcgVUI%kMjT?eU_cjVMd~^hfc9K2dBlZ+;ing;>z212xiV8Q&B|kbPm#yzLVn3{vr#H zNk3<86f&nhWFCy9gMRa_Wg#c~4sh{U*vtl6kmF`V=710EB`jdI9Ord4h#=rmDjB5a z$uaS0n#tEA->Vi1?`BmwaMZ?L!}Lwr*9y|T*aBmd*?s~d)uq^L{m7hd4;1nXYm6%F z#C=H7>b8n?3(|V#Sv*s6!Q0svC5#gGIqvTgKhJ~}TWaz*bc+D1CrO%5bvhP-;fO+N zRd(2Tc0m1cq8?$8(={JEr#v;SpiRom9_*FAB9?iE&4S}lAA&&8Tj>j|XkfQcaGh`Q zI&I1#K}Vy{vKp>}r|oJyrAEs#*I(g?j{DeblgE~fe7lpVvuo9zINYfRwH3ug7SLxL zD!1#yqXY%7ruIh)`|F*8li>L?hn?9p8Em>C6#u|Ly888vY(s`$~b$;go6 zbg2xM-hnPr=2mQbAXuyB_uh4&w#1dVh1-hoPy{X%Wp=(S4P!j#qW_Lp+ZGaxaL~5R zt}Dx(o|Z%4f((e+2Ur6TnOgy#=ww$62T2_ip#t`o!i(ROc|5tnO8P-(RzI`*} zC^I^Ooe?RcNRu`+kvI!RZ65whtO<@3W7-Q3M6!pP6)*j0qIf_q>s{s0Fe?} zNb;;5sx$Zfe~NgHWcrq|n1y#+S!-Vy&h-#`PjFlDDqaW4G< zN`hJ)`0!8w=f+ zfA%8k#+EW@KSQJz1}^h44TfKPtS74?-0xQz6T|MWDzAJ&HFIWE*v*?!PO|bMVX&g+ zHOlr1=Wo{z5q0}(!ke3JzyQLhq8eRV-8-h!x-_GyDCOHx%WP6*Gy|`I$=0XtNZ$6| zYwAE1=Vi9rT;exp%3Z$NHO^>jD^+|Uv~H@v+`{U>^5Re_$L(9^6+}PwR`{kWV686z z+h61<@AuR+`#(LL7pmC5+Vn5@TppxIuFc>G{v+vC6)#w`ncO)%hc58t72oF1?T`0e zt`0#H|PY~P=pBGXhrbv(4U+kuwRogAsoG3T)_ z@fn!ncci5ZH?9Gp%#@dEI_Y4p4Ntp_z_p7ZnQtzIPXF$~v9u)kfOG}<_+wj)dUuhF zyHa~}g@Pf|goKq%;R5eka9W-X!M`)N{gutEKH+&Yr&uqBn^^T+D>Um}4g$8&k?hG| z=^HW@Uo9LAo?E-;FPt1(^R(wgcI@TB7~Y?yKXypvdCVSLZ;yzx;>8*jabP~L%G=A2 zaLpJ9i3E$In(PG0$3!Fvgrq-)hmyh?6G(MUj4gx6T**_VwBlUv+i61CBbXNO?FOu2 zsbisfm5aX#B`T2-%%23`^y|u`++4-G4(^rd_7f+33uEaMvVV#BD>ZVDnAWqVZ8heu zdi=IzayRR7XVRmiE_GcRJhd5i-B$NOIY?mVHu>``SdZRRI(!a=U>QrUJcRvXtbJwe zMEH0ry+NY`sG)ObH8v;ppJ3LO+{#RLP2Qam>v*Z+&}@|_$A*M+bimgyt4=vqd(~nx zoQuIl0n7>pPs5^kW7igf%MREcM-_k2 zcHx(IS8DqM-LRGrghwhQG$(|~L_TYX1{$C_CHY%6`cF)Rk=0vEftt-OiL0f_ro|CdzYOqrD5UEU75;;< zM*wZ%wb#Pw@mYyev6cEn#LHhvR76LEW8o!#k-j=T8*1F)}daDk6$#7-p3O!u-X%!9x$lMV=Lx(kNaYr?Q1zlT^?o!OX$@i98v&~uS@?}{tqoB{ftO?8h5tuPoXM&z+(atmcIXXvs zc3SHae~HZ7&Vj!GB{k0%VLexVCkedTnUzSM5(4kOVWj3i6Q`4Z9>2=Hrg*n%1hjL* z^8&4|4^?-`*i~KWG4+^t7(%E4AVfVILGM+>3DTE%5$0A4L)X06px9LEv`q4ivWg0+ z;aj;FtiRLix2fnTMH20YK89ZUlXQZb;u{c{1*A%wAJL*Qyi#jXZ=wl2Ryhfqtm=M{;{vdbIBZp|hq9y9l!^1&?8k(u{RgBb z)&d<#4N+nN2!JSF2M1 zi{uzdtd!(QFIV!y-p&*0@@UM;XTh}9l+%7kV7C&VspoVt3?NAf!S9{FAbQWNSvv#7!o~z-+8OxlCxEHL&0+XhtEb%q}%XRPAif5 zT0tz;uCyQ*MmAtsBq+CQ@&$Xdwa zQ?fj3!!@4Zf@HLkj2i(OL$fEuk4s0qMflxokgO5T?Rb7ruG#E}NH9IBhzuUS=FI^-c$gJ{wlewcD|yB-`FeXSsbm<0;C2*G*Aj@_0SO(mCmizXs)FZMIkk_;l!d#hd1Y_ z-@2a}KHy6QOcU^c6MgDw*54*X0yMiA8_rK3-%xNN_g5??qDUpD3>P&Xi2-J2zJsHu zMO6tEpEy%BmxDX9$D7cCf@zug{C%}~={kwIJC5c9Eiup`7kxdIx@LytLt|7UfwZ0n zmlALvouecP)~?QGEcZ$bVe%Aox2~bCr>OEkaz|Ibz6rbyZnzlKqq5I5gn42XV`#zO zTKt|n`r*FFs))Wel{mJkL$r(u^)7SXnQY66Z_oL&!+0Er_*5aI9$++2F{6$}z<HXkGjG8f<%M zbugtNFa#m!(@@Ee;1^n}V-Z9J67_X@Fxtsy&lAo{>F&q3eKyzAxi4rA*dJ-6*k_8v zap|q(mDbp*pl}xtRq0(!4y1~TiqfX|m7&XSc>&J`Xq0VSTuzcOSc|%=lze2Y0uCkN zWP=!IQk?t^lWTbEi?d@hkGyw9fe?@5`Cq4X%2;g(%dXGcn`DL5ma5}ood#E;l5XSj z&k>x|o({2$r8pJ`XT{%;0Rx)$>~jGgmYD%ZN>KtP39Y@6sdEoyowAFCja!6;REUP` zEnme;&4)l0Hnu%N=C8S6Mo<$@8k-Lm>kly{OkyM4*b)n)I&Yg*4lRH3iZCRfiZp^5 zi5NBysFxS2Cf};-ebKPEdh?NUR3}TGzW-IRyrCzfA2l0ftm1%@y;LE$Q~lZ$>$V(m z+X!>ukN163t&jDzAZ}_!tHUVH@k1Sc78?!_;Zoh*5|z?P;;PcUbHO$_CEns>Tp!HZ zr0dm!dbrAYqvhVNY?hGH57PL)2`mD49j)K5+|#egx_Q3iu*n0-M2=2I;^EN5gt*Fn zP*h)DH&)}s*T1musZNckMCib@^?iAaWCLm35*` zov4e^5ZrJ&sBBO`QgWlS)>AUncxAj@bhIUPD)w53&`5p1tg9sE50^3>;gXWY(E%SK zZ!{2ymM#w`7E*6#0?QvYFlN5RkQo1A-SU7qAfx#hOp8oCLTx`~Dgef!6=)alz4Cv% z`dm*1&`ihMs$%!B*U3sX%lcH+QJ8eCi}PQpPD%|dm*SLqsLi;R;EddcsZ)d)9wCv< zbKa+#dFM{<1bfN3=1c3k+2mur`WgdSTD?GA>p@5~8B8izo&NHGY$D|15jW$(@4|na zf2vN(j3dsaM$dWHA%E>>XOCHS0w&fa-+O@_zaL9xDMBN};RRIL`N)W}h`xzudq)~j zA;(+3n$_lIlt-&<$^EwMVqfkGj!Aar@bG&iIok$d^4u~`WHT#_rZGE2NdFWjj9N`n z%D+h-%bLL?*=dnUuFGIAO+9gb`gxL93Vxb0MqOIVnKq(OA041i&y z0qk4802Rw^3%jZIQRB#Xr9z4#Qjd{^XWbak_v^bh5SurGaC1jr(d2(_sRwe)b1 zAF#51gEnRo!s??N**SWAxyMZVnfF|3Zta2-xoSL0nNh^Pi}Rw*(3o8^y*rV4?dIvo zIGJR(r1p9bbl?}fV8IJm9WT+fQas1(+Ipq8qu_Z_-{SPKMK~~tz$4uo9@+Sbn;l!2 z-+VAvBQ3=Neb{`#l#ol;bmrdJp1Bv$aWs;_l9PN zguOF7y(SE`FZ+rvG;2j1pd;xwG2az{HLycwSUM`q<-H}8#Li#)RU-4H0jLBbjD|gp z*?;Q+FknzuC@8z-dwr&U$;m5zMlPk~l-X2^%c2RH`Jz2ayByR^5I(vm{tjrozcjO! zCYo1sA<;*bqKtbdVXgFr{-yt_}d|v|+$@dGKF^l*N!LPCEwv59qr`;Ev5)>q| zBgPl5cHJYKzHkCb;=l8#FFJ;2udXr#k%<7UVNwvF#QfIXWHpZ+rl@Z){$v2%3|c|t zwOEnk&!5PNg&aXH=eNI|hH#+IrsASWD_hzI(vp zVEnZzcL=W7S)kA`qHV-9H18gB-!4-r+FT^}{#FkNI`FK--?O$>X2)MVVP>=LtJ?!3qe0|2F7m%-O!P9*(+(D%dhbqq0kZ;~o*nwBL zQG>cBS8XT~`u=A4x}xUl`g-~8^+E-o9%bd{xJB?9ca_5QQJ0JpdMq8btO4rCRnV+;9- zyl0zMFLw1-)R&E(IK3ej+o0{-Z#s1cZZD?SbZYpY`v-c8($=aWDNSN_K!Y0Q#8T*ZA#^9@JHne<4vq#$!dGEpJ5( zLF5cOo+pCe!8M?66kl>4y5WK2h33rWYmCF>`+Jq6+ zvzE42lM_yC@?}<7uTfl>Aj^7-6ZD(>5&`7y0^5NbDOe98wVk%AsC4*v4{;FdF;f4W zS#kZwy4jg33Hs1eQQB(MIrne$w!on9byNIhu~1eE=C9+~`ob*9mxdUonduyFEt&Nv z&&ft6T|)y-HeQsP+u^z5#_RUP&8Cqbw^@S4OB*zd72Y4ZUd(`04mTGx3Aa z)y=W6!W7kNap%re)58zSllW2IZu~;yPH9UMV-Iob-`=dGf8pd^A@I_s`e_!m3yQJ> zUCF-WOsO)t3@SR#Eq*B;JBRdD3u+*2067^R^~8!JTo2C>2;^2rzXjRw75_`D)=wHc zTpYl)Jk|pSjq(PgnWPd8fBi%uHSf3+z!S-9^=UPYd?56qwE5@zxuOWTwq5hd?!S;L!``mlz zLPx&tjiI5apmJI9-Mw(1*X)&cD|J*Q8y?`hN)-$vrU_O{MJh= zxO)z-_V>h*-AB!MQxU|n78MEA%!=F}`A|B~Qi(rS8)KZ6BsJp+J^4X0Fs_60-w8$i zUHK{Ca&zVXJXS&N?N>y0)A>n*#Hw`F$>s{j*k#HXwO++OaMh`ti1qJ9;ZG3!-Tx*} zx$7|#C$;m_X^AW~_KEh~Jr#kaCBEl4JG+L*{3tz&v^-?FkmDji8kQ`srA0j${o;kgvmrhS?AA#NyVwJ&r?lklu?wYheDKdo%)p(L##s9rIv z5+Na7%S)!|3$f%|G;8=f2oKhHG<1a;iWd;5o;4-T9g9Ud{qtyZWxY=B1#(JBo|*zE$^2o@rPJ9r z_m8VtTTMQ#3Z?vIuGmK#nk;H-m|pYe3}4n?HjbybkIa8NkI5LvTn_PWY`)w+xcqH- ziEZtx_(W%oY_Zbux`QJAqm|La&0Rto%?*aj52X~EO(yJdWrNY<#_p8W)bS}v$$3sI+)h6P@ z!7NQ*xBk-|Z`r7`Gn^EG>}Ws2n1dSurXc%9df22-45dBz#h^!(xf$yqp5|Nk$q!Ob(xUlAf4-w^D9^?h{^INv%eAZ5(9}@3LRI+3fx!a z-Ch5y)EEF%TT`MwoD|O#?7`CJ`wKOFN$o?W!@?Pa8XtpJZ^MHwbq(vSj!c9Vz zk2!A6Rxoan9`Br527j^$mNEp&vIs`M-?J^yUWNpH@@!r|kGIR`2I<9to|Y0oWm$FB z8+S)lZeu|2u{4CRA3fFFTZE7%tNzs3v8&AwO2fz~N?Ik8Jgjs=DtOzV3d#z_m z5Mw4b+WF1jWVLL(Kc$6l}Wb>d%)H|H>Iw*hP0$TeV!s$=J zKP8Xu#j$zHj-AlMx75YCpElBR)pX)|E>XDMNCRs~oo1^uk%WqEsuMcGF9AbY6c`RG z^CR^>Oo@=5&7QdI&xe3%sWRH7)Bi>sp`vI3Tec9{2q)P$Xq$CGZ zUJjmQg4^;1aLWuA#{R5S#`>32)q-N?Le2-wMSk1FW%o=;Fy)3P9XM`zetFJ~BmwS} zk`UARbepG?YK+V4mz53zs1$aDL-aFj9&J6H)@ zj!_3}srC!jZbiluEm&HkOx_C}R`z9`9v?HJPo}!UlvX_L;dGitm2;>5iz4b|56vIX zd@WgGNx0NO??>=}+CqVD)Sx~gU_oESr{ela;-$SG$y5F-^S1dley_Z?z)v*a*EyDImvPO9PdSp9<_8A{b_Rc&WCm9ZsbtgVAfC1Ci>=@?)RAaTTXP5;+JE6 zJ^t=0^ULrXHCXr?9c`+(R^Zv)R%X_#ne5hdQa*f=;uv9^Pna~Q>kW+5%9lgwW~?@u z4-XfNC>r+8mRB#hxhUQ-%fI-|IT7Ny3hWvi0aup7Va9$R7bE&(m3!oi$4FfdIcWiM zm-3~xY_NJ0)z@SBHL;9RGqQ`xmR;n}M$+x1$=4Ikvr8Xm&GDUP)1DI9ctbpH#?w1l z?p&9-Nb+4dt83BntrZUYHE7XYdA1yDS|#tET|v0}KI+_no$mTE4PXLa-xFj{ad>}Y zZZR#H6>vK!yIkcD6TU+&Q@&p5*ld&>N3-+z@>X@2T*mCHg#V!E`K{nFyT8-dM^0n` zji>#1N^_#hD6&_b5;{IXoq1@(vy`l`*bPWV_YH5$xTSfKITe>gy65xPo71by5W|f1 zwyXW@_03qKH+l4cK=cmn$(VYzi;=b}+EbWdKFArpI%WxJEdlFyd#3pg_`2)w$CLT% z;#B@IDxO?|P);3ckX;$bJ`d?`%LCT95HL%{Fc1+iA@h&_sa4Bdm?s)0lia_)7NmU% z;M&XKVsEy|9Ns<-BwG7R1s_V04?r~}nyNBCOi1Q7?a*{Ln_+DcFmTfY7_Ovg`WCBq zlT_{)L@o$}e=lp0bX7B1_;Z}B#C(0v*9!(VzAzffO9#1i! zdFWCQs}0ASoZjqE7q=Ezo!k{W(Y-5n!d76T)VT}GTP$bLg>o%-^Rzy##hm!k#e@00 z>@3`em7YDp(W?ZU$+tf_MVD*@*YyDM@bjF_97WKFOSP6sPJrxG-xkI12cXgJM%W7nIvN#nM-s(~x=3XeLTK=H>IdYjPVHUaQuqPW&$hH(yfN z>lGd7fN2N{(KQ(m?-5!RE^Vp~T*}`0R(|E>AcNK4Sq$t`lxwluT?ZKLmrLg?r{T6_0lQyvBKrJ(G+c#95DGtn zIK&8eGQD1LHWo2Ka84Nw2f<0%q!2CCRVvBPIhh7PH%Iq$CoL0%g;@&r5$Mdt@3xd2zW*ION8677zgcRVDKN?v%|o1iJ~j0ro+-vpQfOxTJ(0vW>UIVgIfV zG+~a4Cw|4&R+WwA?rVJOPCL* z$T-~41#t%*l>86z0E{r+99#5e-^Z&pYKDyPthimw3W0biWn@?V6i}*K1yh8ys+i4`b|TK^HpiMQjoS4e)5|A!wn#XKx54?9&}I!9JG#)buJsm7!}VtTi+R~oLtHU7z(#I5t(Go z;@Uf5h1+izoHy`NKjqh{9mNetz_P*(0^h`PC_pi+vcWSvhN8R^gP~%^p9T`GK-g_uH7aSdIIyKubzUyaaFh#lF9r3 z#e#xQk9h{Vb$x4B29X348_0QKrz>=@X#>^=F4eZ@3Mkeex9z!J_(!+IK{^)I5O$O+ z-#$l2M6f|T(W%7n)xM>y2}eWm%OUT--rr}^SJds`XDjz%wsM1)27A)>3^ITzLy!+B z#~5%`d(a(GGNh0(!x|FhT8ZHsyfJ?j9wY7O#A4%-v_CH@Z-asdd^+WzNeV(oH*#Io z_(_QQT;!^s??~P3N?fm=duwFpMN+=bjMnw4Xk33pxqN3qt<9oF>0aGoJ?rL6bj3UW z4bVKa1g}B#09q&m_{JUKZ1gzwxzNOPu5IZuYFhf;b@uwatV~ZwkiyB#8d^eaOk`(a ztNBgsy$V*=(8Iy^%))_|K1RZU_0m5?KSjtM@4frpH~-W7EAhU{4(%!3cBk(K)=w3ozQFd0D_Qg{?dKy9hg9I7NzsR_HzXY?}#oV;e+W~Y6>H3i>SzOT# znC4l~!irEc18ul38&L;93jMR^SGiRx9u8#bVd5F+_cyhCUn6>B`u$dig-AXWVK}at9%1Ia&Cio9rA2co0!I} z2^Q$=Agy!{^J}CjBS&Xqeo@i_0d>8HQ~4=-^SP6B)+=SqD|5 zI`b7NJu!c>g9IdGwNpmh<7u(1v(R}*ve zReWOruchDO;Fl`C4uMKi%pKE)2YjwNux=U`zsn8otNZ^cH@NXau5Fu$8KKl)`!VMl zvKX2hpyby8mpZ7&>Lk&rXlEB~6u5=I0nxdbM{pbR%pHYrlYYIGTb6vP*0UF1&lk>w z#m7w>Pa-maHg)`maI;pIY0FUB>(@VLzMmeuUz+^Y#7mX-I$w{DUxr+j|B9goIp=vd zzvqV{kN-dLL#;*}9U?Rqo=5s?7;$WET2uA_9l~R~ji-S&ZOqSp2hMHlTbrH86>YC* zs@4)xV|kq$gdz8-&%(<*-fGpJDjv!upE9gaUc4Xn)0{&IMHZ6-r1!weMF9NicoS2c z-7p8qrHe&={bR`;3O*Lry!`rD>E=bF0ITZNEt4oc@H$7;+C(cE_Xu9kW=IS}w=(1L z4tJb5f^g;lA$MYSvdUim{X09K+pmh;$jZL%U3UQlR6uI!3FTVewH|HR)VnCmow_fShuS1IK%=`4!#NN?)as22d8|NY;k zR9_*g1}wAcsQ4tV-$9uL;=3(rY)d(vQl^1-+0~Q=j#M*(O_`l2WI}N^=Ik z^ldtk?93sgGPAGYnu=a^khO1++^gAuJsi}#nR(V9R|C(kE#-XU&q`$@(DrHmIkOZB zBO6R&q7t}Hfvn;oU!z=8Yw$DPirk{>1Z?>}K}`LB3?7~>{tv;!a=G6H54W)OH0an< zG%850uQBGiQo{ZpfV#DE`MkP(*8ZX-{#F(LFDU)Y7sE9r_9>&hb9T5=!5j{#!3ibj zY>;rm-o#y==$&iR6A!Eq)i~t*D%EkInuwys!n>v|JZ$k?QgSuvxd@*$`RuU(C$x6# zbIar}C@bH=qvQSk;$pEy)%vUVFh=<$R<%pXAb38w*wW1{8v3@U9#GKYGd+MSb+~Zh zZP<`g6|uN6qq>B|*wz}dTs$+7qH!L=V?UnBcmFk_xIfS2jKZgmd7p=7ya+vAH-dMK{0xs{Nypt}9(jF|^GV zqWgG06`pypnfweqaSwI@zy9eE-o%4_pLIgtsepi}^G&Vst8bEW9q(}Jg&yLk=L)}j z4&@p_6$v#r~hd;xXHom>vqNfSZ{2OHehDj zq@eF&^lewVfBf$O&mlqtB8^JKNown&HU@HuLMV<+<Q^pUFXFR(PP#URAV|W|Cy1Lrf zcun()MxqR97E5fJxq7HaR#vv|IIHz{=Qw)Rkh14qKnKdM;tZhf=u2FZ3HM6J!V;fC9K*JcLeYK0YSq&?!|tJr>aLZqkS0E+W53 zy(d8$UI+Bc`3(8V?iQR;E;(0n*=(vR&iF=9CzP)&o8Wawg>|@c;HZ&dIf9*v@RA0+ zlDP6}4aGPvx*%BS>*ao7Zu8pc(%g^H%0`S6=o3XrXU_Y0=@prmbgE|JD9){e)=`A= zWH;r+Ld(x7b4Q!(P0DV&tW{kXc~30HR^Epgmy$@y(?c>P=-+jdVu>@Xtp=DBRCkZS z;gb#uE*>!2{VyZHR>m%&aHXJl^}y;l!i%)UN z?s2RVy00Q0{{q1cV-h3a`*VK(J|cEZ1eICbd#ZD;@ze}Ei;*Hm+_L25s1IECS-?tS zNM2Cupj7>M&SM$hDp7I=YkP+D<%QP{CkYX3%8q=)g; z%I#~{8_$8Aa z-Lk|>Wxo===)3H>TsP>fi&=eFO~stVtsJRhv=`8;h(P*t^G@XYUv^-ZPz-5U4lQAB zd+Hxx!C&%j7JCa2HxB)>fiW!Kl~aqJkA`2i$!R~o$9+ZJcu+Vk{jrGE8e*ZOzGT!o606M0>N6Mi6e5u&7QsCtq&7Y*BYOmguU>hx+cg?tXso z34SLnOy@p)s!#(xn>{BYENykgrk{X zQzN^_1aY=`;0|gvO0d(Q1VK`@c2J^K8Z1v}8I)nuZPjNFCz?#?zK*DE5YE~ z)N&Xrt;wh_S<&#GnzrF==UkU;P1vC6HLD75KkABRPwnrGH#Rpudg0VP7J!H}6h}#9 zYvt-Y<}h~4`e#KI`jDf{d35W?eo)jFcN5Sjqq^5FJDcGE7;gSe+4#KR57F@Ue2bh3 zE33rOfzGe5`ft79N4=*1f;Kq^Z*l|1ol!Vy@g+&%1~U*lHJ?K*FKHm)DoN^P7V zDtS4hmV{Quib?gE=e}T@dQp~hBiq=t{~{sg?NGa;fh5Y+ko{*^4sl>v@^ARma^!`g znKa4QzK+#gF0v?zUpGKMIj!&tLZzHR^L)z{wc(hj3TqDNE0c{ls5BiX2H~70WyrQg zai6MIms+0h)sjSMyOoaW^jA0Z20b{3@-us?np4(1cFT92ajzrYz6AjTA%I#ar*>ey zi8?QG*eT&BZWqCXmDLvEMEo_C=x`}Vi^TNBZ;Sd#3lX#NFL<>KLi|6kG~Q0qHsUu) z!W60ITUq4r<_%TcQ_Y;vdl~LGKuxDDxr>8`{Om($xKr<{xLZ+tj zu1lUCZPC>~$NbD`TJuHFb6VnL5?*YNDHBc~Ioe}bSM%FL7jrIwmU1MZ9fA;H`cH4i zFB#H@#AO9bgC2FicwmdBwVbF_Dtfq3(73AFNIqzxM6%kYxv!{4r?BQ6IJddBV8XDZ zBByw0F}pT2ta75mY^~>3ZuOf#W1ekEi5thyvw8Mz8O#~p-l&Hor?Yy0?ow@VIZ=|u zZdoLo)M8+8rL&+qL1}(HN=ob6piSpw0H%(ral79cA7KqTv;K0C#aWpJ^ZYJ7#;byv zb>_W3d=f9AIm#U2rfjJ&0nqtKx+^Z|RvXT@|G-Dv zQo;?=#c=`zw;aeV79?U|i-s5Ykw1F@hy2z>1CQQcGMDI`sBN0ob~T$$Q-hXsFcB00 zPyvK1-C?rxXHde0n{AAA;Ja5RTa0_knYQ?Nbpf5?^8pB%aSEX$yO-_xPP=Kjy$1b1^Y&3}*YCELV|$2923 OuPLct$-8v(!T$oB0&;r* diff --git a/static/img/project-versions.png b/static/img/project-versions.png index e0ca2b33819bc4aab2ec88af87730d458054e8be..8ef0bbc3f7c230c93bbe9e3b4b654b9aa70295b7 100644 GIT binary patch literal 14701 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 literal 22216 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 Ti{14FdY-}4)z4*}Q$iB}Ma9dx From 9644a388bfa3dc8f5c16d4c5bc416767553cc17f Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Mon, 23 Nov 2020 14:14:16 -0600 Subject: [PATCH 81/95] cases: rename Vrng Tutorial label in nav (use emoji) --- content/docs/sidebar.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/content/docs/sidebar.json b/content/docs/sidebar.json index 76c37cbab2..403614c379 100644 --- a/content/docs/sidebar.json +++ b/content/docs/sidebar.json @@ -68,7 +68,12 @@ "label": "Versioning Data and Models", "slug": "versioning-data-and-model-files", "source": "versioning-data-and-model-files/index.md", - "children": ["tutorial"] + "children": [ + { + "label": "Tutorial 👩‍💻", + "slug": "tutorial" + } + ] }, { "label": "Sharing Data and Model Files", From 0e479770d30efe42308bb847445e567fc7240ead Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Mon, 23 Nov 2020 14:14:53 -0600 Subject: [PATCH 82/95] cases: explain simple file naming a bit more per https://github.com/iterative/dvc.org/pull/1747#discussion_r528451009 --- .../versioning-data-and-model-files/index.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 664eea81b2..b19f0188e4 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -21,12 +21,15 @@ data._ DVC enables data _versioning through codification_. This means describing which data, ML artifacts, etc. should be in the environment at any given time. This is achieved with special [metafiles](/doc/user-guide/dvc-files-and-directories) -that can be put in Git — but we won't go much deeper into how it works here, -since we have many [guides](/doc/user-guide) and -[references](/doc/command-reference) for that. To learn how it looks and feels, -try our +that can be put in Git. These use constant file names but link to variable +contents (via the metadata in Git), so that the data can be modified +independently from the source code that addresses it. + +We won't go much deeper into how it works here, since we have many +[guides](/doc/user-guide) and [references](/doc/command-reference) for that. You +can also try our [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) -👩‍💻. +👩‍💻 to learn how it looks and feels. DVC's approach brings the following benefits: @@ -49,7 +52,7 @@ DVC's approach brings the following benefits: [data registries](/doc/use-cases/data-registries), and other best practices that improve productivity and scalability. - **Data compliance**: Maintain visibility on data and ML model changes. Review - who wants to modify them, and why, via pull requests (e.g. on GitHub). Audit + who wants to modify them, and why, with pull requests (e.g. on GitHub). Audit this process later: when was a model version approved, and by whom? In summary, data science and machine learning are iterative processes where the From 8bd9d9642e93411fd999b5f659839f6495b90384 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Mon, 23 Nov 2020 14:21:58 -0600 Subject: [PATCH 83/95] cases: Vrng copy edits --- .../use-cases/versioning-data-and-model-files/index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index b19f0188e4..eeac5de17e 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -25,13 +25,12 @@ that can be put in Git. These use constant file names but link to variable contents (via the metadata in Git), so that the data can be modified independently from the source code that addresses it. -We won't go much deeper into how it works here, since we have many +We won't go much deeper into how DVC works here, since we have many [guides](/doc/user-guide) and [references](/doc/command-reference) for that. You can also try our [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) -👩‍💻 to learn how it looks and feels. - -DVC's approach brings the following benefits: +👩‍💻 to learn how it looks and feels. For now, here are some of the high-level +benefits of this approach: - **Simple file names**: Work with a natural project structure. No need for ad hoc naming conventions like `data/20190922/labels_v7_final`. @@ -53,7 +52,8 @@ DVC's approach brings the following benefits: that improve productivity and scalability. - **Data compliance**: Maintain visibility on data and ML model changes. Review who wants to modify them, and why, with pull requests (e.g. on GitHub). Audit - this process later: when was a model version approved, and by whom? + this process later to determine when and by whom where data or model versions + approved. In summary, data science and machine learning are iterative processes where the lifecycles of data, code, and ML models occur at different paces. DVC helps From 1686639c053641dc97b2569c62af74e36f2370c2 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Mon, 23 Nov 2020 18:49:51 -0600 Subject: [PATCH 84/95] cases: add efficient data mgmt benefit per https://github.com/iterative/dvc.org/pull/1747#discussion_r528993348 --- .../versioning-data-and-model-files/index.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index eeac5de17e..57030c29bd 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -32,11 +32,16 @@ can also try our 👩‍💻 to learn how it looks and feels. For now, here are some of the high-level benefits of this approach: -- **Simple file names**: Work with a natural project structure. No need for ad - hoc naming conventions like `data/20190922/labels_v7_final`. - **Lightweight**: No databases, servers, or external services are required. DVC is a [free](https://github.com/iterative/dvc/blob/master/LICENSE), open-source [command line](/doc/command-reference) tool. +- **Simple file names**: Work with a natural project structure. No need for ad + hoc naming conventions like `data/20190922/labels_v7_final`. +- **Efficient data management**: A content-addressed data cache + that utilizes + [links](/doc/user-guide/large-dataset-optimization#file-link-types-for-the-dvc-cache) + prevents file duplication and enables teams to + [share storage](/doc/use-cases/shared-development-server) during development. - **Collaboration**: Data artifacts and machine learning models can be easily [shared](/doc/use-cases/sharing-data-and-model-files) and [reused](/doc/start/data-access) via on-premises or cloud storage @@ -44,7 +49,7 @@ benefits of this approach: - **Reproducibility**: Restore any project version and find the corresponding data instantly. Identify past research inputs to understand its results, or for debugging. -- **Integrations**: Adopting a +- **Integration**: Adopting a [Git workflow](https://about.gitlab.com/topics/version-control/what-is-git-workflow/) opens the door to advanced scenarios such as continuous integration (CI/CD e.g. [CML](https://cml.dev/)), specialized patterns like From 4ab5ed430563aabe6e3380310604de58f40f6c4a Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Mon, 23 Nov 2020 18:53:03 -0600 Subject: [PATCH 85/95] cases: reorder Vrsg benefits list per https://github.com/iterative/dvc.org/pull/1747#discussion_r528993949 --- .../versioning-data-and-model-files/index.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 57030c29bd..9f72044f1e 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -32,23 +32,23 @@ can also try our 👩‍💻 to learn how it looks and feels. For now, here are some of the high-level benefits of this approach: -- **Lightweight**: No databases, servers, or external services are required. DVC - is a [free](https://github.com/iterative/dvc/blob/master/LICENSE), open-source - [command line](/doc/command-reference) tool. +- **Reproducibility**: Restore any project version and find the corresponding + data instantly. Identify past research inputs to understand its results, or + for debugging. - **Simple file names**: Work with a natural project structure. No need for ad hoc naming conventions like `data/20190922/labels_v7_final`. -- **Efficient data management**: A content-addressed data cache +- **Efficient data management**: A content-addressable data cache that utilizes [links](/doc/user-guide/large-dataset-optimization#file-link-types-for-the-dvc-cache) prevents file duplication and enables teams to [share storage](/doc/use-cases/shared-development-server) during development. +- **Lightweight**: No databases, servers, or external services are required. DVC + is a [free](https://github.com/iterative/dvc/blob/master/LICENSE), open-source + [command line](/doc/command-reference) tool. - **Collaboration**: Data artifacts and machine learning models can be easily [shared](/doc/use-cases/sharing-data-and-model-files) and [reused](/doc/start/data-access) via on-premises or cloud storage [remotely](/doc/command-reference/remote). -- **Reproducibility**: Restore any project version and find the corresponding - data instantly. Identify past research inputs to understand its results, or - for debugging. - **Integration**: Adopting a [Git workflow](https://about.gitlab.com/topics/version-control/what-is-git-workflow/) opens the door to advanced scenarios such as continuous integration (CI/CD From 1b48db2a897318c2ff7d17d40cd544872a250731 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Mon, 23 Nov 2020 20:47:50 -0600 Subject: [PATCH 86/95] cases: rewrite file naming and data mgmt benefits of Vrsg --- .../versioning-data-and-model-files/index.md | 33 ++++++++----------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 9f72044f1e..2a76732357 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -2,18 +2,17 @@ Data science teams today face data management questions around versioning datasets, data artifacts, and machine learning models. How do we keep track of -changes in data, code, and ML models together? What's the best way to organize -and store multiple versions of data and model files? How can data lifecycles be -defined and enforced? +changes in data, source code, and ML models together? What's the best way to +organize and store multiple versions of data and model files? How can data +lifecycles be defined and enforced? ![](/img/data-ver-complex.png) _Exponential complexity of data science projects_ Data Version Control (DVC) can address these issues by helping you organize your data and models effectively, and capture their versions with [Git commits](<(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)>) -without having to put the actual data contents in the repo. This way you can -have a single, immutable history for all of your assets and artifacts, and at -the same time, the data stays with you. +without having to put the actual data contents in the repo. You can have a +single immutable history for all of your assets and data artifacts. ![](/img/project-versions.png) _DVC matches the right versions of code and data._ @@ -21,9 +20,7 @@ data._ DVC enables data _versioning through codification_. This means describing which data, ML artifacts, etc. should be in the environment at any given time. This is achieved with special [metafiles](/doc/user-guide/dvc-files-and-directories) -that can be put in Git. These use constant file names but link to variable -contents (via the metadata in Git), so that the data can be modified -independently from the source code that addresses it. +that can be put in Git. We won't go much deeper into how DVC works here, since we have many [guides](/doc/user-guide) and [references](/doc/command-reference) for that. You @@ -35,20 +32,18 @@ benefits of this approach: - **Reproducibility**: Restore any project version and find the corresponding data instantly. Identify past research inputs to understand its results, or for debugging. -- **Simple file names**: Work with a natural project structure. No need for ad - hoc naming conventions like `data/20190922/labels_v7_final`. -- **Efficient data management**: A content-addressable data cache - that utilizes - [links](/doc/user-guide/large-dataset-optimization#file-link-types-for-the-dvc-cache) - prevents file duplication and enables teams to - [share storage](/doc/use-cases/shared-development-server) during development. +- **Consistent file names**: No need for ad hoc naming conventions like + `data/20190922/labels_v7_final`. +- **Efficient data management**: Separate data from code storage automatically. + This also enables teams to + [share data stores](/doc/use-cases/shared-development-server) across + development environments. - **Lightweight**: No databases, servers, or external services are required. DVC is a [free](https://github.com/iterative/dvc/blob/master/LICENSE), open-source [command line](/doc/command-reference) tool. - **Collaboration**: Data artifacts and machine learning models can be easily - [shared](/doc/use-cases/sharing-data-and-model-files) and - [reused](/doc/start/data-access) via on-premises or cloud storage - [remotely](/doc/command-reference/remote). + [shared remotely](/doc/use-cases/sharing-data-and-model-files) and + [reused](/doc/start/data-access) by others via on-premises or cloud storage. - **Integration**: Adopting a [Git workflow](https://about.gitlab.com/topics/version-control/what-is-git-workflow/) opens the door to advanced scenarios such as continuous integration (CI/CD From 0fbf2004754b4e99c035d713338641d162c89bc8 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Mon, 23 Nov 2020 21:15:23 -0600 Subject: [PATCH 87/95] cases: expand story to cover storage and data management and update benefits --- .../versioning-data-and-model-files/index.md | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 2a76732357..07813aa76a 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -8,11 +8,18 @@ lifecycles be defined and enforced? ![](/img/data-ver-complex.png) _Exponential complexity of data science projects_ -Data Version Control (DVC) can address these issues by helping you organize your -data and models effectively, and capture their versions with +Data Version Control (DVC) addresses these issues by helping you organize data +and models effectively, and capture their versions with [Git commits](<(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)>) without having to put the actual data contents in the repo. You can have a -single immutable history for all of your assets and data artifacts. +single immutable history for all assets and data artifacts. + +Unique data versions are stored automatically in a way that prevents file +duplication. This way the data stays with you. Additionally, now data paths +(file names) don't need to change, because they can +[link](/doc/user-guide/large-dataset-optimization#file-link-types-for-the-dvc-cache) +to those variable contents. And the data can be modified without worrying about +code. ![](/img/project-versions.png) _DVC matches the right versions of code and data._ @@ -27,20 +34,20 @@ We won't go much deeper into how DVC works here, since we have many can also try our [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) 👩‍💻 to learn how it looks and feels. For now, here are some of the high-level -benefits of this approach: +benefits of our approach: -- **Reproducibility**: Restore any project version and find the corresponding - data instantly. Identify past research inputs to understand its results, or - for debugging. +- **Lightweight**: No databases, servers, or external services are required. DVC + is a [free](https://github.com/iterative/dvc/blob/master/LICENSE), open-source + [command line](/doc/command-reference) tool. - **Consistent file names**: No need for ad hoc naming conventions like `data/20190922/labels_v7_final`. - **Efficient data management**: Separate data from code storage automatically. This also enables teams to - [share data stores](/doc/use-cases/shared-development-server) across - development environments. -- **Lightweight**: No databases, servers, or external services are required. DVC - is a [free](https://github.com/iterative/dvc/blob/master/LICENSE), open-source - [command line](/doc/command-reference) tool. + [share data stores](/doc/use-cases/shared-development-server) across working + environments. +- **Reproducibility**: Restore any project version and find the corresponding + data instantly. Identify past research inputs to understand the results, or + for debugging. - **Collaboration**: Data artifacts and machine learning models can be easily [shared remotely](/doc/use-cases/sharing-data-and-model-files) and [reused](/doc/start/data-access) by others via on-premises or cloud storage. @@ -56,5 +63,5 @@ benefits of this approach: approved. In summary, data science and machine learning are iterative processes where the -lifecycles of data, code, and ML models occur at different paces. DVC helps +lifecycles of data, models, and code happen at different paces. DVC helps integrate and manage them effectively. From c7617ef2c646d55e91e9a26a7e4ab9219fe3bc08 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Mon, 23 Nov 2020 23:12:23 -0600 Subject: [PATCH 88/95] cases: generalized Vrsg benefits --- .../versioning-data-and-model-files/index.md | 57 +++++++++---------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 07813aa76a..52bf9b3a68 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -9,16 +9,16 @@ lifecycles be defined and enforced? ![](/img/data-ver-complex.png) _Exponential complexity of data science projects_ Data Version Control (DVC) addresses these issues by helping you organize data -and models effectively, and capture their versions with -[Git commits](<(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)>) -without having to put the actual data contents in the repo. You can have a -single immutable history for all assets and data artifacts. +and models effectively. It lets you capture their versions with +[Git commits](<(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)>), +without putting the actual data in the repo. You can have a single immutable +history for all assets and data artifacts. -Unique data versions are stored automatically in a way that prevents file -duplication. This way the data stays with you. Additionally, now data paths -(file names) don't need to change, because they can +Unique data versions are stored automatically (preventing file duplication), so +the data stays with you. Additionally, file names don't need to change in DVC, +because they [link](/doc/user-guide/large-dataset-optimization#file-link-types-for-the-dvc-cache) -to those variable contents. And the data can be modified without worrying about +to those variable contents. Now the data can be modified without worrying about code. ![](/img/project-versions.png) _DVC matches the right versions of code and @@ -33,33 +33,32 @@ We won't go much deeper into how DVC works here, since we have many [guides](/doc/user-guide) and [references](/doc/command-reference) for that. You can also try our [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) -👩‍💻 to learn how it looks and feels. For now, here are some of the high-level -benefits of our approach: +👩‍💻 to learn how it looks and feels. These are the high-level benefits of our +approach: -- **Lightweight**: No databases, servers, or external services are required. DVC - is a [free](https://github.com/iterative/dvc/blob/master/LICENSE), open-source - [command line](/doc/command-reference) tool. -- **Consistent file names**: No need for ad hoc naming conventions like - `data/20190922/labels_v7_final`. -- **Efficient data management**: Separate data from code storage automatically. - This also enables teams to - [share data stores](/doc/use-cases/shared-development-server) across working - environments. +- **Simplicity**: DVC is a + [free](https://github.com/iterative/dvc/blob/master/LICENSE), open-source + [command line](/doc/command-reference) tool that doesn't require databases or + servers. It keeps your project readable and consistent: No need for ad hoc + file names like `data/20190922/labels_v7_final.bak`. +- **Data management**: Efficient data storage is automated and decoupled from + other assets, which enables teams to + [share data stores](/doc/use-cases/shared-development-server) across + development environments. Data and ML models can be + [shared remotely](/doc/use-cases/sharing-data-and-model-files) and + [reused](/doc/start/data-access) data using cloud storage, improving + **collaboration**. - **Reproducibility**: Restore any project version and find the corresponding data instantly. Identify past research inputs to understand the results, or for debugging. -- **Collaboration**: Data artifacts and machine learning models can be easily - [shared remotely](/doc/use-cases/sharing-data-and-model-files) and - [reused](/doc/start/data-access) by others via on-premises or cloud storage. -- **Integration**: Adopting a - [Git workflow](https://about.gitlab.com/topics/version-control/what-is-git-workflow/) - opens the door to advanced scenarios such as continuous integration (CI/CD - e.g. [CML](https://cml.dev/)), specialized patterns like +- [**Git workflows**](https://about.gitlab.com/topics/version-control/what-is-git-workflow/). + They open the door to advanced scenarios such as continuous integration + (CI/CD) like [CML](https://cml.dev/), specialized patterns such as [data registries](/doc/use-cases/data-registries), and other best practices that improve productivity and scalability. -- **Data compliance**: Maintain visibility on data and ML model changes. Review - who wants to modify them, and why, with pull requests (e.g. on GitHub). Audit - this process later to determine when and by whom where data or model versions +- **Data compliance**: Maintain visibility on data and model changes. Review who + wants to modify them, and why, with pull requests (e.g. on GitHub). Audit this + process later to determine when and by whom where data or model versions approved. In summary, data science and machine learning are iterative processes where the From c14a271ac8302f7dd1987824f18371da9d8a7be4 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 25 Nov 2020 13:20:13 -0600 Subject: [PATCH 89/95] cases: separate data mgmt from versioning (through codification) in Vrsg --- .../versioning-data-and-model-files/index.md | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 52bf9b3a68..6eea8eb15b 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -8,28 +8,26 @@ lifecycles be defined and enforced? ![](/img/data-ver-complex.png) _Exponential complexity of data science projects_ -Data Version Control (DVC) addresses these issues by helping you organize data -and models effectively. It lets you capture their versions with -[Git commits](<(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)>), -without putting the actual data in the repo. You can have a single immutable -history for all assets and data artifacts. +Data Version Control (DVC) helps you organize data and models effectively. +Unique data versions are stored automatically (preventing file duplication). +This storage is separated from the workspace so it can be handled +independently. Translation: the data stays with you. -Unique data versions are stored automatically (preventing file duplication), so -the data stays with you. Additionally, file names don't need to change in DVC, -because they +Now file names in the project don't need to change, because they can [link](/doc/user-guide/large-dataset-optimization#file-link-types-for-the-dvc-cache) -to those variable contents. Now the data can be modified without worrying about -code. +to those variable contents. And their contents can be modified without worrying +about updating paths in code. ![](/img/project-versions.png) _DVC matches the right versions of code and data._ -DVC enables data _versioning through codification_. This means describing which +DVC provides data versioning through codification. That means describing which data, ML artifacts, etc. should be in the environment at any given time. This is achieved with special [metafiles](/doc/user-guide/dvc-files-and-directories) -that can be put in Git. +that can be put in Git instead of the actual data (already stored by DVC). The +result is a single immutable history for code and data. -We won't go much deeper into how DVC works here, since we have many +We won't go much deeper into how DVC works now, since we have many [guides](/doc/user-guide) and [references](/doc/command-reference) for that. You can also try our [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) @@ -42,12 +40,12 @@ approach: servers. It keeps your project readable and consistent: No need for ad hoc file names like `data/20190922/labels_v7_final.bak`. - **Data management**: Efficient data storage is automated and decoupled from - other assets, which enables teams to + other assets (source code, config files, etc.). This enables teams to [share data stores](/doc/use-cases/shared-development-server) across development environments. Data and ML models can be [shared remotely](/doc/use-cases/sharing-data-and-model-files) and - [reused](/doc/start/data-access) data using cloud storage, improving - **collaboration**. + [reused](/doc/start/data-access) via on-premisses or cloud storage, improving + on **collaboration**. - **Reproducibility**: Restore any project version and find the corresponding data instantly. Identify past research inputs to understand the results, or for debugging. From 020fb3f81fce0700319a8fa4ea9d0ecbed9e4873 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 25 Nov 2020 13:24:30 -0600 Subject: [PATCH 90/95] Make note about other guides, refs, and tutorial (Vrng) --- .../versioning-data-and-model-files/index.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 6eea8eb15b..bee8c08040 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -27,12 +27,13 @@ achieved with special [metafiles](/doc/user-guide/dvc-files-and-directories) that can be put in Git instead of the actual data (already stored by DVC). The result is a single immutable history for code and data. -We won't go much deeper into how DVC works now, since we have many -[guides](/doc/user-guide) and [references](/doc/command-reference) for that. You -can also try our -[versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) -👩‍💻 to learn how it looks and feels. These are the high-level benefits of our -approach: +> To learn more about how DVC works, please refer to our many +> [guides](/doc/user-guide) and [references](/doc/command-reference). You can +> also try the +> [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) +> 👩‍💻 to see how it looks and feels. + +These are the high-level benefits of our approach: - **Simplicity**: DVC is a [free](https://github.com/iterative/dvc/blob/master/LICENSE), open-source From 1a3a58c4fe3fcf201ef770cf036b1f283c41d805 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 25 Nov 2020 13:33:11 -0600 Subject: [PATCH 91/95] cases: emphasize Simplicity benefit of Vrng is the opposite of "complicated" --- .../docs/use-cases/versioning-data-and-model-files/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index bee8c08040..f5bf4b2b4e 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -38,8 +38,8 @@ These are the high-level benefits of our approach: - **Simplicity**: DVC is a [free](https://github.com/iterative/dvc/blob/master/LICENSE), open-source [command line](/doc/command-reference) tool that doesn't require databases or - servers. It keeps your project readable and consistent: No need for ad hoc - file names like `data/20190922/labels_v7_final.bak`. + servers. It keeps your project readable and consistent: No need for + complicated file names like `data/20190922/labels_v7_final.bak`. - **Data management**: Efficient data storage is automated and decoupled from other assets (source code, config files, etc.). This enables teams to [share data stores](/doc/use-cases/shared-development-server) across From f6598bd1afdd25ee810ae3742c7b6dd560d982c7 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Thu, 26 Nov 2020 18:20:22 -0600 Subject: [PATCH 92/95] cases: another rewrite of text and benefits --- .../versioning-data-and-model-files/index.md | 107 ++++++++++-------- 1 file changed, 59 insertions(+), 48 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index f5bf4b2b4e..1b27d3a9ed 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -1,65 +1,76 @@ # Versioning Data and Models -Data science teams today face data management questions around versioning -datasets, data artifacts, and machine learning models. How do we keep track of -changes in data, source code, and ML models together? What's the best way to -organize and store multiple versions of data and model files? How can data -lifecycles be defined and enforced? +Data science teams face data management questions around versions of data and +machine learning models. How do we keep track of changes in data, source code, +and ML models together? What's the best way to organize and store variations of +these files and directories? ![](/img/data-ver-complex.png) _Exponential complexity of data science projects_ -Data Version Control (DVC) helps you organize data and models effectively. -Unique data versions are stored automatically (preventing file duplication). -This storage is separated from the workspace so it can be handled -independently. Translation: the data stays with you. +Another problem in the field has to do with bookkeeping: being able to identify +past research inputs and processes to understand results, for knowledge sharing, +or for debugging. There's also the matter of defining and enforcing data +lifecycles. -Now file names in the project don't need to change, because they can -[link](/doc/user-guide/large-dataset-optimization#file-link-types-for-the-dvc-cache) -to those variable contents. And their contents can be modified without worrying -about updating paths in code. +**Data Version Control** (DVC) helps you organize data and models effectively, +and capture their versions with +[Git commits](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository). +It supports data _versioning through codification_: describing which datasets, +ML artifacts, etc. should be in the workspace at any given time. +DVC also provides mechanisms to cache different data contents, and to switch +between their versions. -![](/img/project-versions.png) _DVC matches the right versions of code and -data._ +![](/img/project-versions.png) _DVC matches the right versions of data to the +rest of your project._ -DVC provides data versioning through codification. That means describing which -data, ML artifacts, etc. should be in the environment at any given time. This is -achieved with special [metafiles](/doc/user-guide/dvc-files-and-directories) -that can be put in Git instead of the actual data (already stored by DVC). The -result is a single immutable history for code and data. +This is achieved with special +[metafiles](/doc/user-guide/dvc-files-and-directories) that can be put in Git +instead of the actual data. And by storing unique data versions (no file +duplication) separate from the workspace. -> To learn more about how DVC works, please refer to our many -> [guides](/doc/user-guide) and [references](/doc/command-reference). You can -> also try the +The result is a single immutable history for data, code, models, etc., like an +experiments journal. This makes the project fully _reproducible_: +[Restore](/doc/command-reference/checkout) any project version and find the +corresponding data instantly. And at the same time, the data stays with you — +free from the storage constraints of Git repos and +[hosting](https://docs.github.com/en/free-pro-team@latest/github/managing-large-files/what-is-my-disk-quota). + +> To learn how it looks and feels, try the > [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) -> 👩‍💻 to see how it looks and feels. +> 👩‍💻. And there are many other [guides](/doc/user-guide) and +> [references](/doc/command-reference) that explain DVC in more detail. -These are the high-level benefits of our approach: +These are the benefits of our approach: -- **Simplicity**: DVC is a +- **Lightweight**: DVC is a [free](https://github.com/iterative/dvc/blob/master/LICENSE), open-source [command line](/doc/command-reference) tool that doesn't require databases or - servers. It keeps your project readable and consistent: No need for - complicated file names like `data/20190922/labels_v7_final.bak`. -- **Data management**: Efficient data storage is automated and decoupled from - other assets (source code, config files, etc.). This enables teams to - [share data stores](/doc/use-cases/shared-development-server) across - development environments. Data and ML models can be - [shared remotely](/doc/use-cases/sharing-data-and-model-files) and - [reused](/doc/start/data-access) via on-premisses or cloud storage, improving - on **collaboration**. -- **Reproducibility**: Restore any project version and find the corresponding - data instantly. Identify past research inputs to understand the results, or - for debugging. -- [**Git workflows**](https://about.gitlab.com/topics/version-control/what-is-git-workflow/). - They open the door to advanced scenarios such as continuous integration - (CI/CD) like [CML](https://cml.dev/), specialized patterns such as - [data registries](/doc/use-cases/data-registries), and other best practices - that improve productivity and scalability. -- **Data compliance**: Maintain visibility on data and model changes. Review who - wants to modify them, and why, with pull requests (e.g. on GitHub). Audit this - process later to determine when and by whom where data or model versions - approved. + servers. + +- **Consistency**: Keep your projects readable with stable file names (which can + contain variable data). No need for complicated paths like + `data/20190922/labels_v7_final` or for constantly editing them in source code. + +- **Efficient data management**: Use a cost-effective on-premises or cloud + storage of your choice for your data and ML models. DVC + [optimizes](/doc/user-guide/large-dataset-optimization) their storage and + transfers. + +- **Collaboration**: Easily share project data + [internally](/doc/use-cases/shared-development-server) or + [remotely](/doc/use-cases/sharing-data-and-model-files), or + [reuse](/doc/start/data-access) it elsewhere. + +- **Data compliance**: Review data modification attempts as Git + [pull requests](https://www.dummies.com/web-design-development/what-are-github-pull-requests/). + Audit this process later to learn when data or model versions were approved, + and why. + +- **GitOps**: Connect your data science projects with the Git-powered universe. + Git workflows open the door to advanced tools such as continuous integration + (like [CML](https://cml.dev/) CI/CD), specialized patterns such as + [data registries](/doc/use-cases/data-registries), and other best practices. In summary, data science and machine learning are iterative processes where the lifecycles of data, models, and code happen at different paces. DVC helps -integrate and manage them effectively. +integrate and manage them effectively. There are other things that DVC can do From 6a75449a213561ae473f3fe92edd6ade4213e668 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Thu, 26 Nov 2020 23:13:56 -0600 Subject: [PATCH 93/95] cases: copy edits to latest Vrng iteration, and append next steps paragaph (bottom) --- .../versioning-data-and-model-files/index.md | 61 ++++++++++--------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 1b27d3a9ed..423264d7e3 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -8,9 +8,8 @@ these files and directories? ![](/img/data-ver-complex.png) _Exponential complexity of data science projects_ Another problem in the field has to do with bookkeeping: being able to identify -past research inputs and processes to understand results, for knowledge sharing, -or for debugging. There's also the matter of defining and enforcing data -lifecycles. +past research inputs and processes to understand results, for knowledge sharing +or for debugging. **Data Version Control** (DVC) helps you organize data and models effectively, and capture their versions with @@ -18,48 +17,49 @@ and capture their versions with It supports data _versioning through codification_: describing which datasets, ML artifacts, etc. should be in the workspace at any given time. DVC also provides mechanisms to cache different data contents, and to switch -between their versions. +between these versions. ![](/img/project-versions.png) _DVC matches the right versions of data to the rest of your project._ +DVC makes projects fully _reproducible_: +[Restore](/doc/command-reference/checkout) any project version and find the +corresponding data instantly. At the same time, the data stays with you — free +from Git hosting storage +[constraints](https://docs.github.com/en/free-pro-team@latest/github/managing-large-files/what-is-my-disk-quota). + This is achieved with special [metafiles](/doc/user-guide/dvc-files-and-directories) that can be put in Git -instead of the actual data. And by storing unique data versions (no file -duplication) separate from the workspace. +instead of the actual data. And by storing unique data versions (preventing file +duplication) separate from the workspace. Now file names don't need to change, +because they can variable data. The result is a single immutable history for +data, code, models, etc. — a proper experiments journal. -The result is a single immutable history for data, code, models, etc., like an -experiments journal. This makes the project fully _reproducible_: -[Restore](/doc/command-reference/checkout) any project version and find the -corresponding data instantly. And at the same time, the data stays with you — -free from the storage constraints of Git repos and -[hosting](https://docs.github.com/en/free-pro-team@latest/github/managing-large-files/what-is-my-disk-quota). - -> To learn how it looks and feels, try the +> To learn how DVC looks and feels, try the > [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) -> 👩‍💻. And there are many other [guides](/doc/user-guide) and -> [references](/doc/command-reference) that explain DVC in more detail. +> 👩‍💻.
There are also other [guides](/doc/user-guide) and +> [references](/doc/command-reference) that explain DVC in detail. -These are the benefits of our approach: +Benefits of our approach include: - **Lightweight**: DVC is a [free](https://github.com/iterative/dvc/blob/master/LICENSE), open-source - [command line](/doc/command-reference) tool that doesn't require databases or - servers. + [command line](/doc/command-reference) tool that doesn't require databases, + servers, or any other special services. -- **Consistency**: Keep your projects readable with stable file names (which can - contain variable data). No need for complicated paths like - `data/20190922/labels_v7_final` or for constantly editing them in source code. +- **Consistency**: Keep your projects readable with stable file names. No need + for complicated paths like `data/20190922/labels_v7_final` or for constantly + editing these in source code. - **Efficient data management**: Use a cost-effective on-premises or cloud storage of your choice for your data and ML models. DVC - [optimizes](/doc/user-guide/large-dataset-optimization) their storage and + [optimizes](/doc/user-guide/large-dataset-optimization) data storage and transfers. -- **Collaboration**: Easily share project data - [internally](/doc/use-cases/shared-development-server) or +- **Collaboration**: Easily distribute your project development and share its + data [internally](/doc/use-cases/shared-development-server) and [remotely](/doc/use-cases/sharing-data-and-model-files), or - [reuse](/doc/start/data-access) it elsewhere. + [reuse](/doc/start/data-access) it in other places. - **Data compliance**: Review data modification attempts as Git [pull requests](https://www.dummies.com/web-design-development/what-are-github-pull-requests/). @@ -72,5 +72,10 @@ These are the benefits of our approach: [data registries](/doc/use-cases/data-registries), and other best practices. In summary, data science and machine learning are iterative processes where the -lifecycles of data, models, and code happen at different paces. DVC helps -integrate and manage them effectively. There are other things that DVC can do +lifecycles of data, models, and code happen at different paces. DVC helps you +define, manage, and enforce them. + +And this is only the beginning. DVC comes with other [features](/features) +specific to data science out-of-the-box. Build, run, and versioning +[data pipelines](/doc/command-reference/dag), manage +[experiments](/doc/start/experiments) effectively, and more! From 2ccd32efd9d5e6eafe507bca3d6c3cb4ebb7bbb6 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Fri, 4 Dec 2020 01:10:19 -0600 Subject: [PATCH 94/95] cases: another iteration of Versioning use case --- .../versioning-data-and-model-files/index.md | 99 ++++++++++--------- 1 file changed, 53 insertions(+), 46 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 423264d7e3..fc9de48df0 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -8,37 +8,40 @@ these files and directories? ![](/img/data-ver-complex.png) _Exponential complexity of data science projects_ Another problem in the field has to do with bookkeeping: being able to identify -past research inputs and processes to understand results, for knowledge sharing -or for debugging. - -**Data Version Control** (DVC) helps you organize data and models effectively, -and capture their versions with -[Git commits](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository). -It supports data _versioning through codification_: describing which datasets, -ML artifacts, etc. should be in the workspace at any given time. -DVC also provides mechanisms to cache different data contents, and to switch -between these versions. - -![](/img/project-versions.png) _DVC matches the right versions of data to the -rest of your project._ - -DVC makes projects fully _reproducible_: -[Restore](/doc/command-reference/checkout) any project version and find the -corresponding data instantly. At the same time, the data stays with you — free -from Git hosting storage -[constraints](https://docs.github.com/en/free-pro-team@latest/github/managing-large-files/what-is-my-disk-quota). - -This is achieved with special -[metafiles](/doc/user-guide/dvc-files-and-directories) that can be put in Git -instead of the actual data. And by storing unique data versions (preventing file -duplication) separate from the workspace. Now file names don't need to change, -because they can variable data. The result is a single immutable history for -data, code, models, etc. — a proper experiments journal. - -> To learn how DVC looks and feels, try the -> [versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) -> 👩‍💻.
There are also other [guides](/doc/user-guide) and -> [references](/doc/command-reference) that explain DVC in detail. +past data inputs and processes to understand their results, for knowledge +sharing, or for debugging. + +**Data Version Control** (DVC) lets you capture the versions of your data and +models in +[Git commits](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository), +while storing them on-premises or in cloud storage. It also provides a mechanism +to switch between these different data contents. The result is a single history +for data, code, and ML models that you can traverse — a proper journal of your +work! + +![](/img/project-versions.png) _DVC matches the right versions of data, code, +and models for you 💘._ + +DVC enables data _versioning through codification_. You write simple +[metafiles](/doc/user-guide/dvc-files-and-directories) once, describing what +datasets, ML artifacts, etc. to track. This metadata can be put in Git in lieu +of large files. Now you can use DVC to create +[snapshots](/doc/command-reference/add) of the data, +[restore](/doc/command-reference/checkout) previous versions, +[reproduce](/doc/command-reference/repro) experiments, record evolving +[metrics](/doc/command-reference/metrics), and more! + +👩‍💻 **Intrigued?** Try our +[versioning tutorial](/doc/use-cases/versioning-data-and-model-files/tutorial) +to learn how DVC looks and feels firsthand. + +As you use DVC, unique versions of your data files and directories are +[cached](dvc-files-and-directories#structure-of-the-cache-directory) in a +systematic way (preventing file duplication). The working datastore is separated +from your workspace to keep the project light, but stays connected +via file +[links](/doc/user-guide/large-dataset-optimization#file-link-types-for-the-dvc-cache) +handled automatically by DVC. Benefits of our approach include: @@ -47,14 +50,18 @@ Benefits of our approach include: [command line](/doc/command-reference) tool that doesn't require databases, servers, or any other special services. -- **Consistency**: Keep your projects readable with stable file names. No need - for complicated paths like `data/20190922/labels_v7_final` or for constantly +- **Consistency**: Keep your projects readable with stable file names — they + don't need to change because they represent variable data. No need for + complicated paths like `data/20190922/labels_v7_final` or for constantly editing these in source code. -- **Efficient data management**: Use a cost-effective on-premises or cloud - storage of your choice for your data and ML models. DVC - [optimizes](/doc/user-guide/large-dataset-optimization) data storage and - transfers. +- **Efficient data management**: Use a familiar and cost-effective storage + solution of your choice (e.g. SFTP, S3, HDFS, + [etc.](/doc/command-reference/remote/add#supported-storage-types)) — free from + Git hosting + [constraints](https://docs.github.com/en/free-pro-team@latest/github/managing-large-files/what-is-my-disk-quota). + Storing and transferring are + [optimized](/doc/user-guide/large-dataset-optimization) by DVC. - **Collaboration**: Easily distribute your project development and share its data [internally](/doc/use-cases/shared-development-server) and @@ -63,19 +70,19 @@ Benefits of our approach include: - **Data compliance**: Review data modification attempts as Git [pull requests](https://www.dummies.com/web-design-development/what-are-github-pull-requests/). - Audit this process later to learn when data or model versions were approved, - and why. + Audit the project's immutable history to learn when datasets or models were + approved, and why. - **GitOps**: Connect your data science projects with the Git-powered universe. Git workflows open the door to advanced tools such as continuous integration (like [CML](https://cml.dev/) CI/CD), specialized patterns such as [data registries](/doc/use-cases/data-registries), and other best practices. -In summary, data science and machine learning are iterative processes where the -lifecycles of data, models, and code happen at different paces. DVC helps you -define, manage, and enforce them. +In summary, data science and ML are iterative processes where the lifecycles of +data, models, and code happen at different paces. DVC helps you manage, and +enforce them. -And this is only the beginning. DVC comes with other [features](/features) -specific to data science out-of-the-box. Build, run, and versioning -[data pipelines](/doc/command-reference/dag), manage -[experiments](/doc/start/experiments) effectively, and more! +And this is just the beginning. DVC supports multiple advanced features +out-of-the-box: Build, run, and versioning +[data pipelines](/doc/command-reference/dag), +[manage experiments](/doc/start/experiments) effectively, and more. From 0d093b8adca4916113bbd87b2b737dd78340fb2e Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Sun, 6 Dec 2020 00:27:15 -0600 Subject: [PATCH 95/95] cases: clarify data mgmt is for data in Vrng benefits --- .../docs/use-cases/versioning-data-and-model-files/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index fc9de48df0..df3e8307a8 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -56,12 +56,12 @@ Benefits of our approach include: editing these in source code. - **Efficient data management**: Use a familiar and cost-effective storage - solution of your choice (e.g. SFTP, S3, HDFS, + solution for your data and models (e.g. SFTP, S3, HDFS, [etc.](/doc/command-reference/remote/add#supported-storage-types)) — free from Git hosting [constraints](https://docs.github.com/en/free-pro-team@latest/github/managing-large-files/what-is-my-disk-quota). - Storing and transferring are - [optimized](/doc/user-guide/large-dataset-optimization) by DVC. + DVC [optimizes](/doc/user-guide/large-dataset-optimization) storing and + transferring large files. - **Collaboration**: Easily distribute your project development and share its data [internally](/doc/use-cases/shared-development-server) and
>AV(E{QP59t$5@Fx<$4FRMOcZUiU(G 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 b9(5h1{~}-I9gn>RGF9g_^)zzSuK4{o)i0kX literal 0 HcmV?d00001 diff --git a/static/img/ml-pipeline-evolution.png b/static/img/ml-pipeline-evolution.png deleted file mode 100644 index f1882b0beb945f884ac8802c51d85cdd2acedfe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67767 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 Date: Wed, 18 Nov 2020 14:36:36 -0600 Subject: [PATCH 73/95] cases: rework Vrsng benefits and other small improvements and removed advanced topics (for a new section coming up) --- .../versioning-data-and-model-files/index.md | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index 85941496aa..d5e218f832 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -11,10 +11,12 @@ defined and enforced? Data Version Control (DVC) can address these issues by helping you organize your data and models effectively and capture their versions in [Git commits](<(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)>), -while storing the actual data contents outside ot Git. DVC also matches the -right versions of code and data for you 💘. +while storing the actual data contents outside ot Git. This way there's a single +project history for all of its assets and artifacts, and at the same time the +data stays with you. -![](/img/data-ver-storage.png) _Simple data science project organization_ +![](/img/data-ver-storage.png) _DVC matches the right versions of code and +data._ DVC enables data _versioning through codification_. This means describing which data, ML artifacts, etc. should be in the environment at any given time. This is @@ -29,24 +31,23 @@ DVC's approach brings the following benefits: - **Simplicity**: Work with a straightforward project file structure. No need for ad hoc naming conventions like `data/2019/labels_v7_final`. -- **Efficient storage**: All versions of data contents are - [cached](/doc/user-guide/dvc-files-and-directories#structure-of-the-cache-directory) - automatically, in a way that prevents file duplication. +- **Roll-backs**: Restore any project version and find the data you need + instantly. Identify past research inputs and understand/reproduce previous + results at any time! - **Collaboration**: Data and models can be easily [shared](/doc/use-cases/sharing-data-and-model-files) and [reused](/doc/start/data-access) via on-premises or cloud [storage remotes](/doc/command-reference/remote). -- **Roll-backs**: Restore any project version and find the data you need - instantly. Identify past research inputs and understand/reproduce previous - results at any time! -- **Codification**: Adopt existing engineering tools like Git SCM, and best +- **Efficient storage**: All versions of data contents are + [cached](/doc/user-guide/dvc-files-and-directories#structure-of-the-cache-directory) + automatically, in a way that prevents file duplication. +- **Standard**: Adopt existing engineering tools like Git SCM, and best practices like [semver](https://semver.org/) and continuous integration (CI/CD) such as [CML](https://cml.dev/) to improve team productivity. -- **Specialization**: Implement useful project patterns such as - [data registries](/doc/use-cases/data-registries) and - [model zoos](/doc/api-reference/open). -- **Data security**: Enforce lifecycle policies by having a defined process to - change data and models. +- **Lightweight**: DVC keeps it simple. No databases, servers, or external + services are required.
DVC is a + [free](https://github.com/iterative/dvc/blob/master/LICENSE), open-source + [command line](/doc/command-reference) tool. In summary, data science and machine learning are iterative processes where the lifecycles of data, code, and ML models occur at different paces. DVC helps From 953c16b75e2080d671097d4301f36bb1ea99bd60 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Wed, 18 Nov 2020 15:03:59 -0600 Subject: [PATCH 74/95] cases: draft What's Next section added with advanced scenarios for Vrsng --- .../versioning-data-and-model-files/index.md | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index d5e218f832..cb8ac01f08 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -52,3 +52,26 @@ DVC's approach brings the following benefits: In summary, data science and machine learning are iterative processes where the lifecycles of data, code, and ML models occur at different paces. DVC helps integrate and manage them effectively. + +## What's next? + +Adopting codification and +[Git workflows](https://about.gitlab.com/topics/version-control/what-is-git-workflow/) +in data science opens the door to advanced scenarios, for example extending +codification to the project's data pipelines, implementing specialized data and +model storage patters, and improvements to data security. Let's look at these: + +A first natural next step for codifying data is to apply the same for +[data pipelines](/doc/start/data-pipelines). DVC allows this out-of-the-box, and +automatically tracks intermediate and final results produced by the pipeline, +for versioning and other purposes. + +Implementing specialized data and model storage patterns such as +[data registries](/doc/use-cases/data-registries) and +[model zoos](/doc/api-reference/open) is made easy with DVC. + +Data security can also benefit from DVC's approach. You can enforce lifecycle +policies by having a defined process to change data and models: The project +history (in Git) is immutable, which allows for auditing changes; Git hosting +and CI tools can be used to review and approve data update, for example via pull +requests that are accessible to multiple stakeholders. From 52ea94535759717f410dd1000b0c823665d5b918 Mon Sep 17 00:00:00 2001 From: Jorge Orpinel Date: Thu, 19 Nov 2020 16:39:18 -0600 Subject: [PATCH 75/95] cases: simplify 2nd figure --- .../versioning-data-and-model-files/index.md | 2 +- static/img/data-ver-storage.png | Bin 42391 -> 0 bytes static/img/project-versions.png | Bin 0 -> 22216 bytes 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 static/img/data-ver-storage.png create mode 100644 static/img/project-versions.png diff --git a/content/docs/use-cases/versioning-data-and-model-files/index.md b/content/docs/use-cases/versioning-data-and-model-files/index.md index cb8ac01f08..cd756f794a 100644 --- a/content/docs/use-cases/versioning-data-and-model-files/index.md +++ b/content/docs/use-cases/versioning-data-and-model-files/index.md @@ -15,7 +15,7 @@ while storing the actual data contents outside ot Git. This way there's a single project history for all of its assets and artifacts, and at the same time the data stays with you. -![](/img/data-ver-storage.png) _DVC matches the right versions of code and +![](/img/project-versions.png) _DVC matches the right versions of code and data._ DVC enables data _versioning through codification_. This means describing which diff --git a/static/img/data-ver-storage.png b/static/img/data-ver-storage.png deleted file mode 100644 index 8d385d993ee47ed076cfd56529578e771dc00add..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42391 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