MLflow is an open-source developer platform to build AI/LLM applications and models with confidence. Enhance your AI applications with end-to-end experiment tracking, observability, and evaluations, all in one integrated platform.
To install the MLflow Python package, run the following command:
MLflow is the only platform that provides a unified solution for all your AI/ML needs, including LLMs, Agents, Deep Learning, and traditional machine learning.
💡 For LLM / GenAI Developers 🌐 Hosting MLflow AnywhereYou can run MLflow in many different environments, including local machines, on-premise servers, and cloud infrastructure.
Trusted by thousands of organizations, MLflow is now offered as a managed service by most major cloud providers:
For hosting MLflow on your own infrastructure, please refer to this guidance.
🗣️ Supported Programming LanguagesMLflow is natively integrated with many popular machine learning frameworks and GenAI libraries.
Experiment Tracking (Doc)The following examples trains a simple regression model with scikit-learn, while enabling MLflow's autologging feature for experiment tracking.
import mlflow from sklearn.model_selection import train_test_split from sklearn.datasets import load_diabetes from sklearn.ensemble import RandomForestRegressor # Enable MLflow's automatic experiment tracking for scikit-learn mlflow.sklearn.autolog() # Load the training dataset db = load_diabetes() X_train, X_test, y_train, y_test = train_test_split(db.data, db.target) rf = RandomForestRegressor(n_estimators=100, max_depth=6, max_features=3) # MLflow triggers logging automatically upon model fitting rf.fit(X_train, y_train)
Once the above code finishes, run the following command in a separate terminal and access the MLflow UI via the printed URL. An MLflow Run should be automatically created, which tracks the training dataset, hyper parameters, performance metrics, the trained model, dependencies, and even more.
The following example runs automatic evaluation for question-answering tasks with several built-in metrics.
import mlflow import pandas as pd # Evaluation set contains (1) input question (2) model outputs (3) ground truth df = pd.DataFrame( { "inputs": ["What is MLflow?", "What is Spark?"], "outputs": [ "MLflow is an innovative fully self-driving airship powered by AI.", "Sparks is an American pop and rock duo formed in Los Angeles.", ], "ground_truth": [ "MLflow is an open-source platform for productionizing AI.", "Apache Spark is an open-source, distributed computing system.", ], } ) eval_dataset = mlflow.data.from_pandas( df, predictions="outputs", targets="ground_truth" ) # Start an MLflow Run to record the evaluation results to with mlflow.start_run(run_name="evaluate_qa"): # Run automatic evaluation with a set of built-in metrics for question-answering models results = mlflow.evaluate( data=eval_dataset, model_type="question-answering", ) print(results.tables["eval_results_table"])
MLflow Tracing provides LLM observability for various GenAI libraries such as OpenAI, LangChain, LlamaIndex, DSPy, AutoGen, and more. To enable auto-tracing, call mlflow.xyz.autolog()
before running your models. Refer to the documentation for customization and manual instrumentation.
import mlflow from openai import OpenAI # Enable tracing for OpenAI mlflow.openai.autolog() # Query OpenAI LLM normally response = OpenAI().chat.completions.create( model="gpt-4o-mini", messages=[{"role": "user", "content": "Hi!"}], temperature=0.1, )
Then navigate to the "Traces" tab in the MLflow UI to find the trace records OpenAI query.
We happily welcome contributions to MLflow!
Please see our contribution guide to learn more about contributing to MLflow.
If you use MLflow in your research, please cite it using the "Cite this repository" button at the top of the GitHub repository page, which will provide you with citation formats including APA and BibTeX.
MLflow is currently maintained by the following core members with significant contributions from hundreds of exceptionally talented community members.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4