{"componentChunkName":"component---src-templates-blog-post-tsx","path":"/april-19-dvc-heartbeat","result":{"data":{"markdownRemark":{"id":"4066cf49-9f33-57c9-af7b-d624d7195fbc","excerpt":"<h2>News and links</h2>\n<p>We have some exciting news to share this month!</p>\n<p>DVC is going to <a href=\"https://us.pycon.org/2019/\">PyCon 2019</a>! It is the first\nconference that we attend as a…</p>","html":"<h2>News and links</h2>\n<p>We have some exciting news to share this month!</p>\n<p>DVC is going to <a href=\"https://us.pycon.org/2019/\">PyCon 2019</a>! It is the first\nconference that we attend as a team. When we say ‘team’ — we mean it. Our\nengineers are flying from all over the globe to get together offline and catch\nup with fellow Pythonistas.</p>\n<p>The <a href=\"https://us.pycon.org/2019/schedule/talks/list/\">speaker pipeline</a> is\namazing! DVC creator Dmitry Petrov is giving a talk on\n<a href=\"https://us.pycon.org/2019/schedule/presentation/176/\">Machine learning model and dataset versioning practices</a>.</p>\n<p>Stop by our booth at the Startup Row on Saturday, May 4, reach out and let us\nknow that you are willing to chat, or simply find a person with a huge DVC owl\non their shirt!</p>\n<p>Speaking of the owls — DVC has done some rebranding recently and we love our new\nlogo. Special thanks to <a href=\"https://99designs.com/\">99designs.com</a> for building a\ngreat platform for finding trusted designers.</p>\n<p><html><head></head><body><span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 700px;\">\n      <a class=\"gatsby-resp-image-link\" href=\"/static/91d26fd1613290e118c7a4ad1fc5a088/d947d/trusted-designers.png\" style=\"display: block\" target=\"_blank\" rel=\"noopener\">\n    <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 97.33333333333333%; position: relative; bottom: 0; left: 0; background-image: url(&#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAIAAAAf7rriAAAACXBIWXMAAAsSAAALEgHS3X78AAAEgUlEQVQ4yw2RWVeSCQBAv58zr3OqmcnMRoFPRHaE2ASJZBMxSBZBUEACVGIHRSEE6nNcghQXXFFBURRXTOtYcNJsppnjnHmYeR1f7tO9TxeYe+PIrCby+YWtvZWx+Ot44vWg2+JRS+dCltP85PnBdDxgcclFC+PB96db25tzZ8Vs+dN+6aJQKh0BY05dcnwgl19Y21my+Fxd+k6VTEK/X9FFAodVHKeQLHj4M+ve3VYiup3PbRc2R/UtUWXjeL8iZmoDLo6nPl3sXF0Wr6+KJ6fZQj4VG3YyQKRZKrr+8+TgYJWLqqc9rJI+4ehVsgloaH93JZeZLe4v769AwMHW6PmHfLl0Ui4fHR5tZFMQFHaaNO0Rm7aQ9B0thiI2nYTVGPK8yM5HT7Nv9zeTxWzicCn28WQNKG5Dh8cb5dLx9fVZOj0zA/mHA45enXwlflsOZRO+FORUCnleq3ZzNnK8GC3MhVYhezLQkxlzAfPJ4Mbu6qfy8eXvH3KpxOK7N06b0W3W+M0dchZNQiEpb8mgG+WtW+tTNzel4s7M/KincKsG7UAdSMETOYo+D7Qw4+2zety2lxZdj7yV8WtNEwwuxaE5MFgTFmdsl4QDjnx+7eR0e2N5Ij37WqdSAEgkGYkgotF0DEjEInDMBlobr7lDwGUjwDY8VkMj8VF1FDiSCKI5VPpjTMNjDMXn7I3H3HqlFMBxxJQWBew+glZHCFqNRkMXogJORdQJUUgxqlaGreeAIOzeIxISNx0fOf+wA8Ve4UDCejqZy60AFT/cqf6x8lEFSH0Ax1eC4mYek0CG36lUkzA8EC5DI3nIWsQDsFPWWthd+HL1/t//Lt32l3wWZzQ2CPCZ9Jr7MDRIYtXia+AkSWtbM5UOu1vFQyDYMLgIhcRXPCJjSL1diuVkcGl2ZGsl5rMb6ATyC6UY+PJlj0VmSKn0NBSYi4cHLd2P6wmIX6qljTQxGvWcgKEhkJia+rC7x6SW+Po178ZcfDZbwGTEISfwcSk+4uirvlc9Pxr+drEb9ToQlbWNGLzd0GE3KB269n5dewMK30ShNjOZapn4mYCPgWMDbvOwywic7a5efzs3qzoISDyHyhY08WRCoYz7xKySRv0vBiwaaMD8W6iXSWioq6oj1GJhP1WLONzI0EuliAv88Xfp7GRrc3r8/Hgz8cp/9fVsajKiaRVY1M/9Vm3E3RP19KxN+QP9WhaRImAwRewmPp3h7TeaVM+Azdlo+m1oIzFSzEwf5eZu/vm8u7Po6unolrYM9neFHIaBXt3ypGfQqr69TYEhsA9rcFUwo1ou5bABq1ru0ygDyhZ/pzhiVky49YlXNq9ZY3wu8Vq0Xmunz6wZH7JOBq0iBv0pmdyIxRNrQGt3p0rIBaYK+wf54ll6Yi0zmUmPpVORyTe+iK/XYVAb5RK/VTdk6w459Jkpb6izeVD1dEjb4pbzgiZF2KYDdvZWPl9clg+Xvn/N33w/+ut67yA3n3obc5u0JmWbrUvh0CsgrykF2dd/69set65H9LMu+ahBGFY//R8dTmrJc0Ny0wAAAABJRU5ErkJggg==&#x27;); background-size: cover; display: block;\"></span>\n  <picture>\n        <source srcset=\"/static/91d26fd1613290e118c7a4ad1fc5a088/c54d4/trusted-designers.webp 175w, /static/91d26fd1613290e118c7a4ad1fc5a088/a3432/trusted-designers.webp 350w, /static/91d26fd1613290e118c7a4ad1fc5a088/426ac/trusted-designers.webp 700w, /static/91d26fd1613290e118c7a4ad1fc5a088/c139f/trusted-designers.webp 1050w, /static/91d26fd1613290e118c7a4ad1fc5a088/7f403/trusted-designers.webp 1400w, /static/91d26fd1613290e118c7a4ad1fc5a088/44758/trusted-designers.webp 1650w\" sizes=\"(max-width: 700px) 100vw, 700px\" type=\"image/webp\">\n        <source srcset=\"/static/91d26fd1613290e118c7a4ad1fc5a088/17006/trusted-designers.png 175w, /static/91d26fd1613290e118c7a4ad1fc5a088/d6f3f/trusted-designers.png 350w, /static/91d26fd1613290e118c7a4ad1fc5a088/69344/trusted-designers.png 700w, /static/91d26fd1613290e118c7a4ad1fc5a088/b1f9d/trusted-designers.png 1050w, /static/91d26fd1613290e118c7a4ad1fc5a088/3fc71/trusted-designers.png 1400w, /static/91d26fd1613290e118c7a4ad1fc5a088/d947d/trusted-designers.png 1650w\" sizes=\"(max-width: 700px) 100vw, 700px\" type=\"image/png\">\n        <img class=\"gatsby-resp-image-image\" src=\"/static/91d26fd1613290e118c7a4ad1fc5a088/69344/trusted-designers.png\" alt=\"trusted designers\" title=\"trusted designers\" loading=\"lazy\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\">\n      </picture>\n  </a>\n    </span></body></html></p>\n<p>DVC is moving fast (almost as fast as my two-year-old). We do our best to keep\nup and totally love all the buzz in our community channels lately!</p>\n<p>Here is a number of interesting reads that caught our eye:</p>\n<ul>\n<li><strong><a href=\"https://blog.codecentric.de/en/2019/03/walkthrough-dvc/\">A walkthrough of DVC</a>\nby <a href=\"https://www.linkedin.com/in/bert-besser-284564182/\">Bert Besser</a></strong></li>\n</ul>\n<p><html><head></head><body><html><head></head><body><section class=\"elp-content-holder\">\n      <a href=\"https://blog.codecentric.de/en/2019/03/walkthrough-dvc/\" class=\"external-link-preview\">\n          <div class=\"elp-description-holder\">\n            <h4 class=\"elp-title\">A walkthrough of DVC — codecentric AG Blog</h4>\n            <div class=\"elp-description\">This post is on how to systematially organize Machine Learning (ML) model development. A model’s performance improves…</div>\n            <div class=\"elp-link\">blog.codecentric.de</div>\n          </div>\n           <div class=\"elp-image-holder\">\n                <img src=\"/uploads/images/2019-04-18/walkthrough-of-dvc.png\" alt=\"A walkthrough of DVC — codecentric AG Blog\">\n            </div>\n      </a>\n    </section>\n    </body></html></body></html></p>\n<p>A great article about using DVC with a quite advanced scenario and docker. If\nyou haven’t had a chance to try <a href=\"http://dvc.org/\">DVC.org</a> yet — this is a great\ncomprehensive read on why you should do so right away.</p>\n<ul>\n<li><strong><a href=\"https://github.com/EthicalML/state-of-mlops-2019\">The state of machine learning operations</a>\nby <a href=\"https://www.linkedin.com/in/axsaucedo/\">Alejandro Saucedo</a></strong></li>\n</ul>\n<p><html><head></head><body><html><head></head><body><section class=\"elp-content-holder\">\n      <a href=\"https://github.com/EthicalML/state-of-mlops-2019\" class=\"external-link-preview\">\n          <div class=\"elp-description-holder\">\n            <h4 class=\"elp-title\">The state of machine learning operations</h4>\n            <div class=\"elp-description\">Contribute to EthicalML/state-of-mlops-2019 development by creating an account on GitHub.</div>\n            <div class=\"elp-link\">github.com</div>\n          </div>\n           <div class=\"elp-image-holder\">\n                <img src=\"/uploads/images/2019-04-18/the-state-of-machine-learning-operations.jpeg\" alt=\"The state of machine learning operations\">\n            </div>\n      </a>\n    </section>\n    </body></html></body></html></p>\n<p>A short (only 8 minutes!) and inspiring talk by Alejandro Saucedo at FOSDEM.\nAlejandro covers the key trends in machine learning operations, as well as most\nrecent open source tools and frameworks. Focused on reproducibility, monitoring\nand explainability, this lightning talk is a great snapshot of the current state\nof ML operations.</p>\n<ul>\n<li><strong><a href=\"https://hackernoon.com/interview-with-kaggle-grandmaster-senior-cv-engineer-at-lyft-dr-vladimir-i-iglovikov-9938e1fc7c\">Interview with Kaggle Grandmaster, Senior Computer Vision Engineer at Lyft: Dr. Vladimir I. Iglovikov</a>\nby <a href=\"https://twitter.com/bhutanisanyam1\">Sanyam Bhutani</a></strong></li>\n</ul>\n<p><html><head></head><body><html><head></head><body><section class=\"elp-content-holder\">\n      <a href=\"https://hackernoon.com/interview-with-kaggle-grandmaster-senior-cv-engineer-at-lyft-dr-vladimir-i-iglovikov-9938e1fc7c\" class=\"external-link-preview\">\n          <div class=\"elp-description-holder\">\n            <h4 class=\"elp-title\">Interview with Kaggle Grandmaster, Senior Computer Vision Engineer at Lyft: Dr. Vladimir I. Iglovikov</h4>\n            <div class=\"elp-description\">Part 24 of The series where I interview my heroes.</div>\n            <div class=\"elp-link\">hackernoon.com</div>\n          </div>\n           <div class=\"elp-image-holder\">\n                <img src=\"/uploads/images/2019-04-18/interview-with-kaggle-grandmaster.jpeg\" alt=\"Interview with Kaggle Grandmaster, Senior Computer Vision Engineer at Lyft: Dr. Vladimir I. Iglovikov\">\n            </div>\n      </a>\n    </section>\n    </body></html></body></html></p>\n<blockquote>\n<p>There is no way you will become Kaggle Master and not learn how to approach\nanew, the unknown problem in a fast hacking way with a very high number of\niterations per unit of time. This skill in the world of competitive learning\nis the question of survival</p>\n</blockquote>\n<html><head></head><body><hr></body></html>\n<h2>Discord gems</h2>\n<p>There are lots of hidden gems in our Discord community discussions. Sometimes\nthey are scattered all over the channels and hard to track down.</p>\n<p>We are sifting through the issues and discussions and share with you the most\ninteresting takeaways.</p>\n<h3>Q: <a href=\"https://discordapp.com/channels/485586884165107732/485596304961962003/552098155861114891\">What are the system requirements to install DVC (type of operating system, dependencies of another application (as GIT), memory, cpu, etc).</a></h3>\n<ul>\n<li>It supports Windows, Mac, Linux. Python 2 and 3.</li>\n<li>No specific CPU or RAM requirements — it’s a lightweight command line tool and\nshould be able run pretty much everywhere you can run Python.</li>\n<li>It depends on a few Python libraries that it installs as dependencies (they\nare specified in the\n<a href=\"https://github.com/iterative/dvc/blob/master/requirements.txt\"><html><head></head><body><code class=\"language-text\">requirements.txt</code></body></html></a>).</li>\n<li>It does not depend on Git and theoretically could be run without any SCM.\nRunning it on top of a Git repository however is recommended and gives you an\nability to actually save history of datasets, models, etc (even though it does\nnot put them into Git directly).</li>\n</ul>\n<h3>Q: <a href=\"https://discordapp.com/channels/485586884165107732/485596304961962003/560212552638791706\">Do I have to buy a server license to run DVC, do you have this?</a></h3>\n<p>No server licenses for DVC. It is 100% free and open source.</p>\n<h3>Q: <a href=\"https://discordapp.com/channels/485586884165107732/485596304961962003/560154903331340289\">What is the storage limit when using DVC?</a></h3>\n<p>I am trying to version control datasets and models with >10 GB (Potentially even\nbigger). Can DVC handle this?</p>\n<p>There is no limit. None enforced by DVC itself. It depends on the size of your\nlocal or <a href=\"https://dvc.org/doc/commands-reference/remote\">remote storages</a>. You\nneed to have some space available on S3, your SSH server or other storage you\nare using to keep these data files, models and their version, which you would\nlike to store.</p>\n<h3>Q: <a href=\"https://discordapp.com/channels/485586884165107732/485596304961962003/553731815228178433\">How does DVC know the sequence of stages to run</a>?</h3>\n<p>How does it connect them? Does it see that there is a dependency which is\noutputted from the first run?</p>\n<p>DVC figures out the pipeline by looking at the dependencies and outputs of the\nstages. For example, having the following:</p>\n<p><html><head></head><body><div id=\"gist95747345\" class=\"gist\">\n    <div class=\"gist-file\">\n      <div class=\"gist-data\">\n        <div class=\"js-gist-file-update-container js-task-list-container file-box\">\n  <div id=\"file-heartbeat-dvc-run-2019-04-sh\" class=\"file\">\n    \n\n  <div itemprop=\"text\" class=\"Box-body p-0 blob-wrapper data type-shell\">\n      \n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n      <tbody><tr>\n        <td id=\"file-heartbeat-dvc-run-2019-04-sh-L1\" class=\"blob-num js-line-number\" data-line-number=\"1\"></td>\n        <td id=\"file-heartbeat-dvc-run-2019-04-sh-LC1\" class=\"blob-code blob-code-inner js-file-line\">$ dvc run -f download.dvc \\</td>\n      </tr>\n      <tr>\n        <td id=\"file-heartbeat-dvc-run-2019-04-sh-L2\" class=\"blob-num js-line-number\" data-line-number=\"2\"></td>\n        <td id=\"file-heartbeat-dvc-run-2019-04-sh-LC2\" class=\"blob-code blob-code-inner js-file-line\">          -o joke.txt \\</td>\n      </tr>\n      <tr>\n        <td id=\"file-heartbeat-dvc-run-2019-04-sh-L3\" class=\"blob-num js-line-number\" data-line-number=\"3\"></td>\n        <td id=\"file-heartbeat-dvc-run-2019-04-sh-LC3\" class=\"blob-code blob-code-inner js-file-line\">          <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>curl https://geek-jokes.sameerkumar.website/api > joke.txt<span class=\"pl-pds\">\"</span></span></td>\n      </tr>\n      <tr>\n        <td id=\"file-heartbeat-dvc-run-2019-04-sh-L4\" class=\"blob-num js-line-number\" data-line-number=\"4\"></td>\n        <td id=\"file-heartbeat-dvc-run-2019-04-sh-LC4\" class=\"blob-code blob-code-inner js-file-line\">$ dvc run -f duplicate.dvc \\</td>\n      </tr>\n      <tr>\n        <td id=\"file-heartbeat-dvc-run-2019-04-sh-L5\" class=\"blob-num js-line-number\" data-line-number=\"5\"></td>\n        <td id=\"file-heartbeat-dvc-run-2019-04-sh-LC5\" class=\"blob-code blob-code-inner js-file-line\">          -d joke.txt \\</td>\n      </tr>\n      <tr>\n        <td id=\"file-heartbeat-dvc-run-2019-04-sh-L6\" class=\"blob-num js-line-number\" data-line-number=\"6\"></td>\n        <td id=\"file-heartbeat-dvc-run-2019-04-sh-LC6\" class=\"blob-code blob-code-inner js-file-line\">          -o dulpicate.txt \\</td>\n      </tr>\n      <tr>\n        <td id=\"file-heartbeat-dvc-run-2019-04-sh-L7\" class=\"blob-num js-line-number\" data-line-number=\"7\"></td>\n        <td id=\"file-heartbeat-dvc-run-2019-04-sh-LC7\" class=\"blob-code blob-code-inner js-file-line\">          <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>cat joke.txt joke.txt > duplicate.txt<span class=\"pl-pds\">\"</span></span></td>\n      </tr>\n</tbody></table>\n\n\n  </div>\n\n  </div>\n</div>\n\n      </div>\n      <div class=\"gist-meta\">\n        <a href=\"https://gist.github.com/SvetaGr/a2a28fbc9db0a675422785bc5f925e14/raw/3802fa1b440a2b798568e0cac1be81ae10dd2acd/heartbeat-dvc-run-2019-04.sh\" style=\"float:right\">view raw</a>\n        <a href=\"https://gist.github.com/SvetaGr/a2a28fbc9db0a675422785bc5f925e14#file-heartbeat-dvc-run-2019-04-sh\">heartbeat-dvc-run-2019-04.sh</a>\n        hosted with ❤ by <a href=\"https://github.com\">GitHub</a>\n      </div>\n    </div>\n</div></body></html></p>\n<p>you will end up with two stages: <html><head></head><body><code class=\"language-text\">download.dvc</code></body></html> and <html><head></head><body><code class=\"language-text\">duplicate.dvc</code></body></html>. The\ndownload one will have <html><head></head><body><code class=\"language-text\">joke.txt</code></body></html> as an output . The duplicate one defined\n<html><head></head><body><code class=\"language-text\">joke.txt</code></body></html> as a dependency, as it is the same file. DVC detects that and creates\na pipeline by joining those stages.</p>\n<p>You can inspect the content of each stage file\n<a href=\"https://dvc.org/doc/user-guide/dvc-file-format\">here</a> (they are human\nreadable).</p>\n<h3>Q: <a href=\"https://discordapp.com/channels/485586884165107732/485596304961962003/560022999848321026\">Is it possible to use the same data of a remote in two different repositories?</a></h3>\n<p>(e.g. in one repo <html><head></head><body><code class=\"language-text\">run dvc pull -r my_remote</code></body></html> to pull some data and running the\nsame command in a different git repo should also pull the same)</p>\n<p>Yes! It’s a frequent scenario for multiple repos to share remotes and even local\ncache. DVC file serves as a link to the actual data. If you add the same DVC\nfile (e.g. <html><head></head><body><code class=\"language-text\">data.dvc</code></body></html>) to the new repo and do <html><head></head><body><code class=\"language-text\">dvc pull -r remotename data.dvc</code></body></html>-\nit will fetch data. You have to use <html><head></head><body><code class=\"language-text\">dvc remote add</code></body></html> first to specify the\ncoordinates of the remote storage you would like to share in every project.\nAlternatively (check out the question below), you could use <html><head></head><body><code class=\"language-text\">--global</code></body></html> to\nspecify a single default remote (and/or cache dir) per machine.</p>\n<h3>Q: <a href=\"https://discordapp.com/channels/485586884165107732/485586884165107734/559653121228275727\">Could I set a global remote server, instead of config in each project?</a></h3>\n<p>Use <html><head></head><body><code class=\"language-text\">--global</code></body></html> when you specify the remote settings. Then remote will be visible\nfor all projects on the same machine. <html><head></head><body><code class=\"language-text\">--global</code></body></html> — saves remote configuration to\nthe global config (e.g. <html><head></head><body><code class=\"language-text\">~/.config/dvc/config</code></body></html>) instead of a per project one —\n<html><head></head><body><code class=\"language-text\">.dvc/config</code></body></html>. See more details\n<a href=\"https://dvc.org/doc/commands-reference/remote-add\">here</a>.</p>\n<h3>Q: <a href=\"https://discordapp.com/channels/485586884165107732/485596304961962003/554679392823934977\">How do I version a large dataset in S3 or any other storage?</a></h3>\n<p>We would recommend to skim through our\n<a href=\"https://dvc.org/doc/get-started\">get started</a> tutorial, to summarize the data\nversioning process of DVC:</p>\n<ul>\n<li>You create stage (aka DVC) files by adding, importing files (<html><head></head><body><code class=\"language-text\">dvc add</code></body></html> /\n<html><head></head><body><code class=\"language-text\">dvc import</code></body></html>) , or run a command to generate files:</li>\n</ul>\n<html><head></head><body><div class=\"gatsby-highlight\" data-language=\"dvc\"><pre class=\"language-dvc\"><code class=\"language-dvc\"><span class=\"token line\"><span class=\"token input\">$ </span><span class=\"token dvc\">dvc run</span> --out file.csv <span class=\"token string\">\"wget https://example.com/file.csv\"</span></span></code></pre></div></body></html>\n<ul>\n<li>This stage files are tracked by <html><head></head><body><code class=\"language-text\">git</code></body></html></li>\n<li>You use git to retrieve previous stage files (e.g. <html><head></head><body><code class=\"language-text\">git checkout v1.0</code></body></html>)</li>\n<li>Then use <html><head></head><body><code class=\"language-text\">dvc checkout</code></body></html> to retrieve all the files related by those stage files</li>\n</ul>\n<p>All your files (with each different version) are stored in a <html><head></head><body><code class=\"language-text\">.dvc/cache</code></body></html>\ndirectory, that you sync with a remote file storage (for example, S3) using the\n<html><head></head><body><code class=\"language-text\">dvc push</code></body></html> or <html><head></head><body><code class=\"language-text\">dvc pull</code></body></html> commands (analogous to a <html><head></head><body><code class=\"language-text\">git push</code></body></html> / <html><head></head><body><code class=\"language-text\">git pull</code></body></html>, but\ninstead of syncing your <html><head></head><body><code class=\"language-text\">.git</code></body></html>, you are syncing your <html><head></head><body><code class=\"language-text\">.dvc</code></body></html> directory) on a\nremote repository (let’s say an S3 bucket).</p>\n<h3>Q: <a href=\"https://discordapp.com/channels/485586884165107732/485596304961962003/558216007684980736\">How do I move/rename a DVC-file?</a></h3>\n<p>If you need to move your dvc file somewhere, it is pretty easy, even if done\nmanually:</p>\n<p><html><head></head><body><div id=\"gist95752643\" class=\"gist\">\n    <div class=\"gist-file\">\n      <div class=\"gist-data\">\n        <div class=\"js-gist-file-update-container js-task-list-container file-box\">\n  <div id=\"file-heartbeat-dvc-rename-sh\" class=\"file\">\n    \n\n  <div itemprop=\"text\" class=\"Box-body p-0 blob-wrapper data type-shell\">\n      \n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n      <tbody><tr>\n        <td id=\"file-heartbeat-dvc-rename-sh-L1\" class=\"blob-num js-line-number\" data-line-number=\"1\"></td>\n        <td id=\"file-heartbeat-dvc-rename-sh-LC1\" class=\"blob-code blob-code-inner js-file-line\">$ mv my.dvc data/my.dvc</td>\n      </tr>\n      <tr>\n        <td id=\"file-heartbeat-dvc-rename-sh-L2\" class=\"blob-num js-line-number\" data-line-number=\"2\"></td>\n        <td id=\"file-heartbeat-dvc-rename-sh-LC2\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-c\"><span class=\"pl-c\">#</span> and now open my.dvc with your favorite editor and change wdir in it to 'wdir: ../'.</span></td>\n      </tr>\n</tbody></table>\n\n\n  </div>\n\n  </div>\n</div>\n\n      </div>\n      <div class=\"gist-meta\">\n        <a href=\"https://gist.github.com/SvetaGr/b25a5b45773bf94d36e60d48462502f4/raw/b9f920208a50afb55bda6c7527081babfcc323fe/heartbeat-dvc-rename.sh\" style=\"float:right\">view raw</a>\n        <a href=\"https://gist.github.com/SvetaGr/b25a5b45773bf94d36e60d48462502f4#file-heartbeat-dvc-rename-sh\">heartbeat-dvc-rename.sh</a>\n        hosted with ❤ by <a href=\"https://github.com\">GitHub</a>\n      </div>\n    </div>\n</div></body></html></p>\n<h3>Q: <a href=\"https://discordapp.com/channels/485586884165107732/485596304961962003/555431645402890255\">I performed <html><head></head><body><code class=\"language-text\">dvc push</code></body></html> of a file to a remote. On the remote there is created a directory called <html><head></head><body><code class=\"language-text\">8f</code></body></html> with a file inside called <html><head></head><body><code class=\"language-text\">2ec34faf91ff15ef64abf3fbffa7ee</code></body></html>. The original CSV file doesn’t appear on the remote. Is that expected behaviour?</a></h3>\n<p>This is an expected behavior. DVC saves files under the name created from their\nchecksum in order to prevent duplication. If you delete “pushed” file in your\nproject directory and perform <html><head></head><body><code class=\"language-text\">dvc pull</code></body></html>, DVC will take care of pulling the file\nand renaming it to “original” name.</p>\n<p>Below are some details about how DVC cache works, just to illustrate the logic.\nWhen you add a data source:</p>\n<p><html><head></head><body><div id=\"gist95752678\" class=\"gist\">\n    <div class=\"gist-file\">\n      <div class=\"gist-data\">\n        <div class=\"js-gist-file-update-container js-task-list-container file-box\">\n  <div id=\"file-heartbeat-remote-file-naming-sh\" class=\"file\">\n    \n\n  <div itemprop=\"text\" class=\"Box-body p-0 blob-wrapper data type-shell\">\n      \n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n      <tbody><tr>\n        <td id=\"file-heartbeat-remote-file-naming-sh-L1\" class=\"blob-num js-line-number\" data-line-number=\"1\"></td>\n        <td id=\"file-heartbeat-remote-file-naming-sh-LC1\" class=\"blob-code blob-code-inner js-file-line\">$ <span class=\"pl-c1\">echo</span> <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>foo<span class=\"pl-pds\">\"</span></span> <span class=\"pl-k\">></span> data.txt</td>\n      </tr>\n      <tr>\n        <td id=\"file-heartbeat-remote-file-naming-sh-L2\" class=\"blob-num js-line-number\" data-line-number=\"2\"></td>\n        <td id=\"file-heartbeat-remote-file-naming-sh-LC2\" class=\"blob-code blob-code-inner js-file-line\">$ dvc add data.txt</td>\n      </tr>\n</tbody></table>\n\n\n  </div>\n\n  </div>\n</div>\n\n      </div>\n      <div class=\"gist-meta\">\n        <a href=\"https://gist.github.com/SvetaGr/b69fa8ce36bcce00ecd69e7f2d7ccd2e/raw/34017336326e3773f2e3a490e1f66265025f8c81/heartbeat-remote-file-naming.sh\" style=\"float:right\">view raw</a>\n        <a href=\"https://gist.github.com/SvetaGr/b69fa8ce36bcce00ecd69e7f2d7ccd2e#file-heartbeat-remote-file-naming-sh\">heartbeat-remote-file-naming.sh</a>\n        hosted with ❤ by <a href=\"https://github.com\">GitHub</a>\n      </div>\n    </div>\n</div></body></html></p>\n<p>It computes the (md5) checksum of the file and generates a DVC file with related\ninformation:</p>\n<p><html><head></head><body><div id=\"gist95752688\" class=\"gist\">\n    <div class=\"gist-file\">\n      <div class=\"gist-data\">\n        <div class=\"js-gist-file-update-container js-task-list-container file-box\">\n  <div id=\"file-heartbeat-dvc-file-2019-04-yaml\" class=\"file\">\n    \n\n  <div itemprop=\"text\" class=\"Box-body p-0 blob-wrapper data type-yaml\">\n      \n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n      <tbody><tr>\n        <td id=\"file-heartbeat-dvc-file-2019-04-yaml-L1\" class=\"blob-num js-line-number\" data-line-number=\"1\"></td>\n        <td id=\"file-heartbeat-dvc-file-2019-04-yaml-LC1\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-ent\">md5</span>: <span class=\"pl-s\">3bccbf004063977442029334c3448687</span></td>\n      </tr>\n      <tr>\n        <td id=\"file-heartbeat-dvc-file-2019-04-yaml-L2\" class=\"blob-num js-line-number\" data-line-number=\"2\"></td>\n        <td id=\"file-heartbeat-dvc-file-2019-04-yaml-LC2\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-ent\">outs</span>:</td>\n      </tr>\n      <tr>\n        <td id=\"file-heartbeat-dvc-file-2019-04-yaml-L3\" class=\"blob-num js-line-number\" data-line-number=\"3\"></td>\n        <td id=\"file-heartbeat-dvc-file-2019-04-yaml-LC3\" class=\"blob-code blob-code-inner js-file-line\">- <span class=\"pl-ent\">cache</span>: <span class=\"pl-c1\">true</span></td>\n      </tr>\n      <tr>\n        <td id=\"file-heartbeat-dvc-file-2019-04-yaml-L4\" class=\"blob-num js-line-number\" data-line-number=\"4\"></td>\n        <td id=\"file-heartbeat-dvc-file-2019-04-yaml-LC4\" class=\"blob-code blob-code-inner js-file-line\">  <span class=\"pl-ent\">md5</span>: <span class=\"pl-s\">d3b07384d113edec49eaa6238ad5ff00</span></td>\n      </tr>\n      <tr>\n        <td id=\"file-heartbeat-dvc-file-2019-04-yaml-L5\" class=\"blob-num js-line-number\" data-line-number=\"5\"></td>\n        <td id=\"file-heartbeat-dvc-file-2019-04-yaml-LC5\" class=\"blob-code blob-code-inner js-file-line\">  <span class=\"pl-ent\">metric</span>: <span class=\"pl-c1\">false</span></td>\n      </tr>\n      <tr>\n        <td id=\"file-heartbeat-dvc-file-2019-04-yaml-L6\" class=\"blob-num js-line-number\" data-line-number=\"6\"></td>\n        <td id=\"file-heartbeat-dvc-file-2019-04-yaml-LC6\" class=\"blob-code blob-code-inner js-file-line\">  <span class=\"pl-ent\">path</span>: <span class=\"pl-s\">data.txt</span></td>\n      </tr>\n      <tr>\n        <td id=\"file-heartbeat-dvc-file-2019-04-yaml-L7\" class=\"blob-num js-line-number\" data-line-number=\"7\"></td>\n        <td id=\"file-heartbeat-dvc-file-2019-04-yaml-LC7\" class=\"blob-code blob-code-inner js-file-line\"><span class=\"pl-ent\">wdir</span>: <span class=\"pl-s\">..</span></td>\n      </tr>\n</tbody></table>\n\n\n  </div>\n\n  </div>\n</div>\n\n      </div>\n      <div class=\"gist-meta\">\n        <a href=\"https://gist.github.com/SvetaGr/110ae76df929654ec573ea9e4b1e1980/raw/3ccd7b7ab89e1e4246c1d8c83d6051df2379bd6d/heartbeat-dvc-file-2019-04.yaml\" style=\"float:right\">view raw</a>\n        <a href=\"https://gist.github.com/SvetaGr/110ae76df929654ec573ea9e4b1e1980#file-heartbeat-dvc-file-2019-04-yaml\">heartbeat-dvc-file-2019-04.yaml</a>\n        hosted with ❤ by <a href=\"https://github.com\">GitHub</a>\n      </div>\n    </div>\n</div></body></html></p>\n<p>The original file is moved to the cache and a link or copy (depending on your\nfilesystem) is created to replace it on your working space:</p>\n<p><html><head></head><body><div id=\"gist95752708\" class=\"gist\">\n    <div class=\"gist-file\">\n      <div class=\"gist-data\">\n        <div class=\"js-gist-file-update-container js-task-list-container file-box\">\n  <div id=\"file-heartbeat-cache-structure-2019-04-sh\" class=\"file\">\n    \n\n  <div itemprop=\"text\" class=\"Box-body p-0 blob-wrapper data type-shell\">\n      \n<table class=\"highlight tab-size js-file-line-container\" data-tab-size=\"8\">\n      <tbody><tr>\n        <td id=\"file-heartbeat-cache-structure-2019-04-sh-L1\" class=\"blob-num js-line-number\" data-line-number=\"1\"></td>\n        <td id=\"file-heartbeat-cache-structure-2019-04-sh-LC1\" class=\"blob-code blob-code-inner js-file-line\">.dvc/cache</td>\n      </tr>\n      <tr>\n        <td id=\"file-heartbeat-cache-structure-2019-04-sh-L2\" class=\"blob-num js-line-number\" data-line-number=\"2\"></td>\n        <td id=\"file-heartbeat-cache-structure-2019-04-sh-LC2\" class=\"blob-code blob-code-inner js-file-line\">└── d3</td>\n      </tr>\n      <tr>\n        <td id=\"file-heartbeat-cache-structure-2019-04-sh-L3\" class=\"blob-num js-line-number\" data-line-number=\"3\"></td>\n        <td id=\"file-heartbeat-cache-structure-2019-04-sh-LC3\" class=\"blob-code blob-code-inner js-file-line\">    └── b07384d113edec49eaa6238ad5ff00</td>\n      </tr>\n</tbody></table>\n\n\n  </div>\n\n  </div>\n</div>\n\n      </div>\n      <div class=\"gist-meta\">\n        <a href=\"https://gist.github.com/SvetaGr/133cb93e5a21c6f21a86f8709ed39ea9/raw/540aa50da9bb891da01030a8877688b74eecc20e/heartbeat-cache-structure-2019-04.sh\" style=\"float:right\">view raw</a>\n        <a href=\"https://gist.github.com/SvetaGr/133cb93e5a21c6f21a86f8709ed39ea9#file-heartbeat-cache-structure-2019-04-sh\">heartbeat-cache-structure-2019-04.sh</a>\n        hosted with ❤ by <a href=\"https://github.com\">GitHub</a>\n      </div>\n    </div>\n</div></body></html></p>\n<h3>Q: <a href=\"https://discordapp.com/channels/485586884165107732/485586884165107734/553570391000481802\">Is it possible to integrate dvc with our in-house tools developed in Python?</a></h3>\n<p>Absolutely! There are three ways you could interact with DVC:</p>\n<ol>\n<li>Use <a href=\"https://docs.python.org/3/library/subprocess.html\">subprocess</a> to launch\nDVC</li>\n<li>Use <html><head></head><body><code class=\"language-text\">from dvc.main import main</code></body></html> and use it with regular CLI logic like\n<html><head></head><body><code class=\"language-text\">ret = main(‘add’, ‘foo’)</code></body></html></li>\n<li>Use our internal API (see <html><head></head><body><code class=\"language-text\">dvc/repo</code></body></html> and <html><head></head><body><code class=\"language-text\">dvc/command</code></body></html> in our source to get a\ngrasp of it). It is not officially public yet, and we don’t have any special\ndocs for it, but it is fairly stable and could definitely be used for a POC.\nWe’ll add docs and all the official stuff for it in the not-so-distant\nfuture.</li>\n</ol>\n<h3>Q: <a href=\"https://discordapp.com/channels/485586884165107732/485586884165107734/555750217522216990\">Can I still track the linkage between data and model without using <html><head></head><body><code class=\"language-text\">dvc run</code></body></html></a> and a graph of tasks? Basically what would like extremely minimal DVC invasion into my GIT repo for an existing machine learning application?</h3>\n<p>There are two options:</p>\n<ol>\n<li>Use <html><head></head><body><code class=\"language-text\">dvc add</code></body></html> to track models and/or input datasets. It should be enough if\nyou use <html><head></head><body><code class=\"language-text\">git commit</code></body></html> on DVC files produced by <html><head></head><body><code class=\"language-text\">dvc add</code></body></html>. This is the very\nminimum you can get with DVC and it does not require using DVC run. Check the\nfirst part (up to the Pipelines/Add transformations section) of the DVC\n<a href=\"https://dvc.org/doc/get-started\">get started</a>.</li>\n<li>You could use <html><head></head><body><code class=\"language-text\">--no-exec</code></body></html> in <html><head></head><body><code class=\"language-text\">dvc run</code></body></html> and then just <html><head></head><body><code class=\"language-text\">dvc commit</code></body></html> and\n<html><head></head><body><code class=\"language-text\">git commit</code></body></html> the results. That way you’ll get your DVC files with all the\nlinkages, without having to actually run your commands through DVC.</li>\n</ol>\n<p>If you have any questions, concerns or ideas, let us know\n<a href=\"https://dvc.org/support\">here</a> and our stellar team will get back to you in no\ntime.</p>","timeToRead":12,"fields":{"slug":"/april-19-dvc-heartbeat"},"frontmatter":{"title":"April ’19 DVC❤️Heartbeat","date":"April 18, 2019","description":"DVC creator Dmitry Petrov is giving a talk on PyCon 2019 🎤, new DVC logo\ndesign, new Discord discussions, interesting reads that caught our eye, and\neverything along the way.\n","descriptionLong":"Every month we are sharing here our news, findings, interesting reads,\ncommunity takeaways, and everything along the way.\nSome of those are related to our brainchild DVC and its journey. The others\nare a collection of exciting stories and ideas centered around ML best\npractices and workflow.\n","tags":["Heartbeat","Discord Gems","DVC","PyCon"],"commentsUrl":"https://discuss.dvc.org/t/april-19-dvc-heartbeat/292","author":{"childMarkdownRemark":{"frontmatter":{"name":"Svetlana Grinchenko","avatar":{"childImageSharp":{"fixed":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAIDBQT/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAHRz7x3qhnQCoH/xAAaEAACAwEBAAAAAAAAAAAAAAABAgMEMxIU/9oACAEBAAEFArBJZ0aqyN0s+trCvhYchTKzj0SRD//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EAB0QAAICAgMBAAAAAAAAAAAAAAECABExQQMSIVH/2gAIAQEABj8CXiVuvbcDK9jYMDDcRyLBFTHpIixRflQjAHyBVwJ//8QAGxABAAMAAwEAAAAAAAAAAAAAAQARQSExUXH/2gAIAQEAAT8ht1LLoIkF4B6wLgOVH8uRVjiTT5AoqBr2L1odagwijiyf/9oADAMBAAIAAwAAABBjDwD/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAeEAACAwADAAMAAAAAAAAAAAABEQAhMUFRYXGBkf/aAAgBAQABPxCmAzsDr5hIjqwzzzqjPahi5r8IQVrj2MCG47GtJ+o5KCJ7t+zbocIBE8rYP/mqRYTv5EF8QZIHU//Z","width":40,"height":40,"src":"/static/fcc8502faa36f9a989fa0651c3c21653/d83e5/svetlana_grinchenko.jpg","srcSet":"/static/fcc8502faa36f9a989fa0651c3c21653/d83e5/svetlana_grinchenko.jpg 1x,\n/static/fcc8502faa36f9a989fa0651c3c21653/58860/svetlana_grinchenko.jpg 1.5x,\n/static/fcc8502faa36f9a989fa0651c3c21653/90ac5/svetlana_grinchenko.jpg 2x","srcWebp":"/static/fcc8502faa36f9a989fa0651c3c21653/e145b/svetlana_grinchenko.webp","srcSetWebp":"/static/fcc8502faa36f9a989fa0651c3c21653/e145b/svetlana_grinchenko.webp 1x,\n/static/fcc8502faa36f9a989fa0651c3c21653/0d42c/svetlana_grinchenko.webp 1.5x,\n/static/fcc8502faa36f9a989fa0651c3c21653/f46db/svetlana_grinchenko.webp 2x"}}}}}},"picture":{"childImageSharp":{"fluid":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAQFA//EABYBAQEBAAAAAAAAAAAAAAAAAAMBAv/aAAwDAQACEAMQAAABzRtrGk0fNT//xAAbEAABBAMAAAAAAAAAAAAAAAABAAMREwIFIf/aAAgBAQABBQLYCXDgK6+ASg5Lli//xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAgBAwEBPwGI/8QAFxEBAAMAAAAAAAAAAAAAAAAAAAEREv/aAAgBAgEBPwG5af/EABwQAAIDAAMBAAAAAAAAAAAAAAABAhEhEiIxUf/aAAgBAQAGPwKFbhBpO36LoRf1HGs8LcVp/8QAHRAAAgEFAQEAAAAAAAAAAAAAAAERITFBUWFxof/aAAgBAQABPyFsE+HpeRVmhbBxW4rC+Q1cFUuyJWtkpg//2gAMAwEAAgADAAAAEIfv/8QAGREBAAIDAAAAAAAAAAAAAAAAAQARIUGh/9oACAEDAQE/EAhdzPfJ/8QAFxEBAQEBAAAAAAAAAAAAAAAAAREAIf/aAAgBAgEBPxCzJgHE3//EAB4QAQABBAIDAAAAAAAAAAAAAAERACExQVFhcYGh/9oACAEBAAE/EIOyeE3pKEBXYBRncz8p7zysK89Pio9LJ5VfD6pAxiTwb66oUoiAkBiN8V//2Q==","aspectRatio":1.5005263157894737,"src":"/static/5664bfe8e4fdcd5db5407ae04a0eaa07/6fdf8/post-image.jpg","srcSet":"/static/5664bfe8e4fdcd5db5407ae04a0eaa07/9fc73/post-image.jpg 213w,\n/static/5664bfe8e4fdcd5db5407ae04a0eaa07/ee221/post-image.jpg 425w,\n/static/5664bfe8e4fdcd5db5407ae04a0eaa07/6fdf8/post-image.jpg 850w,\n/static/5664bfe8e4fdcd5db5407ae04a0eaa07/88a70/post-image.jpg 1275w,\n/static/5664bfe8e4fdcd5db5407ae04a0eaa07/15ae8/post-image.jpg 1700w,\n/static/5664bfe8e4fdcd5db5407ae04a0eaa07/4808c/post-image.jpg 2851w","srcWebp":"/static/5664bfe8e4fdcd5db5407ae04a0eaa07/5c1d9/post-image.webp","srcSetWebp":"/static/5664bfe8e4fdcd5db5407ae04a0eaa07/99b2d/post-image.webp 213w,\n/static/5664bfe8e4fdcd5db5407ae04a0eaa07/23220/post-image.webp 425w,\n/static/5664bfe8e4fdcd5db5407ae04a0eaa07/5c1d9/post-image.webp 850w,\n/static/5664bfe8e4fdcd5db5407ae04a0eaa07/5e720/post-image.webp 1275w,\n/static/5664bfe8e4fdcd5db5407ae04a0eaa07/35cfd/post-image.webp 1700w,\n/static/5664bfe8e4fdcd5db5407ae04a0eaa07/a9a20/post-image.webp 2851w","sizes":"(max-width: 850px) 100vw, 850px","presentationWidth":850}}},"pictureComment":null}}},"pageContext":{"next":{"fields":{"slug":"/dvc-project-ideas-for-google-summer-of-docs-2019"},"frontmatter":{"title":"DVC project ideas for Google Season of Docs 2019"}},"previous":{"fields":{"slug":"/march-19-dvc-heartbeat"},"frontmatter":{"title":"March ’19 DVC❤️Heartbeat"}},"currentPage":13,"slug":"/april-19-dvc-heartbeat"}}}