Omer Dunay Autoreload in Production at Meta | JupyterCon 2023

Autoreload in Production at Meta - Streamlining Iteration, Debugging & Testing with Jupyter Notebooks

Key takeaways

The Goal of Auto Reload

Develop high-quality autoreload for Jupyter notebooks to streamline iteration, debugging, and testing within meta.

Import Time Overheads

Current solutions cause excessive import time and restarting whole applications to accommodate changes. Python developers struggle to effectively work without needing to restart kernels, requiring rework or testing before publishing code changes.

Approaches and Fixes

  • Meta adopted two major solutions: Autoreload (Autoreload1 & Autoreload2) to create robust hotreload functionality while incorporating it as a Jupyter extension, providing interactivity inside notebook files, enabling continuous iterative coding.

Quantifiable Impact

Measurable effects for developers at Meta demonstrated with examples and demos - Auto Reload sped up workflow from minutes to seconds: [dramatic effect illustration] 14engineeringyearly costs -> accelerated iteraction.

Improving Autofile’s Cache Effect

When Autoreload iterates changes, Module caching ensures updated caches refresh: prevents data loss; speeds debugging iterations with confidence about local module objects’ values

Why Reliability mattered: Fixing Failures, Bugs and Improvings Interoperability

Identify problematic patterns: ‘monky patched objects with caching; fixed; enabling print() to pinpoint precise failures within notebook-based authoring loop cycles

Reliable Edge and User Story Examples: Velocity Counts and Cycles Count

The most popular way for code hotloading now includes faster iterative authoring within note-based applications at Meta [graph showing code development stages vs iterations] Intra-dev feedback led to robust user-facing enhancements. (further illustrating speed changes before vs. after adopting solutions).