Turn ML models into APIs with one command
Project description
mlship
Turn any ML model into a REST API with one command.
mlship serve model.pkl
Deploy your machine learning models locally in seconds - no Docker, no YAML, no configuration files.
Why mlship? Read WHY_MLSHIP.md to see how mlship compares to transformers-serve, vLLM, Ollama, and BentoML.
Features
- ✅ One-command deployment - No configuration needed
- ✅ Multi-framework - sklearn, PyTorch, TensorFlow, HuggingFace (local + Hub)
- ✅ HuggingFace Hub - Serve models directly from Hub without downloading
- ✅ Built-in benchmarking - Measure latency and throughput with
mlship benchmark - ✅ Auto-generated API - REST API with interactive docs
- ✅ Works offline - Zero internet dependency after installation
- ✅ Fast - Deploy in seconds, predictions in milliseconds
Quick Start
# Install
pip install mlship
# Serve any model
mlship serve model.pkl
Try HuggingFace Hub Models (No Files Needed!)
# Sentiment analysis
mlship serve distilbert-base-uncased-finetuned-sst-2-english --source huggingface
# Test it
curl -X POST http://localhost:8000/predict \
-H "Content-Type: application/json" \
-d '{"features": "This product is amazing!"}'
📖 See QUICKSTART.md for complete hands-on examples with:
- HuggingFace models (sentiment analysis, text generation)
- Local models (sklearn, PyTorch, TensorFlow)
- Training code, curl commands, and expected responses
Supported Frameworks
| Framework | File Format | Example |
|---|---|---|
| scikit-learn | .pkl, .joblib |
mlship serve model.pkl |
| PyTorch | .pt, .pth |
mlship serve model.pt |
| TensorFlow | .h5, .keras, SavedModel |
mlship serve model.h5 |
| HuggingFace (local) | Model directory | mlship serve ./sentiment-model/ |
| HuggingFace (Hub) | Model ID | mlship serve bert-base-uncased --source huggingface |
Note: For custom PyTorch models, use TorchScript format (torch.jit.save()) for best compatibility.
HuggingFace Hub Support
Serve models directly from HuggingFace Hub:
mlship serve gpt2 --source huggingface
mlship serve distilbert-base-uncased-finetuned-sst-2-english --source huggingface
Models are downloaded on first use and cached locally. See QUICKSTART.md for more examples.
API Endpoints
Every model automatically gets:
- POST
/predict- Make predictions - GET
/health- Health check - GET
/info- Model metadata - GET
/docs- Interactive Swagger UI documentation
Examples in QUICKSTART.md.
Advanced Usage
# Custom port
mlship serve model.pkl --port 5000
# Development mode (auto-reload on code changes)
mlship serve model.pkl --reload
# Custom model name
mlship serve model.pkl --name "fraud-detector"
# Custom preprocessing/postprocessing
mlship serve model.pkl --pipeline my_module.MyPipeline
# Benchmark performance
mlship benchmark model.pkl --requests 1000
# Benchmark with custom warmup and port
mlship benchmark model.pkl --requests 500 --warmup 10 --port 9000
# Benchmark with custom payload
mlship benchmark model.pkl --payload '{"features": [5.1, 3.5, 1.4, 0.2]}'
# Benchmark HuggingFace model
mlship benchmark distilbert-base-uncased-finetuned-sst-2-english --source huggingface --requests 50
# Benchmark with JSON output (for CI/CD)
mlship benchmark model.pkl --output json > results.json
Benchmark options:
| Option | Default | Description |
|---|---|---|
--requests N |
100 | Number of benchmark requests |
--warmup N |
5 | Number of warmup requests |
--port PORT |
8000 | Server port |
--payload JSON |
auto | Custom test payload as JSON string |
--source |
local | Model source (local or huggingface) |
--output |
text | Output format (text or json) |
See CONTRIBUTING.md for custom pipeline documentation.
See QUICKSTART.md for detailed benchmarking guide.
Use Cases
For Students & Learners
- Learn model serving without framework-specific tools
- One tool works for entire ML curriculum (sklearn → PyTorch → transformers)
For Data Scientists
- Prototype models locally before production
- Test models with realistic API interactions
- Share models with teammates without cloud setup
For Educators
- Teach framework-agnostic model serving concepts
- Create reproducible examples that work across frameworks
Read WHY_MLSHIP.md for detailed positioning.
Documentation
-
QUICKSTART.md - 🚀 Start here! Complete hands-on guide with:
- HuggingFace Hub examples (sentiment analysis, text generation)
- Local model examples (sklearn, PyTorch, TensorFlow)
- Training code, curl commands, and expected responses
- Perfect for first-time users and students
-
WHY_MLSHIP.md - 🎯 Understanding mlship's unique value
- Comparison with transformers-serve, vLLM, Ollama, BentoML
- Multi-framework advantage explained
- Target audience and use cases
- When to use mlship vs alternatives
-
CONTRIBUTING.md - 🛠️ For contributors
- Development setup and workflow
- Running tests and code style
- Custom pipeline development
- How to submit pull requests
-
ARCHITECTURE.md - 🏗️ Technical deep dive
- Design decisions and philosophy
- Performance optimizations
- Framework detection system
- Internal architecture
Installation
pip install mlship
With specific frameworks:
pip install mlship[sklearn] # scikit-learn
pip install mlship[pytorch] # PyTorch
pip install mlship[tensorflow] # TensorFlow
pip install mlship[huggingface] # HuggingFace
pip install mlship[all] # All frameworks
Contributing
We welcome contributions! See CONTRIBUTING.md for:
- Development setup
- Running tests
- Code style guidelines
- Custom pipeline development
Support
- Issues: GitHub Issues
- Documentation: See docs linked above
- Examples: Check the
examples/directory
License
MIT License - see LICENSE file for details.
What Makes mlship Different?
mlship is the only zero-code tool that supports sklearn, PyTorch, TensorFlow, AND HuggingFace models with a single command. Read WHY_MLSHIP.md for detailed comparison with transformers-serve, vLLM, Ollama, and BentoML.
Quick comparison:
- ✅ Multi-framework (not just one)
- ✅ Zero code required (no Python files)
- ✅ Local-first (no cloud dependency)
- ✅ HuggingFace Hub integration
- ✅ Perfect for learning and prototyping
Roadmap
✅ Implemented:
- ✅ Multi-framework support - sklearn, PyTorch, TensorFlow, HuggingFace
- ✅ HuggingFace Hub integration - Serve models directly from Hub with
--source huggingface - ✅ PyTorch TorchScript support - Full support for custom PyTorch models via TorchScript
- ✅ Built-in benchmarking - Measure latency (p50/p95/p99) and throughput with
mlship benchmark - ✅ Zero-code deployment - One command to serve any model
- ✅ Auto-generated REST API - With interactive Swagger docs
- ✅ Custom pipelines - Preprocessing/postprocessing support
- ✅ Local-first - Works completely offline (after installation)
🔄 Planned:
- 🔄 More HuggingFace tasks - Question answering, translation, summarization, NER (requires flexible input schemas)
- 🔄 PyTorch Hub integration - Serve models directly from PyTorch Hub with
--source pytorch-hub - 🔄 TensorFlow Hub integration - Serve models from TensorFlow Hub with
--source tensorflow-hub - 🔄 XGBoost & LightGBM support - First-class support for gradient boosting frameworks
- 🔄 Model versioning - Support specific model versions (e.g.,
--revision main) - 🔄 GPU support - Automatic GPU detection and utilization
- 🔄 Batch inference - Efficient batch prediction endpoints
- 🔄 Authentication - Optional API key authentication for deployments
Want to contribute? See CONTRIBUTING.md or open an issue with your ideas!
Happy serving! 🚀
Project details
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 mlship-0.2.0.tar.gz.
File metadata
- Download URL: mlship-0.2.0.tar.gz
- Upload date:
- Size: 35.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b69848afa7a23fec485f22e353c0d482cedae3b2bf37129bff4fcf7b41a28ed
|
|
| MD5 |
cb92feb467a1cc514ec64892bd2568fa
|
|
| BLAKE2b-256 |
547d494b33a76caaa6bf08cd93e7efd17aac059a58d63b4b3fe002a9b1f49d56
|
File details
Details for the file mlship-0.2.0-py3-none-any.whl.
File metadata
- Download URL: mlship-0.2.0-py3-none-any.whl
- Upload date:
- Size: 28.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
68b85e40109d9f6eb44e1cdebd6c27bb9dc23bfadb1af80b243d277b2c561e8a
|
|
| MD5 |
e271e327805965677236afb4326eab1f
|
|
| BLAKE2b-256 |
e68bfbeca113ba04f99eb28561b82931a157824f804720f613eb384341ae37fe
|