Awesome Software Engineering for Machine Learning
Software Engineering for Machine Learning are techniques and guidelines
for building ML applications that do not concern the core ML problem β
e.g.Β the development of new algorithms β but rather the surrounding
activities like data ingestion, coding, testing, versioning, deployment,
quality control, and team collaboration. Good software engineering
practices enhance development, deployment and maintenance of production
level applications using machine learning components.
β Must-read
π Scientific publication
Based on this literature, we compiled a survey on the adoption of software
engineering practices for applications with machine learning components.
Feel free to
take and share the survey and
to read more!
Contents
Broad Overviews
These resources cover all aspects. -
AI Engineering: 11 Foundational Practices
β -
Best Practices for Machine Learning Applications
-
Engineering Best Practices for Machine Learning
β -
Hidden Technical Debt in Machine Learning Systems
πβ -
Rules of Machine Learning: Best Practices for ML Engineering
β -
Software Engineering for Machine Learning: A Case Study
πβ
Data Management
How to manage the data sets you use in machine learning.
Model Training
How to organize your model training experiments.
Deployment and Operation
How to deploy and operate your models in a production environment.
Social Aspects
How to organize teams and projects to ensure effective collaboration and
accountability.
Governance
Tooling can make your life easier.
We only share open source tools, or commercial platforms that offer
substantial free packages for research.
-
Airflow - Programmatically
author, schedule and monitor workflows.
-
Alibi Detect -
Python library focused on outlier, adversarial and drift detection.
-
Archai - Neural
architecture search.
-
Data Version Control (DVC) - DVC is a
data and ML experiments management tool.
-
Facets Overview / Facets Dive
- Robust visualizations to aid in understanding machine learning
datasets.
-
FairLearn - A toolkit to
assess and improve the fairness of machine learning models.
-
Git Large File System (LFS) -
Replaces large files such as datasets with text pointers inside Git.
-
Great Expectations
- Data validation and testing with integration in pipelines.
-
HParams - A
thoughtful approach to configuration management for machine learning
projects.
-
Kubeflow - A platform for data
scientists who want to build and experiment with ML pipelines.
-
Label Studio -
A multi-type data labeling and annotation tool with standardized output
format.
-
LiFT - Linkedin fairness
toolkit.
-
MLFlow - Manage the ML lifecycle,
including experimentation, deployment, and a central model registry.
-
Model Card Toolkit
- Streamlines and automates the generation of model cards; for model
documentation.
-
Neptune.ai - Experiment tracking tool
bringing organization and collaboration to data science projects.
-
Neuraxle -
Sklearn-like framework for hyperparameter tuning and AutoML in deep
learning projects.
-
OpenML - An inclusive movement to
build an open, organized, online ecosystem for machine learning.
-
PyTorch Lightning
- The lightweight PyTorch wrapper for high-performance AI research.
Scale your models, not the boilerplate.
-
Robustness Metrics
- Lightweight modules to evaluate the robustness of classification
models.
-
Seldon Core - An
MLOps framework to package, deploy, monitor and manage thousands of
production machine learning models on Kubernetes.
-
Spark Machine Learning -
Sparkβs ML library consisting of common learning algorithms and
utilities.
-
TensorBoard -
TensorFlowβs Visualization Toolkit.
-
Tensorflow Extended (TFX)
- An end-to-end platform for deploying production ML pipelines.
-
Tensorflow Data Validation (TFDV)
- Library for exploring and validating machine learning data. Similar to
Great Expectations, but for Tensorflow data.
-
Weights & Biases - Experiment
tracking, model optimization, and dataset versioning.
Contribute
Contributions welcomed! Read the
contribution guidelines first