Open MLOps - A Production-focused Open-Source Machine Learning Framework

Overview

Open MLOps - A Production-focused Open-Source Machine Learning Framework

Open MLOps is a set of open-source tools carefully chosen to ease user experience of conducting machine learning experiments and deploying machine learning models. Read our announcement blog post with more background here.

We also provide a step by step set-up guide and some other getting started tutorials.

In this repository, we provide these applications as Terraform modules with which the user will be able to install them into a Kubernetes cluster. The tools we provide are the following:

  • Prefect for data flow automation
  • Jupyter Hub for experimenting lab
  • Dask for distributed computing
  • Feast for Feature Store and Serving
  • MLFlow for model registry and experiment tracking
  • Seldon for model deployment

Architecture diagram

Other repositories

Repositories diagram

Modules

Jupyter Hub

With the Jupyter Hub, we enabled a multi-user environment in which each of them can spawn a Jupyter server to do their experiments. Users can work on different environments being able to install any library necessary to meet their needs.

We provide a default Jupyter server image that comes with most of the data science packages installed. Users can use their own Jupyter server images as well.

Configuration

Below we provide a lists of the configurable parameters available and their default values.

Parameter (* required parameter) Description Default
jupyterhub_namespace Namespace to install jupyterhb jhub

Proxy configuration

The proxy receives the requests from the client’s browser and forwards all requests to the Hub. In the JupyterHub docs you can find a more in-depth explanation.

* Required parameters

Parameter Description Default
jhub_proxy_https_enabled Indicator to set whether HTTPS should be enabled or not on the proxy false
jhub_proxy_https_hosts You domains in list form. Required for automatic HTTPS []
jhub_proxy_secret_token * A 32-byte cryptographically secure randomly generated string used to secure communications between the hub and the configurable-http-proxy (for example, generated by openssl rand -hex 32) nil
jhub_proxy_https_letsencrypt_contact_email The contact email to be used for automatically provisioned HTTPS certificates by Let’s Encrypt ""

Authentication configuration

JupyterHub’s OAuthenticator has support for enabling your users to authenticate via a third-party OAuth2 identity provider such as GitHub.

You can configure authentication using GitHub accounts and restrict what users are authorized based on membership in a GitHub organization.

See details on how to set up a GitHub Oauth here.

If you choose not to use GitHub to authenticate users, the DummyAuthenticator will be used as default. The Dummy Authenticator lets any user log in with the given password.

The dummy password is: a-shared-secret-password.

* Required parameters ** Required when oauth_github_enable is enabled

Parameter Description Default
oauth_github_enable Defines whether the authentication will be handled by github oauth. Required when oauth_github_enable is enabled false
oauth_github_client_id ** Github client id used on GitHubOAuthenticator. ""
oauth_github_client_secret ** Github secret used to authenticate with github. ""
oauth_github_admin_users List of github user names to allow as administrator []
oauth_github_callback_url The URL that people are redirected to after they authorize your GitHub App to act on their behalf ""
oauth_github_allowed_organizations List of Github organization to restrict access to the members [""]

User configuration

Single user configuration refers to the default settings for each user logged in the JupyterHub.

A user can choose a Docker image to spawn a new Jupyter server. Each Docker image can have different libraries and environments installed. We use the singleuser_profile_list parameter to set up a list of default images available to the user. This parameter receives a list of maps that describes the image details such as the image location and description.

See an example:

[{
  display_name = "Prefect"
  description  = "Notebook with prefect installed"
  default      = true
  kubespawner_override = {
    image = "drtools/prefect:notebook-prefect"
  }
}]

You must pass the image pull secret if you provide an image located in a private container registry. The image pull secret parameter is defined as below:

default = [{
    name = ""
}]
Parameter Description Default
singleuser_profile_list List of images which the user can select to spawn a server
singleuser_image_pull_secrets List of image secrets nil
singleuser_image_pull_policy Image pull policy Always
singleuser_memory_guarantee How much memory will be guarateed to the user 1G
singleuser_storage_capacity How much storage capacity a user will have 1G
singleuser_storage_mount_path Storage mount path /home/jovyan/persistent

Prefect

...

Parameter Description Default
namespace Namespace name to deploy the application `prefect
prefect_version_tag Configures the default tag for prefect images latest

Agent

According to Prefect docs, Agents are lightweight processes for orchestrating flow runs. Agents run inside a user's architecture, and are responsible for starting and monitoring flow runs. During operation the agent process queries the Prefect API for any scheduled flow runs, and allocates resources for them on their respective deployment platforms.

Parameter Description Default
agent_enabled determines if the Prefect Kubernetes agent is deployed True
agent_prefect_labels Defines what scheduling labels (not K8s labels) should be associated with the agent [""]
agent_image_name Defines the prefect agent image name prefecthq/prefect
agent_image_tag Defines agent image tag "
agent_image_pull_policy Defines the image pull policy Always

Postgresql

Parameter Description Default
postgresql_database Defines the postgresql database name prefect
postgresql_username Defines the username to authenticate with prefect
postgresql_existing_secret Configures which secret should be referenced for access to the database. ""
postgresql_service_port Configures the port that the database should be accessed at 5432
postgresql_external_hostname Defines the address to contact an externally managed postgres database instance at ""
postgresql_use_subchart Determines if a this chart should deploy a user-manager postgres database or use an externally managed postgres instance true
postgresql_persistence_enabled Enables a PVC that stores the database between deployments. If making changes to the database deployment, this PVC will need to be deleted for database changes to take effect. This is especially notable when the authentication password changes on redeploys. false
postgresql_persistence_size Defines the persistence storage size for postgres 8G
postgresql_init_user Defines the initial db username postgres

Dask

...

Parameter Description Default
namespace Namespace name to deploy the application dask
worker_name Dask worker name worker
worker_replicas Default number of workers 3
worker_image_repository Containe image repository daskdev/dask
worker_image_tag Container image tag 2.30.0
worker_image_pull_policy Container image pull policy. IfNotPresent
worker_image_dask_worker_command ask worker command. E.g dask-cuda-worker for GPU worker. dask-worker
worker_image_pull_secret Container image pull secrets [{name: ""}]
worker_environment_variables Environment variables. See values.yaml for example values. [{}]

Feast

...

Parameter Description Default
namespace Namespace name to deploy the application feast
feast_core_enabled Defines whether to install feast core True
feast_online_serving_enabled Defines whether to install feast server True
feast_jupyter_enabled Defines whether to install feast jupyther hub False
feast_jobservice_enabled Defines whether to install feast job service True
feast_posgresql_enabled Defines whether to enable postgresql True
feast_postgresql_password * Postgress password ""
feast_kafka_enabled Defines whether to enable kafka False
feast_redis_enabled Defines whether to enable redis True
feast_redis_use_password Defines whether to enable redis password False
feast_prometheus_enabled Defines whether to install prometheys False
feast_prometheus_statsd_exporter_enabled Defines whether to enable statsd exporter False
feast_grafana_enabled Defines whether to enable grafana True

MLFlow

...

Parameter Description Default
namespace Namespace name to deploy the application mlflow
db_host Database host address ``
db_username Database username mlflow
db_password * Database password ``
database_name Database name mlflow
db_port Database port 5432
default_artifact_root local or remote filepath to store model artifacts. It is mandatory when specifying a database backend store /tmp
image_pull_policy Docker image pull policy IfNotPresent
image_repository Docker image repository drtools/mlflow
image_tag Docker image tag 1.13.1
service_type Kubernetes service type NodePort
docker_registry_server Docker Registry Server ``
docker_auth_key Base64 Enconded combination of {registry_username}:{registry_password}. Can be found in ~/.docker/config.json ``
docker_private_repo Whether the MLFlow's image comes from a private repository or not. If true, docker_registry_server and docker_auth_key will be required false

Note: The variables docker_registry_server and docker_auth_key are optional and should only be used when pulling MLFlow's image from a private repository.

Seldon

Parameter Description Default
namespace Namespace name to deploy the application mlflow
istio_enabled Whether to install istio as ingress controller true
usage_metrics_enabled Whether to enable usage metrics true

Exposing Services

In order to access the services from outside the cluster, we need to expose them. Usually, this is done through Kubernetes Ingress resources. In this project, since we rely on Seldon to expose our prediction endpoints, we use Ambassador API Gateway as our ingress controller. Seldon Core works well with Ambassador, allowing a single ingress to be used to expose ambassador and running machine learning deployments can then be dynamically exposed through seldon-created ambassador configurations.

Ambassador

Ambassador is a Kubernetes-native API Gateway built on the Envoy Proxy. In addition to the classical routing capabilities of an ingress, it can perform sophisticated traffic management functions, such as load balancing, circuit breakers, rate limits, and automatic retries. Also, it has support for independent authentication systems, such as the ORY ecosystem.

Exposing a service in Ambassador

Ambassador is designed around a declarative, self-service management model. The core resource used to support application development teams who need to manage the edge with Ambassador is the Mapping resource. This resource allows us to define custom routing rules to our services. This routing configuration can achieved by applying a custom Kubernetes Resource like the following

# mapping.yaml
---
apiVersion: getambassador.io/v2
kind:  Mapping
metadata:
  name:  httpbin-mapping
spec:
  prefix: /httpbin/
  service: httpbin.httpbin_namespace

By applying this configuration with kubectl apply -f httpbin-mapping.yaml.

Terraform

Since this project uses Terraform to manage resources and, with the current version, it's still not possible to apply custom Kubernetes resource definitions, we need to add this YAML file inside the services annotation. One way to do this is by using Service's Metadata field

resource "kubernetes_service" "httpbin" {
  metadata {
    ...
    annotations = {
      "getambassador.io/config" = <<YAML
---
apiVersion: getambassador.io/v2
kind: Mapping
name: httpbin-mapping
service: httpbin.httpbin_namespace
prefix: /httpbin/
YAML
    }
  }
}

This will produce the same behaviour as applying the custom yaml file described above.

Authentication

Since we're exposing our services in the Internet, we need an Authentication and Authorization system to prevent unwanted users to accessing our services. Ambassador API Gateway can control the access by using an External Authentication Service resource (AuthService). An AuthService is an API that has a verification endpoint, which determines if the user can access this resource (returning 200 or not, 401). In this project, we rely on ORY ecosystem to enable authentication. ORY is an open-source ecosystem of services with clear boundaries that solve authentication and authorization.

Session Lifespan

The session lifespan of authenticated users can be managed through the /ory/kratos/values.yaml file. By default, the session lifespan is 24h, but it is currently set to 30 days.

kratos:
  config:
  ...
    session:
      cookie:
        domain: ${cookie_domain}
      lifespan: 720h

ORY Oathkeeper

ORY Oathkeeper is an Identity and Access Proxy. It functions as a centralized way to manage different Authentication and Authorization methods, and inform the gateway, whether the HTTP request is allowed or not. The Oathkeeper serves perfectly as an Ambassador's External AuthService.

Zero-Trust and Unauthorized Resources

Oathkeeper is rooted in the principle of "never trust, always verify,". This means that if no additional configuration is provided, the Oathkeeper will always block the incoming request. In practice, all endpoints exposed in Ambassador will be blocked by external requests, until further configuration is made.

Access Rules

To configure an access rule to ORY Oathkeeper, the file access-rule-oathkeeper.yaml is used. Example:

Allow all incoming requests

- id: oathkeeper-access-rule
  match:
    url: <{http,https}>://${hostname}/allowed-service/<**>
    methods:
      - GET
  authenticators:
    - handler: anonymous
  authorizer:
    handler: allow
  mutators:
    - handler: noop
  credentials_issuer:
    handler: noop

This configuration will register all the incoming requests as a guest user, thus, not performing any credentials validation.

Authorize on KRATOS

- id: httpbin-access-rule
  match:
    url: <{http,https}>://${hostname}/blocked-service/<**>
    methods:
      - GET
  authenticators:
    - handler: cookie_session
  authorizer:
    handler: allow
  mutators:
    - handler: id_token
  credentials_issuer:
    handler: noop
  errors:
    - handler: redirect
      config:
        to: http://${hostname}/auth/login

This configuration will force authenticating all incoming requests by checking a cookie_session, which configuration is specified in config-oathkeeper.yaml

Comments
  • Error creating S3 bucket: BucketAlreadyOwnedByYou

    Error creating S3 bucket: BucketAlreadyOwnedByYou

    When I try to follow the instruction at https://github.com/datarevenue-berlin/OpenMLOps/blob/master/tutorials/set-up-open-source-production-mlops-architecture-aws.md

    I got to the step running: terraform apply -var-file=my_vars.tfvars

    But I got: Error creating S3 bucket: BucketAlreadyOwnedByYou: Your previous request to create the named bucket succeeded and you already own it. │ │ with aws_s3_bucket.mlflow_artifact_root, │ on main.tf line 11, in resource "aws_s3_bucket" "mlflow_artifact_root": │ 11: resource "aws_s3_bucket" "mlflow_artifact_root"

    If I delete the S3 bucket and rerun the command, I got: Error loading state: S3 bucket does not exist.

    So maybe it was using that bucket, but then later try to create the bucket again?

    opened by NhatAnh 12
  • Deployment problem

    Deployment problem

    Hello, I have a problem following the steps in the tutorial, during the first terraform apply in the creation of the resource : module.mlops-architecture-eks.helm_release.autoscaler I always get the following error:

    │ Error: Post "http://localhost/api/v1/namespaces/kube-system/configmaps": dial tcp 127.0.0.1.1:80: connect: connection refused. │ │ with module.mlops-architecture-eks.module.eks.kubernetes_config_map.aws_auth[0], │ on .terraform/modules/mlops-architecture-eks.eks/aws_auth.tf line 63, in resource "kubernetes_config_map" "aws_auth": │ 63: resource "kubernetes_config_map" "aws_auth" {. │ ╵

    opened by Pfriasf 6
  • Unsupported Kubernetes Version Error

    Unsupported Kubernetes Version Error

    Hello, and thank you for this great resource. I'm running into an error while going through the architecture set-up tutorial for AWS. I'm able to successfully run everything including "terraform plan -var-file=my_vars.tfvars". I get the following error when I run "terraform apply -var-file=my_vars.tfvars". Let me know if there's any other helpful information I could provide:

    image

    opened by Fadi-Almachraki 4
  • Local minikube tutorial failure

    Local minikube tutorial failure

    I am trying to follow the tutorial Set up your local minikube machine learning architecture for experimenting hands-on with the components of OpenMLOps. Unfortunately, I am not able to follow all the instructions to the end.

    Disclaimer: I am new to Terraform and Kubernetes.

    To begin with, I tried to start minikube in two ways,

    1. with minikube start --kubernetes-version=v1.17.17
    2. and without a specified kubernetes version.

    In case 1., I could not get minikube to start running. Here is the entire output of the command.

    In the latter (without specifying the version), I believe minikube defaults to v1.22.2 as per the output I get from kubectl version. In this case, I am able to get minikube running and start a tunnel as well:

    Status:
            machine: minikube
            pid: 10105
            route: 10.96.0.0/12 -> 192.168.49.2
            minikube: Running
            services: [mlflow]
        errors: 
                    minikube: no errors
                    router: no errors
                    loadbalancer emulator: no errors
    

    All ok until I get to the step terraform apply -var-file=my_vars.tfvars, which outputs the following at the end (the only 3 changes not able to complete):

    module.ambassador[0].helm_release.ambassador[0]: Creating...
    module.dask-jupyterhub.helm_release.dask-jupyterhub: Creating...
    module.prefect-server.helm_release.prefect-server: Creating...
    ╷
    │ Error: failed to install CRD crds/filter.yaml: unable to recognize "": no matches for kind "CustomResourceDefinition" in version "apiextensions.k8s.io/v1beta1"
    │ 
    │   with module.ambassador[0].helm_release.ambassador[0],
    │   on modules/ambassador/main.tf line 1, in resource "helm_release" "ambassador":
    │    1: resource "helm_release" "ambassador" {
    │ 
    ╵
    ╷
    │ Error: failed to install CRD crds/daskclusters.yaml: unable to recognize "": no matches for kind "CustomResourceDefinition" in version "apiextensions.k8s.io/v1beta1"
    │ 
    │   with module.dask-jupyterhub.helm_release.dask-jupyterhub,
    │   on modules/dask-jupyterhub/main.tf line 1, in resource "helm_release" "dask-jupyterhub":
    │    1: resource "helm_release" "dask-jupyterhub" {
    │ 
    ╵
    ╷
    │ Error: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for kind "RoleBinding" in version "rbac.authorization.k8s.io/v1beta1"
    │ 
    │   with module.prefect-server.helm_release.prefect-server,
    │   on modules/prefect-server/main.tf line 1, in resource "helm_release" "prefect-server":
    │    1: resource "helm_release" "prefect-server" {
    │ 
    ╵
    
    

    Why is this happening?

    opened by bgalvao 4
  • How to configure running this framework on local Kubernetes cluster?

    How to configure running this framework on local Kubernetes cluster?

    Thanks for sharing your OpenMLOps framework. I hope to find some guidance to configure this framework to make it work on our local Kubernetes cluster. What modifications need to be done for each component?

    opened by fadishaar84 4
  • MLOPS 349: Seldon storage initializer image and values.yaml

    MLOPS 349: Seldon storage initializer image and values.yaml

    I have moved the set value from main.tf to the values.yaml file and added a different image to the storageInitializer thing, so that we don't have to change it after deploying using kubectl get configmaps -n seldon

    opened by bernardolk 4
  • A few questions after following the setup guide

    A few questions after following the setup guide

    I was following this guide: https://github.com/datarevenue-berlin/OpenMLOps/blob/master/tutorials/set-up-open-source-production-mlops-architecture-aws.md#configuring-the-my_varstfvars-file and have a few questions.

    1. Do I need to set additional_aws_users field in my_vars.tfvars to an empty list if I just have only one user (me)? image

    2. If I am the only user, do I need to fill in oauth2_providers? Or do I just need to make it an empty list? If I need to create a new OAuth application, what should I fill in the Authorization callback URL text box? image

    3. If I set both 2 attributes above to be empty lists and run terraform init, it asks me to enter an S3 bucket name. What should I fill in this? If it's related to the bucket_name field in the my_vars.tfvars file, I've already set it. image

    opened by off99555 3
  • error creating EKS Cluster (eks-mlops): InvalidParameterException: unsupported Kubernetes version

    error creating EKS Cluster (eks-mlops): InvalidParameterException: unsupported Kubernetes version

    I followed steps and I got this error when I do:

    terraform apply -var-file=my_vars.tfvars

    Error: error creating EKS Cluster (eks-mlops): InvalidParameterException: unsupported Kubernetes version

    I dont know what is the problem here and how to debug

    opened by oristides 2
  • OpenMLOps has no license

    OpenMLOps has no license

    OpenMLOps has no license, according to GitHub[1]:

    ...without a license, the default copyright laws apply, meaning that you (Data Revenue) retain all rights to your source code and no one may reproduce, distribute, or create derivative works from your work.

    So no one external to Data Revenue can use this repo.

    opened by KellyJDavis 2
  • Add prefect pull image secret

    Add prefect pull image secret

    This will allow prefect to pull images from private repositories. For this to work with current Prefect version though, we have to set this line image_pull_secrets=["regcred"] into the KubernetesRun flow config init method, because it seems like this Prefect helm chart has quite a few bugs in it.

    opened by bernardolk 1
  • Fix warnings in documentation rst files.

    Fix warnings in documentation rst files.

    Fixes the current warnings in docs/**/*rst files

    • The "inline strong" and "Bullet list" warnings both affect the rendered output.
    • The "Title underline" warning does not affect the rendered output.
    docs/components/ory/technical.rst:23: WARNING: Bullet list ends without a blank line; unexpected unindent.
    docs/components/ory/usage.rst:14: WARNING: Inline strong start-string without end-string.
    docs/components/ory/usage.rst:33: WARNING: Inline strong start-string without end-string.
    docs/components/ory/usage.rst:56: WARNING: Title underline too short.
    
    Identities and Providers
    ~~~~~~~~~~~~~~~~~~~~
    docs/components/ory/usage.rst:56: WARNING: Title underline too short.
    
    Identities and Providers
    ~~~~~~~~~~~~~~~~~~~~
    
    hacktoberfest-accepted 
    opened by spazm 1
  • minikube local installation error

    minikube local installation error

    i am following this tutorial and getting this error in this statement "terraform apply -var-file=my_vars.tfvars"

    https://github.com/datarevenue-berlin/OpenMLOps/blob/master/tutorials/set-up-minikube-cluster.md

    following the versions:

    Terraform v1.0.8
    kubectl server version v1.21.5 and client version v1.21.5, which includes:
        minikube version: v1.23.2
    

    Minikube start --kubernetes-version=v1.21.5 --vm-driver = hyperv

    image

    @sixhobbits @spazm @pedrocwb @timotk

    opened by Charanv09 0
  • Support for Ray

    Support for Ray

    Hi, I was wondering whether there is plan to support Ray for distributed training. I want an ML platform that supports both deep learning and traditional models, and looks like Dask does not have a very support for distributed deep learning. Thanks

    opened by huanvo88 0
  • error creating Kubernetes cluster with AWS tutorial

    error creating Kubernetes cluster with AWS tutorial

    Hi all, I am trying to follow the AWS tutorial on setting OpenMLOps and I am getting the bellow error when I run terraform apply. image

    any help with that? Thanks in advance

    opened by LameesKadhim 1
Releases(0.1.0)
Owner
Data Revenue
Data Revenue
Scikit-learn compatible wrapper of the Random Bits Forest program written by (Wang et al., 2016)

sklearn-compatible Random Bits Forest Scikit-learn compatible wrapper of the Random Bits Forest program written by Wang et al., 2016, available as a b

Tamas Madl 8 Jul 24, 2021
EbookMLCB - ebook Machine Learning cơ bản

Mã nguồn cuốn ebook "Machine Learning cơ bản", Vũ Hữu Tiệp. ebook Machine Learning cơ bản pdf-black_white, pdf-color. Mọi hình thức sao chép, in ấn đề

943 Jan 02, 2023
Scikit learn library models to account for data and concept drift.

liquid_scikit_learn Scikit learn library models to account for data and concept drift. This python library focuses on solving data drift and concept d

7 Nov 18, 2021
虚拟货币(BTC、ETH)炒币量化系统项目。在一版本的基础上加入了趋势判断

🎉 第二版本 🎉 (现货趋势网格) 介绍 在第一版本的基础上 趋势判断,不在固定点位开单,选择更优的开仓点位 优势: 🎉 简单易上手 安全(不用将api_secret告诉他人) 如何启动 修改app目录下的authorization文件

幸福村的码农 250 Jan 07, 2023
A Python library for detecting patterns and anomalies in massive datasets using the Matrix Profile

matrixprofile-ts matrixprofile-ts is a Python 2 and 3 library for evaluating time series data using the Matrix Profile algorithms developed by the Keo

Target 696 Dec 26, 2022
Breast-Cancer-Classification - Using SKLearn breast cancer dataset which contains 569 examples and 32 features classifying has been made with 6 different algorithms

Breast-Cancer-Classification - Using SKLearn breast cancer dataset which contains 569 examples and 32 features classifying has been made with 6 different algorithms

Mert Sezer Ardal 1 Jan 31, 2022
Automated Machine Learning with scikit-learn

auto-sklearn auto-sklearn is an automated machine learning toolkit and a drop-in replacement for a scikit-learn estimator. Find the documentation here

AutoML-Freiburg-Hannover 6.7k Jan 07, 2023
🌲 Implementation of the Robust Random Cut Forest algorithm for anomaly detection on streams

🌲 Implementation of the Robust Random Cut Forest algorithm for anomaly detection on streams

Real-time water systems lab 416 Jan 06, 2023
Combines MLflow with a database (PostgreSQL) and a reverse proxy (NGINX) into a multi-container Docker application

Combines MLflow with a database (PostgreSQL) and a reverse proxy (NGINX) into a multi-container Docker application (with docker-compose).

Philip May 2 Dec 03, 2021
Accelerating model creation and evaluation.

EmeraldML A machine learning library for streamlining the process of (1) cleaning and splitting data, (2) training, optimizing, and testing various mo

Yusuf 0 Dec 06, 2021
TorchDrug is a PyTorch-based machine learning toolbox designed for drug discovery

A powerful and flexible machine learning platform for drug discovery

MilaGraph 1.1k Jan 08, 2023
Pragmatic AI Labs 421 Dec 31, 2022
This repository contains full machine learning pipeline of the Zillow Houses competition on Kaggle platform.

Zillow-Houses This repository contains full machine learning pipeline of the Zillow Houses competition on Kaggle platform. Pipeline is consists of 10

2 Jan 09, 2022
Pandas Machine Learning and Quant Finance Library Collection

Pandas Machine Learning and Quant Finance Library Collection

148 Dec 07, 2022
Create large-scale ML-driven multiscale simulation ensembles to study the interactions

MuMMI RAS v0.1 Released: Nov 16, 2021 MuMMI RAS is the application component of the MuMMI framework developed to create large-scale ML-driven multisca

4 Feb 16, 2022
Graphsignal is a machine learning model monitoring platform.

Graphsignal is a machine learning model monitoring platform. It helps ML engineers, MLOps teams and data scientists to quickly address issues with data and models as well as proactively analyze model

Graphsignal 143 Dec 05, 2022
Flask app to predict daily radiation from the time series of Solcast from Islamabad, Pakistan

Solar-radiation-ISB-MLOps - Flask app to predict daily radiation from the time series of Solcast from Islamabad, Pakistan.

Abid Ali Awan 1 Dec 31, 2021
Open source time series library for Python

PyFlux PyFlux is an open source time series library for Python. The library has a good array of modern time series models, as well as a flexible array

Ross Taylor 2k Jan 02, 2023
PyTorch extensions for high performance and large scale training.

Description FairScale is a PyTorch extension library for high performance and large scale training on one or multiple machines/nodes. This library ext

Facebook Research 2k Dec 28, 2022
cleanlab is the data-centric ML ops package for machine learning with noisy labels.

cleanlab is the data-centric ML ops package for machine learning with noisy labels. cleanlab cleans labels and supports finding, quantifying, and lear

Cleanlab 51 Nov 28, 2022