Resonance: Replacing Software Constants with Context-Aware Models in Real-time Communication
- Jayant Gupchup ,
- Ashkan Aazami ,
- Yaran Fan ,
- Senja Filipi ,
- Tom Finley ,
- Scott Inglis ,
- Marcus Asteborg ,
- Luke Caroll ,
- Rajan Chari ,
- Markus Cozowicz ,
- Vishak Gopal ,
- Vinod Prakash ,
- Sasikanth Bendapudi ,
- Jack Gerrits ,
- Eric Lau ,
- Huazhou Liu ,
- Marco Rossi ,
- Dima Slobodianyk ,
- Dmitri Birjukov ,
- Matty Cooper ,
- Nilesh Javar ,
- Dmitriy Perednya ,
- Sriram Srinivasan ,
- John Langford ,
- Ross Cutler ,
- Johannes Gehrke
Large software systems tune hundreds of ‘constants’ to optimize their runtime performance. These values are commonly derived through intuition, lab tests, or A/B tests. A ‘one-size-fits-all’ approach is often sub-optimal as the best value depends on runtime context. In this paper, we provide an experimental approach to replace constants with learned contextual functions for Skype- a widely used realtime communication (RTC) application. We present Resonance, a system based on contextual bandits (CB). We describe experiences from three real-world experiments: applying it to the audio, video, and transport components in Skype. We surface a unique and practical challenge of performing machine learning (ML) inference in large software systems written using encapsulation principles. Finally, we open-source FeatureBroker, a library to reduce the friction in adopting ML models in such development environments.