Uber Engineering is creating solutions to provide consumers with smooth, impactful experiences. To achieve this vision, they are the their investments in artificial intelligence (AI) and machine learning (ML). Uber launched its ML-as-a-service platform Michelangelo in 2017 with the aim of democratizing machine learning and making scaling AI "as simple as requesting a ride."
Uber made a whopping 1,658 million trips per day on average in the first quarter of 2020. Uber has access to a large dataset due to its large fleet of vehicles and drivers, as well as its ever-growing customer base. Uber has always been a believer in artificial intelligence and machine learning, and Michelangelo is one of its pet projects.
Need For Standardization
Michelangelo, which began development in 2015 and was finally placed into service in 2016, was designed to allow internal teams to seamlessly develop, deploy, and operate ML solutions at Uber's scale. It is currently spread across many Uber data centers and is used to forecast the company's most heavily used online services.
When the team realized how difficult it was to create and deploy machine learning models at scale, they decided to build Michelangelo. Prior to Michelangelo, engineering teams focused mostly on developing independent predictive models or one-of-a-kind bespoke systems. However, such short-term options were severely restricted in several ways.
Michelangelo is a complete framework that standardizes workflows and resources across teams in order to quickly create and run machine learning models at scale. It has now become the de facto machine learning framework for Uber engineers and data scientists, with many teams using it to create and deploy models.
Michelangelo is developed with open-source components including HDFS, XGBoost, Tensorflow, Cassandra, MLLib, Samza, and Spark. It makes use of Uber's data and compute infrastructure to include a data lake for storing transactional and logged data, Kafka brokers for aggregating logged messages, a Samza streaming compute engine, managed Cassandra clusters, and in-house service provisioning and deployment tools.
To solve the six-step workflow, Michelangelo offers scalable, efficient, reproducible, and automated resources.
The platform includes a data lake that is used for training and inference. Applications use batch prediction and online inferencing to access the centralized data store. Michelangelo provides regular algorithms for training ML models. In addition, developers can add new algorithms for training ML models. Michelangelo also provides end-to-end management of model deployment via UI or API, which can be done for both online and offline predictions. The framework continuously tracks predictions for accuracy and speed in order to prompt re-training when necessary.
Uber enhanced Michelangelo in 2018 with PyML to make it easier for Python users to train and deploy their models. These models can contain any Python package or native Linux libraries, as well as arbitrary use code. It enables data scientists to run an identical copy of a model locally in real-time experiments, as well as large-scale parallelized offline prediction.
The features are accessible through a simple Python SDK and can be used directly in development environments such as Jupyter notebooks without the need to move between separate applications. This approach is easily transferable to other ML platforms and model serving systems since it relies on many open-source components.
Michelangelo was released in 2017 with a monolithic architecture that controlled tightly coupled workflows as well as Spark jobs for training and serving. Michelangelo had pipeline descriptions for each model type endorsed. Spark was used for offline serving, and custom APIs were used for online serving.
In 2019, the Uber team agreed to update the Michelangelo model representation for scalability. The original model only supported a subset of Spark MLlib models with custom model serialization and representation. Customers were unable to experiment with complex model pipelines as a result of this. The team then agreed to expand Michelangelo's use of Spark MLlib to include model representation, persistence, and online serving.
· UberEats models for meal delivery time forecasts, search rankings, restaurant rankings, and search autocomplete are all running on Michelangelo. Gradient boosted decision tree regression models are used by data scientists to estimate delivery time using information from order requests, historical features, and near real-time measured features. Michelangelo is critical to achieving the end goal of estimating the overall length of this multi-stage and dynamic process, as well as recalculating delivery time estimates at each stage of the process.
· Uber employs a Customer Obsession Ticket Assistant (COTA) tool to assist agents in providing improved customer service. It is built on Michelangelo and sits atop Uber's customer service network. COTA contributes to the fast and efficient resolution of up to 90% of inbound support tickets.
· Uber uses various spatiotemporal forecasting models based on Michelangelo to forecast potential rider demand and cab availability at various locations and times. Uber relies on these models to predict demand-supply imbalances and enable driver-partners to arrive early at high-demand locations.
· The Michelangelo-based one-click chat feature streamlines communication between riders and driver-partners by leveraging NLP models to predict and view most likely responses on in-app chat messages. This enables driver-partners to react with pre-populated templates, reducing distraction.
· Uber engineers use Michelangelo's Horovord to create self-driving car systems. Deep learning models are used for functions like object recognition and motion planning.
· Willem Pienaar created Feast, a leading open-source feature store for machine learning. Feast, he said, was inspired by Michelangelo. Notably, Tecton, an enterprise feature store created by members of the Michelangelo team, announced that they would become a key contributor to Feast.
To help their work, Newsmusk allows writers to use primary sources. White papers, government data, initial reporting, and interviews with industry experts are only a few examples. Where relevant, we also cite original research from other respected publishers.
Source- Uber Engineering Blog, Newsletter