Modular Components for Machine Learning Pipelines
Provided and maintained by 🦄 UnicoLab
Welcome, fellow alchemist! 🧙♂️ Ready to brew some machine learning magic without getting locked in a cauldron?
MLPotion is your chest of modular, mix-and-match ML building blocks that work across Keras, TensorFlow, and PyTorch. Think of it as LEGO® for ML pipelines, but with fewer foot injuries and more flexibility!
Ever felt trapped by a framework that forces you to do things "their way"? We've been there. That's why we created MLPotion:
- 🎯 Framework Agnostic: Write once, run anywhere (well, on Keras, TensorFlow, or PyTorch).
- 🧱 Modular by Design: Pick the pieces you need, leave the rest in the box.
- 🔬 Type-Safe: Python 3.10+ typing that actually helps you (mypy approved!).
- 🚀 Production Ready: Built for the real world, not just notebooks.
- 🎨 Orchestration Flexible: Works standalone OR with ZenML, Prefect, Airflow - your choice!
- 📦 Install What You Need: Core package works without any ML frameworks (you only install what you need)!
- 🤝 Community-Driven: Missing something? Contribute it back - we love community additions!
- Type-safe protocols for all components
- Framework-agnostic result types
- Consistent error handling
- Zero-dependency core package
- Keras 3.0+ - The friendly one
- TensorFlow 2.15+ - The production workhorse
- PyTorch 2.0+ - The researcher's favorite
- CSV loaders for all frameworks
- Dataset optimization utilities
- Data transformers
- Preprocessing pipelines
- Unified training interface
- Comprehensive evaluation tools
- Rich result objects
- Training history tracking
- Save/load model checkpoints
- Export to production formats
- Model inspection utilities
- Multiple export formats
- ZenML integration built-in
- Extensible to Prefect, Airflow, etc.
- Works standalone (no orchestration needed!)
"A good potion doesn't force you to drink it a certain way. It just... works."
— Ancient ML Alchemist Proverb (we just made that up)
We believe in:
- Flexibility > Convention: Your project, your rules
- Simplicity > Complexity: If it's hard to use, we failed
- Type Safety > Runtime Surprises: Catch errors before they bite
- Modularity > Monoliths: Use what you need, ignore the rest
- Consistency > Chaos: Same patterns across all frameworks
- Community > Corporate: Built by the community, for the community
Install only what you need to keep your environment clean.
Perfect for defining custom implementations or lightweight usage.
poetry add mlpotion# TensorFlow / Keras
poetry add mlpotion -E tensorflow
# PyTorch
poetry add mlpotion -E pytorchCombine your framework with ZenML capabilities.
poetry add mlpotion -E tensorflow -E zenml
# OR
poetry add mlpotion -E pytorch -E zenmlpoetry add mlpotion -E allHere is a simple example of defining a training configuration and running a trainer using Keras components.
from mlpotion.frameworks.keras.training import ModelTrainer
from mlpotion.frameworks.keras.config import ModelTrainingConfig
# 1. Define your configuration 📝
# Strongly typed configs ensure you never miss a parameter
config = ModelTrainingConfig(
epochs=10,
batch_size=32,
optimizer="adam",
loss="sparse_categorical_crossentropy"
)
# 2. Initialize the Trainer 🧪
trainer = ModelTrainer(config=config)
# 3. Run the pipeline 🚀
# (Assuming 'my_model' and datasets are ready)
history = trainer.train(
model=my_model,
train_data=train_ds,
val_data=val_ds
)
print(f"✅ Training complete! Final accuracy: {history.history['accuracy'][-1]:.4f}")ZenML User? Drop this logic directly into a pipeline step:
from mlpotion.integrations.zenml.tensorflow.steps import train_model
| Feature | MLPotion | Framework-Only | All-in-One Solutions |
|---|---|---|---|
| Multi-framework | ✅ Yes | ❌ No | |
| Type Safety | ✅ Full | ||
| Modular Install | ✅ Yes | ❌ No | ❌ No |
| ZenML Native | ✅ Yes | ❌ Manual | |
| Learning Curve | 📈 Gentle | 📈 Framework-specific | 📈 Steep |
| Production Ready | ✅ Yes | ✅ Yes | |
| Flexibility | 🌟🌟🌟🌟🌟 | 🌟🌟🌟🌟🌟 | 🌟🌟 |
You'll love MLPotion if you:
- Switch between frameworks and hate rewriting everything
- Value heavily tested code that you can reuse
- Value type safety and IDE autocomplete (who doesn't?)
- Want production-ready code without enterprise bloat
- Believe ML pipelines should be composable and testable
You might want something else if you:
- Do not like modularity
- Do not like reusability
- Are too lazy to contribute something that you can't already find here
- GitHub: Star, fork, contribute!
- Issues: Report bugs, request features.
- UnicoLab: Enterprise AI solutions.
Ready to brew some ML magic? Let's get started! 🧪✨
Built with ❤️ for the ML community by 🦄 UnicoLab