Date: Sun, 21 Nov 2021 21:00:00 -0500
<div class="wp-block-jetpack-markdown"><h2>Summary</h2> <p>Deep learning frameworks encourage you to focus on the structure of your model ahead of the data that you are working with. Ludwig is a tool that uses a data oriented approach to building and training deep learning models so that you can experiment faster based on the information that you actually have, rather than spending all of our time manipulating features to make them match your inputs. In this episode Travis Addair explains how Ludwig is designed to improve the adoption of deep learning for more companies and a wider range of users. He also explains how the Horovod framework plugs in easily to allow for scaling your training workflow from your laptop out to a massive cluster of servers and GPUs. The combination of these tools allows for a declarative workflow that starts off easy but gives you full control over the end result.</p> <h2>Announcements</h2> <ul> <li>Hello and welcome to Podcast.__init__, the podcast about Python’s role in data and science.</li> <li>When you’re ready to launch your next app or want to try a project you hear about on the show, you’ll need somewhere to deploy it, so take a look at our friends over at Linode. With the launch of their managed Kubernetes platform it’s easy to get started with the next generation of deployment and scaling, powered by the battle tested Linode platform, including simple pricing, node balancers, 40Gbit networking, dedicated CPU and GPU instances, and worldwide data centers. Go to <a href="https://www.pythonpodcast.com/linode?utm_source=rss&utm_medium=rss">pythonpodcast.com/linode</a> and get a $100 credit to try out a Kubernetes cluster of your own. And don’t forget to thank them for their continued support of this show!</li> <li>Your host as usual is Tobias Macey and today I’m interviewing Travis Adair about building and training machine learning models with Ludwig and Horovod</li> </ul> <h2>Interview</h2> <ul> <li>Introductions</li> <li>How did you get introduced to Python?</li> <li>Can you describe what Horovod and Ludwig are? <ul> <li>How do the projects work together?</li> </ul> </li> <li>What was your path to being involved in those projects and what is your current role?</li> <li>There are a number of AutoML libraries available for frameworks such as scikit-learn, etc. What are the challenges that are introduced by applying that workflow to deep learning architectures?</li> <li>What are the use cases that Ludwig is designed to enable?</li> <li>Who are the target users of Ludwig? <ul> <li>How do the workflows change/progress for the different personas?</li> </ul> </li> <li>How is the underlying framework architected? <ul> <li>What are the available extension points to provide a progressive exposure of complexity?</li> <li>How have the goals and design of the project changed or evolved as it has gained more widespread adoption beyond Uber? <ul> <li>What was the motivation for migrating the core of Ludwig from Tensorflow to Pytorch?</li> </ul> </li> </ul> </li> <li>Can you describe the workflow of building a model definition with Ludwig? <ul> <li>How much knowledge of neural network architectures and their relevant characteristics is necessary to use Ludwig effectively?</li> </ul> </li> <li>What are the motivating factors for adding Horovod to the process? <ul> <li>What is involved in moving from a single machine/single process training loop to a multi-core or multi-machine distributed training process?</li> </ul> </li> <li>The combination of Ludwig and Horovod provide a shallower learning curve for building and scaling model training. What do you see as their potential impact on the availability and adoption of more sophisticated ML capabilities across organizations of varying scale? <ul> <li>What do you see as other significant barriers to widespread use of ML functionality?</li> </ul> </li> <li>What are the most interesting, innovative, or unexpected ways that you have seen Ludwig and/or Horovod used?</li> <li>What are the most interesting, unexpected, or challenging lessons that you have learned while working on Ludwig and Horovod?</li> <li>When is Ludwig and/or Horovod the wrong choice?</li> <li>What do you have planned for the future of both projects?</li> </ul> <h2>Keep In Touch</h2> <ul> <li><a href="https://www.linkedin.com/in/travisaddair/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">LinkedIn</a></li> <li><a href="https://twitter.com/travisaddair?lang=en&utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">@TravisAddair</a> on Twitter</li> <li><a href="https://github.com/tgaddair?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">tgaddair</a> on GitHub</li> </ul> <h2>Picks</h2> <ul> <li>Tobias <ul> <li><a href="https://www.zealandardor.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Zeal and Ardor</a></li> </ul> </li> <li>Travis <ul> <li><a href="http://www.opeth.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Opeth</a></li> <li><a href="https://en.wikipedia.org/wiki/Agalloch?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Agaloch</a></li> </ul> </li> </ul> <h2>Closing Announcements</h2> <ul> <li>Thank you for listening! Don’t forget to check out our other show, the <a href="https://www.dataengineeringpodcast.com?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Data Engineering Podcast</a> for the latest on modern data management.</li> <li>Visit the <a href="https://www.pythonpodcast.com?utm_source=rss&utm_medium=rss">site</a> to subscribe to the show, sign up for the mailing list, and read the show notes.</li> <li>If you’ve learned something or tried out a project from the show then tell us about it! Email <a href="mailto:hosts@podcastinit.com">hosts@podcastinit.com</a>) with your story.</li> <li>To help other people find the show please leave a review on <a href="https://itunes.apple.com/us/podcast/podcast.-init/id981834425?mt=2&uo=6&at=&ct=&utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">iTunes</a> and tell your friends and co-workers</li> </ul> <h2>Links</h2> <ul> <li><a href="https://feeds.fireside.fm/pythonpodcast/ludwig.ai">Ludwig</a></li> <li><a href="https://feeds.fireside.fm/pythonpodcast/horovod.ai">Horovod</a></li> <li><a href="http://www.predibase.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Predibase</a></li> <li><a href="https://www.uber.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Uber</a></li> <li><a href="https://eng.uber.com/scaling-michelangelo/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Michelangelo</a></li> <li><a href="https://www.tensorflow.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Tensorflow</a></li> <li><a href="https://pytorch.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">PyTorch</a> <ul> <li><a href="https://www.pythonpodcast.com/pytorch-deep-learning-epsiode-202/?utm_source=rss&utm_medium=rss">Podcast Episode</a></li> </ul> </li> <li><a href="https://en.wikipedia.org/wiki/Gradient_boosting?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Gradient Boosted Trees</a></li> <li><a href="https://xgboost.readthedocs.io/en/latest/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">XGBoost</a></li> <li><a href="https://catboost.ai/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">CatBoost</a></li> <li><a href="https://lightgbm.readthedocs.io/en/latest/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">LightGBM</a></li> <li><a href="https://pycaret.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">PyCaret</a></li> <li><a href="https://arxiv.org/abs/1603.06560?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">HyperBand</a></li> <li><a href="https://scikit-optimize.github.io/stable/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">scikit-optimize</a></li> <li><a href="https://keras.io/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Keras</a></li> <li><a href="https://en.wikipedia.org/wiki/Vision_transformer?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Vision Transformer Architecture</a></li> <li><a href="https://huggingface.co/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">HuggingFace</a></li> <li><a href="https://github.com/google/jax?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Jax</a></li> <li><a href="https://github.com/microsoft/DeepSpeed?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">DeepSpeed</a></li> <li><a href="https://en.wikipedia.org/wiki/Collective_operation?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">AllReduce</a></li> <li><a href="https://developer.nvidia.com/nccl?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Nvidia Collective Communications Library (NCCL)</a></li> <li><a href="https://machinelearningmastery.com/difference-between-a-batch-and-an-epoch/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Training Epoch</a></li> <li><a href="https://github.com/sql-machine-learning/elasticdl/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">ElasticDL</a></li> <li><a href="https://raft.github.io/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Raft Consensus Algorithm</a></li> <li><a href="https://pytorch.org/docs/stable/jit.html?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">TorchScript</a></li> <li><a href="https://en.wikipedia.org/wiki/Transfer_learning?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Transfer Learning</a></li> <li><a href="https://awards.acm.org/bell?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Gordon Bell Prize</a></li> <li><a href="https://www.anyscale.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Anyscale</a></li> <li><a href="https://ray.readthedocs.io/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Ray</a> <ul> <li><a href="https://www.pythonpodcast.com/ray-distributed-computing-episode-258/?utm_source=rss&utm_medium=rss">Podcast Episode</a></li> </ul> </li> </ul> <p>The intro and outro music is from Requiem for a Fish <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">The Freak Fandango Orchestra</a> / <a href="http://creativecommons.org/licenses/by-sa/3.0/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">CC BY-SA</a></p> </div> <img alt="" height="0" src="https://analytics.boundlessnotions.com/piwik.php?idsite=1&rec=1&url=https%3A%2F%2Fwww.pythonpodcast.com%2Fludwig-horovod-distributed-declarative-deep-learning-episode-341%2F&action_name=Declarative+Deep+Learning+From+Your+Laptop+To+Production+With+Ludwig+and+Horovod+-+Episode+341&urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&utm_source=rss&utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" />