MLOps Platforms Compared 2026: MLflow vs Kubeflow vs SageMaker vs Vertex
I have been asked "which MLOps platform should we use?" more often this year than in the previous five combined, and my honest answer keeps getting shorter. Experiment tracking, a model registry, pipelines and serving are no longer hard problems; the hard problems are who owns your metadata in three years and how much you pay per GPU hour for the privilege of not running Kubernetes. 2026 made that sharper: Weights & Biases became a product inside CoreWeave Forge, Outerbounds (the Metaflow company) was bought by Anaconda, Vertex AI was renamed, Neptune switched its SaaS off, and Kubeflow moved to calendar versions. This post compares the MLOps platforms people actually shortlist (MLflow, Kubeflow, SageMaker AI, Vertex AI, Databricks, W&B, ZenML and Metaflow) on current versions, real list prices and lock-in, and ends with what I would pick for different team shapes.
What does an MLOps platform need to do in 2026?
Strip the marketing away and every MLOps platform is five boxes: experiment tracking (parameters, metrics, artifacts), a model registry (versions plus a pointer such as "champion" that deployment follows), pipeline orchestration (training and batch jobs as code), serving (an HTTP endpoint with autoscaling and rollouts) and monitoring (drift, latency, and now LLM traces and evals). In 2026 a sixth box has crept in everywhere: GenAI tracing and evaluation, which is why MLflow's release notes now read like an LLM-ops changelog and why W&B's Weave got folded into an "agent" platform. I covered the evaluation side in MLOps in 2026: Evals Are the New Unit Tests, and the vocabulary fight in MLOps vs LLMOps vs AgentOps.
They all claim all six boxes, so the useful question is which boxes you rent, which you run, and which formats let you leave. A tracking store with an open export API is cheap to walk away from; a pipeline DSL that runs on one vendor's orchestrator is not.
Who bought, renamed or shut down what since 2025?
The last eighteen months were mostly consolidation, and it matters for anyone signing a multi-year contract.
- Weights & Biases. CoreWeave completed the acquisition on 5 May 2025 and promised to keep the platform interoperable. On 30 September 2026 it went further: CoreWeave's W&B page says Free, Pro and Enterprise SaaS accounts now sign in through CoreWeave Forge, with the same credentials, projects and API keys, while self-hosted and dedicated-instance accounts are unchanged. The old pricing URL now redirects to Forge pricing.
- Metaflow. Anaconda announced on 29 April 2026 that it had acquired Outerbounds, and says plainly that "Metaflow remains open source." The library itself keeps shipping: 2.19.39 came out on 2 September.
- Vertex AI. Google's release notes record that on 22 April 2026 Vertex AI became part of Gemini Enterprise Agent Platform. Vertex AI Pipelines is now Agent Platform Pipelines, Model Registry is Agent Platform Model Registry, Endpoints are Agent Platform Endpoints and Training is Agent Platform Managed Training. Expect a lot of stale tutorials.
- Neptune. OpenAI agreed to buy Neptune in December 2025, and Neptune's notice, quoted by InfoWorld, said the hosted app and API would be turned off on 4 March 2026 with remaining hosted data "irreversibly deleted". That is the clearest recent example of why export paths belong in the evaluation criteria.
- Kubeflow. After 1.10 (1 April 2025) and 1.11 (15 December 2025), the project switched to calendar versioning with 26.03 on 22 March 2026. The 26.03.1 announcement describes Year.Month.Patch versions, about two base releases a year and roughly six months of best-effort community support.
MLflow vs Kubeflow: which open-source core?
These two get compared constantly and they barely overlap. MLflow is a tracking server, model registry, model packaging format and, since 3.0, a GenAI tracing and evaluation tool. It is Apache-2.0, ships fast (3.17.0 on 6 October, 3.17.1 on 13 October) and runs as a single Python service with a SQL database and an object store behind it. The 3.17.0 release added fine-grained permissions down to runs, traces and model versions, plus an explicit DENY rule, which closes one of the oldest complaints about self-hosted MLflow. It also requires a coordinated database upgrade: the notes say mixed-version rolling upgrades are not supported, so plan a short write outage.
Kubeflow is a Kubernetes distribution: Pipelines, notebooks, Katib for tuning, Trainer for distributed training, a model hub and KServe for serving, wired together with Istio and Dex. The 26.03 release validates Kubernetes 1.34 or later and pins Pipelines 2.16.0, Trainer 2.1.0, Katib 0.19.0 and KServe 0.16.0, with 26.03.1 moving to KServe 0.18.0 and renaming Model Registry to Kubeflow Hub. Choose it when you already run Kubernetes well and want training jobs and notebooks as first-class cluster workloads, not for experiment tracking; most Kubeflow shops I know run MLflow next to it.
Serving is the piece most teams can lift out on its own. KServe became a CNCF incubating project in November 2025 and its standalone releases run well ahead of what Kubeflow bundles: v0.21.0 shipped on 25 September 2026. If all you need from "Kubeflow" is model endpoints, install KServe alone; my companion guide, How to Deploy an ML Model on Kubernetes with KServe, walks through exactly that.
Here is the portable core I put under almost every stack. It runs unchanged against a local SQLite file, a self-hosted MLflow server, SageMaker's managed MLflow or Databricks, which is the point. I ran it locally with the pinned versions in the comment:
# train.py: the portable core of most MLOps stacks (MLflow 3.17.1, scikit-learn 1.9.1)
import mlflow
from mlflow import MlflowClient
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
mlflow.set_tracking_uri("sqlite:///mlflow.db") # or http://mlflow.internal:5000, or "databricks"
mlflow.set_experiment("iris")
X, y = load_iris(return_X_y=True)
with mlflow.start_run():
clf = LogisticRegression(max_iter=200).fit(X, y)
mlflow.log_param("max_iter", 200)
mlflow.log_metric("train_accuracy", clf.score(X, y))
info = mlflow.sklearn.log_model(
clf, name="model", input_example=X[:2],
registered_model_name="iris-classifier", # registry entry, version auto-increments
)
# Aliases replaced stages: deploy whatever "champion" points at
MlflowClient().set_registered_model_alias(
"iris-classifier", "champion", info.registered_model_version
)
model = mlflow.pyfunc.load_model("models:/iris-classifier@champion")
print("version", info.registered_model_version, "predictions", model.predict(X[:2]).tolist())
# Output on my machine:
# Successfully registered model 'iris-classifier'.
# Created version '1' of model 'iris-classifier'.
# version 1 predictions [0, 0]
If training code only talks to the MLflow API and deployment only follows a registry alias, moving between the platforms below is a configuration change, not a rewrite. The deeper registry workflow is in the MLflow 3 model registry guide.
SageMaker vs Vertex AI vs Databricks: what does managed actually cost?
The managed platforms charge a premium on compute and, in exchange, you skip running the control plane. The premium is easy to measure for SageMaker because AWS publishes both price lists. From the SageMaker and EC2 price list files for us-east-1, published 16 and 15 October 2026 (the human-readable versions are the SageMaker AI pricing and EC2 on-demand pricing pages):
| Instance | SageMaker real-time hosting, $/hr | Same EC2 instance, Linux on-demand, $/hr | Premium | Extra per always-on month (730 h) |
|---|---|---|---|---|
| m5.large (2 vCPU, 8 GiB) | 0.115 | 0.096 | 20% | $13.87 |
| g6.xlarge (1x L4) | 1.1267 | 0.8048 | 40% | $234.99 |
| g5.xlarge (1x A10G) | 1.408 | 1.006 | 40% | $293.46 |
Forty percent sounds like a lot until you price what replaces it: an EKS control plane, KServe, autoscaling, certificates, upgrades and someone on call. For two endpoints the premium is cheaper than an engineer. At twenty always-on GPU endpoints it is a salary. SageMaker also gives you fully managed MLflow 3.0, launched in July 2025, so the tracking layer stays portable even if serving does not.
Vertex AI, now officially Gemini Enterprise Agent Platform, prices online prediction per node-hour by machine type and bills deployed nodes whether or not they receive traffic. Pipelines add an orchestration fee: Google's own worked example lists $0.03 per pipeline run on top of the compute each step uses. Its pipelines run the Kubeflow Pipelines SDK, which is the most underrated portability feature in this whole comparison: a KFP pipeline written for Vertex will also run on self-hosted Kubeflow.
Databricks prices model serving in DBUs. The Model Serving pricing page lists GPU serving at 20 DBUs an hour for one A10G, 44.86 for one L40S and 100 for one H100; the dollar price per DBU depends on cloud, tier and contract, and the page did not render it when I checked, so I am not quoting one. Managed MLflow sits inside the workspace with the registry in Unity Catalog. If your data lives in Databricks, that is the reason to stay; if not, you are buying a data platform to get a model registry.
W&B, ZenML and Metaflow: the layers on top
These three do not replace a cloud; they sit on whatever compute you have.
Weights & Biases is still the nicest experiment-tracking UI for deep learning and RL, and is now one product inside CoreWeave Forge alongside CoreWeave's training, inference, registry and sandbox services. The listed plans are Free (up to 5 seats), Pro from $60 a month with up to 10 seats and 100 GB of storage, and custom Enterprise, with Pro limited to teams under 50 employees. My concern is direction, not quality: when a GPU cloud owns your tracking vendor, assume the roadmap optimises for that cloud. The SDK remains open source (wandb v0.31.0, 16 October), and self-hosted deployments were explicitly left unchanged.
ZenML is a pipeline framework that orchestrates onto other tools (Kubeflow, SageMaker, Vertex, Airflow) through "stacks", which makes it a reasonable hedge if you expect to move clouds. The open-source core is free; the managed Scale tier is $999 a month, priced by pipeline executions. It ships often: 0.98.0 landed on 14 October.
Metaflow came out of Netflix and remains the most pleasant way I know to write a training workflow as plain Python that can later run on AWS Batch, Kubernetes or Argo. The Anaconda acquisition changes who sells the managed version, not the Apache-2.0 library.
MLOps platform comparison table: pricing and lock-in
Versions and prices as of 20 October 2026. "Lock-in" is my judgement of how expensive it is to leave, based on whether the data and pipeline formats are open.
| Platform | Current state | How you pay | What locks you in | Lock-in | Source |
|---|---|---|---|---|---|
| MLflow (self-hosted) | 3.17.1, Apache-2.0 | Your infra and ops time | Little: open API, SQL store, files in object storage | Low | releases |
| Kubeflow | 26.03.1, CalVer, K8s 1.34+ | Your cluster and ops time | KFP pipelines are portable to Vertex; Istio/Dex stack is the real cost | Low to medium | 26.03 |
| KServe (standalone) | v0.21.0, CNCF incubating | Your cluster | InferenceService CRD only | Low | v0.21.0 |
| SageMaker AI | Managed MLflow 3.0, real-time hosting | 20 to 40% over EC2 on the instances above | SageMaker SDK, endpoint configs, IAM wiring | Medium to high | price list |
| Vertex AI, now Gemini Enterprise Agent Platform | Renamed 22 April 2026 | Node-hours, $0.03 per pipeline run | Endpoints and Feature Store; pipelines are KFP | Medium | release notes |
| Databricks | Managed MLflow, Unity Catalog | DBUs, e.g. 20 per A10G hour for serving | Unity Catalog, Delta, workspace features | Medium to high | model serving |
| W&B in CoreWeave Forge | SaaS sign-in via Forge since 30 Sep 2026 | Free, Pro from $60/month, Enterprise | Hosted run history; export via API | Medium | W&B page |
| ZenML | 0.98.0, open source core | Free OSS, Scale $999/month | Thin: wraps other orchestrators | Low | pricing |
| Metaflow | 2.19.39, Apache-2.0, owned by Anaconda via Outerbounds | Free OSS, commercial platform via Anaconda | Thin: plain Python flows | Low | Anaconda |
How should a small team choose an MLOps platform?
My rules of thumb, roughly in order:
- Fewer than five models in production and no platform team? Use the managed service of the cloud you already pay for, but keep tracking on MLflow (managed or not) so the metadata is portable. The SageMaker premium is a rounding error at this scale.
- Already running Kubernetes competently? Self-host MLflow and KServe; add Kubeflow Pipelines only when you have more than a handful of scheduled training jobs. Full Kubeflow is a distribution to operate, with its own upgrade cadence, and Kubernetes is only worth it when you would run it anyway.
- Data already in Databricks? Stay there. Fighting gravity costs more than DBUs.
- Deep learning research with many runs? W&B is still excellent; negotiate data export terms and a price cap in writing, and mirror key metrics to MLflow.
- Expect to change clouds? Write pipelines in KFP, ZenML or Metaflow, not in a vendor-specific DSL.
Bigger models made none of this easier. GPU endpoints cost more per hour than any CPU service you run, so the boring disciplines (autoscaling floors, idle endpoint audits, cost tags, rollbacks) matter more. The GPU cloud economics are unforgiving, and so are the FinOps numbers for AI.
FAQ
What is the best MLOps platform in 2026?
There is no single best one. For most teams the safest default is MLflow for tracking and the registry, plus whatever serving your infrastructure already supports: SageMaker or Vertex endpoints if you are cloud-native without Kubernetes skills, KServe if you run Kubernetes. Pick the managed suite only for the boxes you do not want to operate.
Is Kubeflow still relevant in 2026?
Yes, for Kubernetes-first organisations. It moved to calendar versioning with 26.03 in March 2026, validates Kubernetes 1.34 or later, and bundles Pipelines 2.16, Trainer and KServe. For teams that only need model serving, standalone KServe is lighter and newer.
What happened to Weights & Biases?
CoreWeave completed its acquisition on 5 May 2025. Since 30 September 2026, W&B SaaS accounts sign in through CoreWeave Forge with unchanged credentials, projects and API keys, and self-hosted and dedicated deployments are unaffected. The product continues, but under a GPU cloud's brand.
Is SageMaker more expensive than EC2?
Yes, for the same instance. In us-east-1 list prices on 16 October 2026, SageMaker real-time hosting costs about 20% more than EC2 for m5.large and about 40% more for g5.xlarge and g6.xlarge. Whether that is expensive depends on what running your own serving stack costs you in engineering time.
This quarter I would do three things on any ML platform I inherited: confirm I can export every run, model version and trace to an open format (Neptune's SaaS customers got months, not years), move deployments to follow registry aliases rather than hard-coded artifact paths, and put a monthly price on every always-on GPU endpoint so the managed-versus-self-hosted conversation starts from numbers. I run my own infrastructure business, so I am biased toward owning the stack, but for a team with two models and no on-call rota I would still tell them to pay the premium and keep MLflow as the exit.
Related: MLOps in 2026: Evals Are the New Unit Tests, LLM Inference in 2026: Prefill Is a Different Machine Now and Kubernetes as the Agent Control Plane in 2026.
I'm Ajay Kumar — I build and operate PandaStack, an open-source Firecracker microVM cloud for AI agents, and write about the infrastructure and tooling around it.
Need this kind of infrastructure work? See what I do or email hello@ajayk.sh.
Related
How to Deploy an ML Model on Kubernetes with KServe 0.21 (2026)
Step-by-step KServe v0.21.0 guide: install in Standard mode with Helm, cert-manager and Gateway API, deploy scikit-learn and Hugging Face/vLLM InferenceServices, add HPA or KEDA autoscaling, canary rollouts, GPUs, and fix InferenceService not ready.
14 minOct 20, 2026Crossplane vs Terraform vs Pulumi in 2026: Control Plane or Plan/Apply?
Crossplane vs Terraform, OpenTofu and Pulumi as of October 2026: Crossplane v2 namespaced resources and function pipelines, CNCF graduation, Pulumi running HCL, Terraform 1.16 and OpenTofu 1.13, how each handles drift, what it costs, and which team fits which tool.
12 minOct 20, 2026How to Deploy vLLM on Kubernetes with GPUs: Step-by-Step (2026)
Deploy vLLM v0.32.0 on Kubernetes with NVIDIA GPUs: install GPU Operator v26.7.2, cache model weights on a PVC, serve an OpenAI-compatible API, autoscale on vllm:num_requests_waiting with KEDA, and fix CUDA out of memory and slow startup errors.
15 min