MLFlow Interoperability Layers for MLOps.NET
Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like MLFlow is one of, if not the most popular MLOps management system/platform. MLOps.NET was originally created to fill MLFLow lack of support for ML.NET models. MLFlow and its infrastructure have a lot to offer. To improve the extensibility and interoperability of MLOps.NET within the MLFlow ecosystem, build an interoperability layer that uses MLOps.NET as the backend for MLOps lifecycle.
Describe alternatives you've considered
N/A
Additional context Add any other context or screenshots about the feature request here.
To-Do:
- [x] Research interfaces
- [ ] Create spec
- [ ] Build out POC
Goal
Enable users to track ML experiments, runs, artifacts, and models using MLFlow.
Interfaces
Some ways to interact with MLFlow from .NET are:
- REST API
- CLI
REST API
REST API provides good support for the following:
- Experiments
- Runs
- Metrics
- Parameters
- Register Models
- Model Versions
Missing:
- Artifacts
CLI
CLI provides good support for the following:
- Experiments
- Runs
- Metrics
- Parameters
- Register Models
- Model Versions
- Artifacts
Implementation
REST API
Strengths
- All interactions done via HTTP
- No need to consider platform differences (MacOS, Windows, Linux)
- Existing client (MLFlow.NET)
- No need to parse / manipulate STDOUT. Responses are in JSON format.
Weaknesses
- Can't log artifacts with REST API
- MLFLow.NET needs to be extended to support model registration
CLI
Strengths
- Supports all main functions for tracking and model registry.
Weaknesses
- Need to parse STDOUT. Responses are in JSON format.
- When running CLI commands from .NET code, you need to consider the user's platform.