Easily deploy an MLflow tracking server with 1 command.
MinIO S3 is used as the artifact store and MySQL server is used as the backend store.
-
Clone (download) this repository
git clone https://github.com/sachua/mlflow-docker-compose.git
-
cd
into themlflow-docker-compose
directory -
Build and run the containers with
docker-compose
docker compose up -d --build
-
Access MLflow UI with http://localhost:5000
-
Access MinIO UI with http://localhost:9000
The MLflow tracking server is composed of 3 docker containers:
- MLflow server
- MinIO object storage server
- MySQL database server
-
Install conda
-
Install MLflow with extra dependencies, including scikit-learn
pip install mlflow boto3
-
Set environmental variables
export MLFLOW_TRACKING_URI=http://localhost:5000 export MLFLOW_S3_ENDPOINT_URL=http://localhost:9000
-
Set MinIO credentials
cat <<EOF > ~/.aws/credentials [default] aws_access_key_id=minio aws_secret_access_key=minio123 EOF
-
Train a sample MLflow model
mlflow run https://github.com/sachua/mlflow-example.git -P alpha=0.42
-
Serve the model (replace ${MODEL_ID} with your model's ID)
export MODEL_ID=0ced24069348417fbbcb2cd41a7d2f07 # Replace this with your model's ID mlflow models serve -m runs:/${MODEL_ID}/model -p 1234 --env-manager conda
-
You can check the input with this command
curl -X POST -H "Content-Type:application/json" --data '{"dataframe_split":{"columns":["fixed acidity", "volatile acidity", "citric acid", "residual sugar", "chlorides", "free sulfur dioxide", "total sulfur dioxide", "density", "pH", "sulphates", "alcohol"],"data":[[6.2, 0.66, 0.48, 1.2, 0.029, 29, 75, 0.98, 3.33, 0.39, 12.8]]}}' http://127.0.0.1:1234/invocations