Evolving Reddit’s ML Model Deployment and Serving Architecture

This page summarizes the projects mentioned and recommended in the original post on /r/RedditEng

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • baseplate.go

    Reddit's Service Framework in Go

  • Gazette Inference Service is a baseplate.go (Reddit’s golang web services framework) thrift service whose single responsibility is serving ML inference requests to it’s clients. It is deployed with Reddit’s modern kubernetes infrastructure.

  • baseplate.py

    reddit's python service framework

  • Minsky is an internal baseplate.py (Reddit’s python web services framework) thrift service owned by Reddit’s Machine Learning team that serves data or derivations of data related to content relevance heuristics — such as similarity between subreddits, a subreddits topic or a users propensity for a given subreddit — from various data stores such as Cassandra or in process caches. Clients of Minsky use this data to improve Redditor’s experiences with the most relevant content. Over the last few years a set of new ML capabilities, referred to as Gazette, were built into Minsky. Gazette is responsible for serving ML model inferences for personalization tasks along with configuration based schema resolution and feature fetching / transformation.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • rollingpin

    fast deploy to lots of servers

  • Minsky / Gazette is deployed on legacy Reddit infrastructure using puppet managed server bootstrapping and deployment rollouts managed by an internal tool called rollingpin. Application instances are deployed across a cluster of EC2 instances managed by an autoscaling group with 4 instances of the Minsky / Gazette thrift server launched on each instance within independent processes. Einhorn is then used to load balance requests from clients across the 4 Minsky / Gazette processes. There is no virtualization between the instances of Minsky / Gazette on a single EC2 instance so all instances share the same CPU and RAM.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Python use by SWEs

    2 projects | /r/cscareerquestions | 7 May 2023
  • The Rollout of Reputation Service

    1 project | /r/RedditEng | 7 Jun 2021
  • Solving The Three Stooges Problem

    3 projects | /r/RedditEng | 1 Jul 2021
  • AI enthusiasm #7 - Build an AI-powered Telegram Bot!🤖

    2 projects | dev.to | 23 Apr 2024
  • Designing a Pure Python Web Framework

    6 projects | news.ycombinator.com | 22 Mar 2024