Introduction
MLup is a library for easy and fast running of ML models in production.
All you need is to deliver the model file to the server (a config is optional) — pymlup turns it into a FastAPI web application with one CLI command. No web app code to write or maintain.
- Pure Python, no required framework-specific glue code;
- Uses FastAPI for the web layer;
- Works with any Python object that exposes a
predict-like method, plus native (de)serialization support for scikit-learn, lightgbm, tensorflow, torch and onnx models.
Requirements
Python 3.10+ (3.11, 3.12, 3.13, 3.14 supported; the tensorflow extra requires Python <3.14 until TensorFlow publishes 3.14 wheels).
pymlup 0.4.0 runs on FastAPI and Pydantic v2. Python 3.8/3.9 and Pydantic v1 are still supported on the pymlup 0.3.x line.
Installation
pip install pymlup
With an ML backend extra:
pip install "pymlup[scikit-learn]" # For scikit-learn
pip install "pymlup[lightgbm]" # For microsoft lightgbm
pip install "pymlup[tensorflow]" # For tensorflow
pip install "pymlup[torch]" # For torch
pip install "pymlup[onnx]" # For onnx models: torch, tensorflow, sklearn, etc...
Quick start
From a clean environment to a working prediction API in about five minutes, using scikit-learn as the example.
1. Create a virtual environment and install pymlup with the scikit-learn extra:
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install "pymlup[scikit-learn]"
2. Train and save a tiny model. Save this as train_model.py and run it:
# train_model.py
import pickle
from sklearn.tree import DecisionTreeClassifier
X = [[0, 0], [1, 1], [2, 2], [3, 3]]
y = [0, 0, 1, 1]
model = DecisionTreeClassifier().fit(X, y)
with open("model.pkl", "wb") as f:
pickle.dump(model, f)
python train_model.py
3. Start the API:
mlup run -m ./model.pkl
4. Check it's alive (in another terminal):
curl http://localhost:8009/health
{"status":200}
5. Call the model:
curl -X POST http://localhost:8009/predict \
-H "Content-Type: application/json" \
-d '{"X": [[1, 1], [3, 3]]}'
{"predict_result":[0,1]}
6. Explore the interactive API docs. Open http://localhost:8009/docs in your browser for the Swagger UI, auto-generated from your model's predict signature — you can try /predict right there.
Stop the server with Ctrl+C.
Already have a serialized model (onnx, joblib, lightgbm, torch, tensorflow, ...) instead of training a new one? Point mlup run -m at it directly (install the matching extra from Installation) — see the full documentation for every supported format and config option.
Any Python object, no ML framework required
pymlup doesn't require a serialized model file at all — any Python object with a predict-like method works:
import mlup
class MyAnyModelForExample:
def predict(self, X):
return X
up = mlup.UP(ml_model=MyAnyModelForExample())
up.ml.load()
up.run_web_app(daemon=True)
Open http://localhost:8009/docs to try it, or call it from the same script — this needs pip install requests separately, it's not a pymlup dependency:
import requests
response = requests.post('http://localhost:8009/predict', json={'X': [[1, 2, 3], [4, 5, 6]]})
print(response.json())
up.stop_web_app()
Supported ML frameworks
Work tested with machine learning model frameworks (links to tests):
- scikit-learn>=1.2.0,<2.0.0
- tensorflow>=2.0.0,<3.0.0, Python<3.14
- lightgbm>=4.0.0,<5.0.0
- torch>=2.0.0,<3.0.0
- onnx>=1.0.0,<2.0.0
- onnxruntime>=1.14.0,<1.26.0
Support and tested with machine learning libraries:
Documentation
The full documentation — Python API, CLI reference, config file format, storages, binarizers, data transformers, web app architectures/API, application life cycle — lives at mlup.org (source: docs/).
Useful links
Metrics
MLup PyPi download statistics: https://pepy.tech/project/pymlup
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pymlup-0.4.0.tar.gz.
File metadata
- Download URL: pymlup-0.4.0.tar.gz
- Upload date:
- Size: 45.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7aea0de395b90aeac2242d9b7bf1090b8b1afb4406e0663142dc7d49c961c734
|
|
| MD5 |
86c2dd7c7115cf6b3a8a25b48dea42dd
|
|
| BLAKE2b-256 |
3f452cc74d34a1c0b42d9709bb8bca817eff400cbe57263b77640afefdbf9514
|
File details
Details for the file pymlup-0.4.0-py3-none-any.whl.
File metadata
- Download URL: pymlup-0.4.0-py3-none-any.whl
- Upload date:
- Size: 61.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b4795be3d92cf8f0002324a1a1f5fca792a25b6718c5145083ca921d92f4e2eb
|
|
| MD5 |
6b9f287f05f17cf8419c1f4bf9a96e85
|
|
| BLAKE2b-256 |
c5fee33fd2c5c841c794338d87b7b6ff4f4fb7b7c422436997b7054e631043cf
|