Date: Sun, 11 Dec 2022 21:00:00 -0500
<div class="wp-block-jetpack-markdown"><h2>Preamble</h2> <p>This is a <a href="https://www.themachinelearningpodcast.com/river-streaming-machine-learning-episode-8/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">cross-over episode</a> from our new show <a href="https://www.themachinelearningpodcast.com?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">The Machine Learning Podcast</a>, the show about going from idea to production with machine learning.</p> <h2>Summary</h2> <p>The majority of machine learning projects that you read about or work on are built around batch processes. The model is trained, and then validated, and then deployed, with each step being a discrete and isolated task. Unfortunately, the real world is rarely static, leading to concept drift and model failures. River is a framework for building streaming machine learning projects that can constantly adapt to new information. In this episode Max Halford explains how the project works, why you might (or might not) want to consider streaming ML, and how to get started building with River.</p> <h2>Announcements</h2> <ul> <li>Hello and welcome to the Machine Learning Podcast, the podcast about machine learning and how to bring it from idea to delivery.</li> <li>Building good ML models is hard, but testing them properly is even harder. At Deepchecks, they built an open-source testing framework that follows best practices, ensuring that your models behave as expected. Get started quickly using their built-in library of checks for testing and validating your model’s behavior and performance, and extend it to meet your specific needs as your model evolves. Accelerate your machine learning projects by building trust in your models and automating the testing that you used to do manually. Go to <a href="https://www.themachinelearningpodcast.com/deepchecks?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">themachinelearningpodcast.com/deepchecks</a> today to get started!</li> <li>Your host is Tobias Macey and today I’m interviewing Max Halford about River, a Python toolkit for streaming and online machine learning</li> </ul> <h2>Interview</h2> <ul> <li>Introduction</li> <li>How did you get involved in machine learning?</li> <li>Can you describe what River is and the story behind it?</li> <li>What is "online" machine learning? <ul> <li>What are the practical differences with batch ML?</li> <li>Why is batch learning so predominant?</li> <li>What are the cases where someone would want/need to use online or streaming ML?</li> </ul> </li> <li>The prevailing pattern for batch ML model lifecycles is to train, deploy, monitor, repeat. What does the ongoing maintenance for a streaming ML model look like? <ul> <li>Concept drift is typically due to a discrepancy between the data used to train a model and the actual data being observed. How does the use of online learning affect the incidence of drift?</li> </ul> </li> <li>Can you describe how the River framework is implemented? <ul> <li>How have the design and goals of the project changed since you started working on it?</li> </ul> </li> <li>How do the internal representations of the model differ from batch learning to allow for incremental updates to the model state?</li> <li>In the documentation you note the use of Python dictionaries for state management and the flexibility offered by that choice. What are the benefits and potential pitfalls of that decision?</li> <li>Can you describe the process of using River to design, implement, and validate a streaming ML model? <ul> <li>What are the operational requirements for deploying and serving the model once it has been developed?</li> </ul> </li> <li>What are some of the challenges that users of River might run into if they are coming from a batch learning background?</li> <li>What are the most interesting, innovative, or unexpected ways that you have seen River used?</li> <li>What are the most interesting, unexpected, or challenging lessons that you have learned while working on River?</li> <li>When is River the wrong choice?</li> <li>What do you have planned for the future of River?</li> </ul> <h2>Contact Info</h2> <ul> <li><a href="mailto:maxhalford25@gmail.com">Email</a></li> <li><a href="https://twitter.com/halford_max?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">@halford_max</a> on Twitter</li> <li><a href="https://github.com/MaxHalford?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">MaxHalford</a> on GitHub</li> </ul> <h2>Parting Question</h2> <ul> <li>From your perspective, what is the biggest barrier to adoption of machine learning today?</li> </ul> <h2>Closing Announcements</h2> <ul> <li>Thank you for listening! Don’t forget to check out our other shows. The <a href="https://www.dataengineeringpodcast.com?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Data Engineering Podcast</a> covers the latest on modern data management. <a href="https://feeds.fireside.fm/pythonpodcast/rss">Podcast.__init__</a> covers the Python language, its community, and the innovative ways it is being used.</li> <li>Visit the <a href="https://www.themachinelearningpodcast.com?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">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@themachinelearningpodcast.com">hosts@themachinelearningpodcast.com</a>) with your story.</li> <li>To help other people find the show please leave a review on <a href="https://podcasts.apple.com/us/podcast/the-machine-learning-podcast/id1626358243?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://riverml.xyz/0.11.1/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">River</a></li> <li><a href="https://scikit-multiflow.github.io/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">scikit-multiflow</a></li> <li><a href="https://en.wikipedia.org/wiki/Federated_learning?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Federated Machine Learning</a></li> <li><a href="https://arxiv.org/abs/1106.5730?context=cs&utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Hogwild!</a> Google Paper</li> <li><a href="https://huyenchip.com/2022/02/07/data-distribution-shifts-and-monitoring.html?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Chip Huyen concept drift blog post</a></li> <li><a href="https://rise.cs.berkeley.edu/wp-content/uploads/2017/02/clipper_final.pdf?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Dan Crenshaw Berkeley Clipper MLOps</a></li> <li><a href="https://www.wikiwand.com/en/Robustness_principle?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Robustness Principle</a></li> <li><a href="https://www.kaggle.com/c/nyc-taxi-trip-duration?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">NY Taxi Dataset</a></li> <li><a href="https://github.com/online-ml/river-torch?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">RiverTorch</a></li> <li><a href="https://www.notion.so/d1e86fcdf21e4deda16eedab2b3361fb?v=503f44740b8b44a99a961aa96e9e46e1&utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">River Public Roadmap</a></li> <li><a href="https://github.com/online-ml/beaver?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Beaver</a> tool for deploying online models</li> <li><a href="https://prodi.gy/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Prodigy ML human in the loop labeling</a></li> </ul> <p>The intro and outro music is from <a href="https://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/Tales_Of_A_Dead_Fish/Hitmans_Lovesong/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Hitman’s Lovesong feat. Paola Graziano</a> by <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="https://creativecommons.org/licenses/by-sa/3.0/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">CC BY-SA 3.0</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%2Friver-streaming-machine-learning-episode-388%2F&action_name=Update+Your+Model%27s+View+Of+The+World+In+Real+Time+With+Streaming+Machine+Learning+Using+River+-+Episode+388&urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&utm_source=rss&utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" />