Skip to content

Architecture

Comet is a an advanced web application comprised of multiple components working together to provide a seamless experience for ML/Data Science teams.

Self-Hosted Comet allows you to deploy the same software we use in our SaaS offering in your own infrastructure. This allows you to have full control over your data and the environment in which it is processed, as well as to customize the deployment to meet your specific needs.

Comet Core Components

The core of the Comet application provides the Experiment Management features and the Comet WebUI, as well as user/workspace management and the Comet API.

Front-end NGINX

All traffic to Comet is routed through an NGINX server, which acts both as a reverse proxy to the internal Comet Components and also serves the static content for the Comet WebUI.

Backend React (API)

The Comet WebUI and REST API backed by a Java application called Backend-React. This application is responsible for serving dynamic content to the Comet WebUI and handling API requests from the Comet SDK and other external clients.

Backend Python (ClientLib)

The majority of the Comet Python SDK functionality is served by our ClientLib Java Application called Backend Python.

Backend PostProcess

Data submitted to Comet is queued and processed by the PostProcess service. This Java application is responsible for summarizing and storing the data before it is made available to the Comet WebUI.

Backend Optimizer

The Optimizer service supports the Optimizer feature in the Comet SDK. It is a Python application which handles requests to the optimizer endpoint.

Data Layer

The Core Comet Components are stateless and rely on external services for persistent storage and caching. See the deployment options page for further information on how these data layer dependencies can be satisfied.

MySQL

The primary data store for Comet is a MySQL database. This database stores information about users, workspaces, experiments, metadata, and metrics. It organizes and references all the data pertaining to your experiments. Its schema is managed by the Comet application.

Object Storage

Experiment artifacts/assets, such as code, logs, and metrics, are stored in an object storage service. This service is used to store large files and other assets that are generated during the course of an experiment. The MySQL database stores references to these assets and associates them with the appropriate experiment.

Redis

Comet uses Redis as both a cache and processing queue. Data submitted to Comet is stored in Redis before being processed and sorted into permanent storage.

Local/Ephemeral Storage

Comet, optionally, uses local storage for temporary files and other ephemeral data, primarily for spooling data in the event of a temporary failure in the availability of other data layers.

Architecture Diagrams

The following diagrams show the high-level architecture of Comet's core components along with their supporting data layers.

Infrastructure Components

Infrastructure Architecture

Network Communication

Network Communication

Additional Components

There are several additional components that can be deployed alongside the core Comet components to provide additional functionality. Their architectures are documented on their respective pages:

Model Production Monitoring

Comet Compute Panels

Opik

Dec. 17, 2024