Speed Up Your Python Data Applications By Parallelizing Them With Bodo

The Python Podcast.__init__

Episode | Podcast

Date: Mon, 25 Oct 2021 18:00:00 -0400

<div class="wp-block-jetpack-markdown"><h2>Summary</h2> <p>The speed of Python is a subject of constant debate, but there is no denying that for compute heavy work it is not the optimal tool. Rather than rewriting your data oriented applications, or having to rearchitect them, the team at Bodo wrote a compiler that will do the optimization for you. In this episode Ehsan Totoni explains how they are able to translate pure Python into massively parallel processes that are optimized for high performance compute systems.</p> <h2>Announcements</h2> <ul> <li>Hello and welcome to Podcast.__init__, the podcast about Python&#8217;s role in data and science.</li> <li>When you&#8217;re ready to launch your next app or want to try a project you hear about on the show, you&#8217;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&#8217;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&amp;utm_medium=rss">pythonpodcast.com/linode</a> and get a $100 credit to try out a Kubernetes cluster of your own. And don&#8217;t forget to thank them for their continued support of this show!</li> <li>Your host as usual is Tobias Macey and today I&#8217;m interviewing Ehsan Totoni about Bodo, an inferential compiler for Python that automatically parallelizes your data oriented projects</li> </ul> <h2>Interview</h2> <ul> <li>Introductions</li> <li>How did you get introduced to Python?</li> <li>Can you describe what Bodo is and the story behind it?</li> <li>What are some of the use cases that it is being applied to?</li> <li>What are the motivating factors for something like Dask or Ray as compared to Bodo?</li> <li>What are the software patterns that contribute to slowdowns in data processing code? <ul> <li>What are some of the ways that the compiler is able to optimize those operations?</li> </ul> </li> <li>Can you describe how Bodo is implemented?</li> <li>How does Bodo process the Python code for compiling to the optimized form? <ul> <li>What are the compilation techniques for understanding the semantics of the code being processed?</li> <li>How do you manage packages that rely on C extensions?</li> <li>What do you use as an intermediate representation for translating into the optimized output?</li> </ul> </li> <li>What is the workflow for applying Bodo to a Python project? <ul> <li>What debugging utilities does it provide for identifying any errors that occur due to the added parallelism?</li> </ul> </li> <li>What kind of support does Bodo have for optimizing a machine learning project with Bodo? (e.g. using PyTorch/Tensorflow/MxNet/etc.)</li> <li>When working with a workflow orchestrator such as Dagster for Airflow, what would the integration process look like for being able to take advantage of the optimized Bodo output?</li> <li>What are the most interesting, innovative, or unexpected ways that you have seen Bodo used?</li> <li>What are the most interesting, unexpected, or challenging lessons that you have learned while working on Bodo?</li> <li>When is Bodo the wrong choice?</li> <li>What do you have planned for the future of Bodo?</li> </ul> <h2>Keep In Touch</h2> <ul> <li><a href="https://www.linkedin.com/in/ehsan-totoni-44928286/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">LinkedIn</a></li> <li><a href="https://twitter.com/ehsantn?lang=en&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">@EhsanTn</a> on Twitter</li> <li><a href="https://github.com/ehsantn?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">ehsantn</a> on GitHub</li> </ul> <h2>Picks</h2> <ul> <li>Tobias <ul> <li><a href="https://morningchores.com/paracord-projects/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Paracord Crafts</a></li> </ul> </li> <li>Ehsan <ul> <li>[</li> </ul> </li> </ul> <h2>Closing Announcements</h2> <ul> <li>Thank you for listening! Don&#8217;t forget to check out our other show, the <a href="https://www.dataengineeringpodcast.com?utm_source=rss&amp;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&amp;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&#8217;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&amp;uo=6&amp;at=&amp;ct=&amp;utm_source=rss&amp;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://bodo.ai/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Bodo</a> <ul> <li><a href="https://www.dataengineeringpodcast.com/bodo-parallel-data-processing-python-episode-223/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Data Engineering Podcast Episode</a></li> </ul> </li> <li><a href="https://illinois.edu/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">University of Illinois Urbana-Champaign</a></li> <li><a href="https://en.wikipedia.org/wiki/Supercomputer?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">HPC</a></li> <li><a href="https://en.wikipedia.org/wiki/Message_Passing_Interface?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">MPI</a></li> <li><a href="https://aws.amazon.com/hpc/efa/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Elastic Fabric Adapter</a></li> <li><a href="https://en.wikipedia.org/wiki/All-to-all_(parallel_pattern)?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">All-to-All Communication</a></li> <li><a href="https://dask.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Dask</a> <ul> <li><a href="https://www.dataengineeringpodcast.com/episode-2-dask-with-matthew-rocklin/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Data Engineering Podcast Episode</a></li> </ul> </li> <li><a href="https://www.ray.io/?utm_source=rss&amp;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&amp;utm_medium=rss">Podcast Episode</a></li> </ul> </li> <li><a href="https://pandas.pydata.org/docs/reference/api/pandas.api.extensions.ExtensionArray.html?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Pandas Extension Arrays</a> <ul> <li><a href="https://www.pythonpodcast.com/pandas-extension-arrays-with-tom-augspurger-episode-164/?utm_source=rss&amp;utm_medium=rss">Podcast Episode</a></li> </ul> </li> <li><a href="https://geopandas.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">GeoPandas</a></li> <li><a href="https://numba.pydata.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Numba</a></li> <li><a href="https://llvm.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">LLVM</a></li> <li><a href="https://scikit-learn.org/stable/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">scikit-learn</a></li> <li><a href="https://horovod.ai/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Horovod</a></li> <li><a href="https://dagster.io/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Dagster</a> <ul> <li><a href="https://www.pythonpodcast.com/dagster-data-orchestration-episode-279/?utm_source=rss&amp;utm_medium=rss">Podcast.__init__ Episode</a></li> <li><a href="https://www.dataengineeringpodcast.com/dagster-data-applications-episode-104/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Data Engineering Podcast Episode</a></li> </ul> </li> <li><a href="https://airflow.apache.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Airflow</a> <ul> <li><a href="https://www.pythonpodcast.com/episode-44-airflow-with-maxime-beauchemin/?utm_source=rss&amp;utm_medium=rss">Podcast Episode</a></li> </ul> </li> <li><a href="https://github.com/ipython/ipyparallel?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">IPython Parallel</a></li> <li><a href="https://parquet.apache.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Parquet</a></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&amp;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&amp;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&amp;rec=1&amp;url=https%3A%2F%2Fwww.pythonpodcast.com%2Fbodo-parallel-python-hpc-episode-337%2F&amp;action_name=Speed+Up+Your+Python+Data+Applications+By+Parallelizing+Them+With+Bodo+-+Episode+337&amp;urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&amp;utm_source=rss&amp;utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" />