This document provides a high-level introduction to MLflow's architecture, core components, and codebase organization. It describes the platform's purpose as a complete ML lifecycle management system and maps high-level concepts to specific code entities (classes, modules, files) to help developers navigate the repository.
For detailed information about specific subsystems:
mlflow, mlflow-skinny, and mlflow-tracing. See Package Distributions.Sources: README.md8-15 pyproject.toml11-15
MLflow is an open-source platform for managing the complete machine learning lifecycle, covering both classical ML and GenAI/LLM applications README.md6-11 It provides:
MlflowClient mlflow/tracking/client.py216pyfunc abstraction mlflow/__init__.py94Prompt and PromptVersion entities mlflow/tracking/client.py50-52 mlflow/tracking/client.py79-88mlflow.evaluate() and GenAI-specific judges mlflow/ml-package-versions.yml100-108The platform is implemented primarily in Python with support for TypeScript/JavaScript, Java, and R README.md80 mlflow/java/pom.xml1-11 mlflow/R/mlflow/DESCRIPTION1-4
Sources: README.md6-15 pyproject.toml11-15 mlflow/java/pom.xml1-11 mlflow/R/mlflow/DESCRIPTION1-4 mlflow/version.py5-30 mlflow/tracking/client.py50-52
MLflow is distributed as three distinct Python packages with shared infrastructure. The build is managed via dev/pyproject.py which auto-generates the distribution metadata pyproject.toml1
Title: Package Component Mapping
Package Definitions:
| Package | Purpose | Key Characteristics |
|---|---|---|
mlflow | Full platform with all features | Includes ML frameworks, UI, and serving dependencies pyproject.toml11-68 |
mlflow-skinny | Lightweight core tracking | Excludes SQL storage, server, UI, or heavy data science libs libs/skinny/pyproject.toml9-48 |
mlflow-tracing | Tracing SDK for LLM observability | Focused on OpenTelemetry conventions and span capture libs/tracing/pyproject.toml1-10 |
For details on how these packages are constructed and the flags IS_TRACING_SDK_ONLY, IS_MLFLOW_SKINNY, or IS_FULL_MLFLOW, see Package Distributions.
Sources: mlflow/version.py20-30 pyproject.toml1-68 libs/skinny/pyproject.toml1-48 pyproject.release.toml29-31
MLflow follows a layered client-server architecture where multiple client types communicate with backend services via REST API.
Title: Client-Server Code Entity Interaction
Key Code Entities:
MlflowClient class provides a lower-level CRUD interface for runs, models, and prompts mlflow/tracking/client.py216mlflow.tracking.fluent (e.g., start_run, log_param, set_experiment) mlflow/tracking/fluent.py1-10IS_TRACING_SDK_ONLY determine module availability at runtime mlflow/version.py24uv for exact dependency resolution and lockfile management uv.lock1-35 pyproject.toml240-255For details on subsystem interactions and design patterns, see System Architecture.
Sources: mlflow/tracking/client.py216-220 mlflow/version.py20-30 uv.lock1-35 pyproject.toml29-68 pyproject.toml128
MLflow integrates with dozens of ML frameworks (Scikit-Learn, PyTorch, Transformers, etc.) through a unified "flavor" system. These integrations are managed with specific version constraints defined in ml-package-versions.yml mlflow/ml-package-versions.yml1-26
Title: Version Configuration to Code Flavor Mapping
Key Integration Components:
mlflow/ml-package-versions.yml defines the minimum and maximum supported versions for each flavor, as well as test commands mlflow/ml-package-versions.yml1-10autologging hooks defined in the configuration mlflow/ml-package-versions.yml14-20Sources: mlflow/ml-package-versions.yml1-210 mlflow/ml_package_versions.py1-210 mlflow/version.py24-30
mlflow, mlflow-skinny, and mlflow-tracing builds.Refresh this wiki
This wiki was recently refreshed. Please wait 3 days to refresh again.