GithubHelp home page GithubHelp logo

rekcurd / dashboard Goto Github PK

View Code? Open in Web Editor NEW
27.0 5.0 5.0 7.69 MB

Project for managing ML model and deploying ML module. It can deploy the Rekcurd service to Kubernetes cluster.

License: Apache License 2.0

Dockerfile 0.12% Python 46.02% Shell 1.07% JavaScript 0.48% TypeScript 52.13% CSS 0.11% HTML 0.07%
ml kubernetes dashboard grpc drucker rekcurd

dashboard's Introduction

Rekcurd-dashboard

Build Status PyPI version codecov pypi supported versions

Rekcurd dashboard is the project for managing ML model and deploying ML module. Any Rekcurd service is manageable. It can deploy the Rekcurd service to Kubernetes cluster and can control traffic weights which Istio manages.

Parent Project

https://github.com/rekcurd/community

Components

Screen shot

Environment

Installation

From source:

$ git clone --recursive https://github.com/rekcurd/dashboard.git
$ cd dashboard/frontend
$ yarn install && yarn run build && cd ..
$ pip install -e .

From PyPi directly:

$ pip install rekcurd-dashboard

How to use

Check the belows in detail.

Generate settings

You can generate the template of settings.yml file.

$ rekcurd_dashboard template
Boot command
$ rekcurd_dashboard db --settings settings.yml init
$ rekcurd_dashboard db --settings settings.yml migrate
$ rekcurd_dashboard server --settings settings.yml
docker-compose (Deprecated)
# For dev
$ docker-compose -f docker-compose/docker-compose.develop.yaml up
# For prod
$ docker-compose -f docker-compose/docker-compose.production.yaml up
For AWS users

If you run this on AWS (such as EKS), you need to configure aws-cli setting.
Follow the official document.

Rekcurd-dashboard docker container will mount the configuration files,
so the IAM account used by configuration needs to have enough permissions to access to Kubernetes resources on AWS.

# For dev
$ docker-compose -f docker-compose/aws/docker-compose.develop.yaml up
# For prod
$ docker-compose -f docker-compose/aws/docker-compose.production.yaml up

How to use WebUI

See docs in detail.

Test

Unittest

$ python -m unittest test/*/test_*

e2e test

## sudo sh scripts/kube-init.sh
$ sudo sh e2e_test/startup.sh
$ python -m unittest
$ sudo sh e2e_test/cleanup.sh

Kubernetes support

Rekcurd can be run on Kubernetes. See community repository.

dashboard's People

Contributors

keigohtr avatar sugyan avatar syleeeee avatar yuki-mt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

dashboard's Issues

Add BBS

Motivation

Bulletin board will be useful to discuss the performance of ML model.

Goal

  • Implement BBS

Implementation

  • TBD

Add visualization for ML model performance

Motivation

To evaluate the performance of ML model, we need a functionality of evaluate and visualize the ML model.

Goal

  • Implement performance visualization

Implementation

  • TBD

Improve error handling

Motivation

Error handling should be added at right places with clear error messages.

Goal

  • Have reasonable error messages that help debug and unit test

Implementation

  • Add more error handling at predictable places

Boot on Kubernetes

Motivation

Monitor and manage drucker-dashboard by Kubernetes.

Goal

  • Create configuration file to boot on Kubernetes

Implementation

  • Create configuration file to boot on Kubernetes
    • Deployment
    • Service
    • Ingress
    • (Option) Autoscale
    • (Option) https support

Store each evaluation metrics as RDB field

Motivation

Currently, evaluation result is stored as JSON string in result field in EvaluationResult model.
This makes it hard to control data by the metrics such as sorting EvaluationResult by precision.

Goal

Store each evaluation metrics as RDB field to make it easy to control data by the metrics

Implementation

TBD (precison, recall, fvalue can be list, so need to find a good solution to store them)

Add access control

Motivation

To avoid an accidentally uploading/switching/removing model, we need to implement access control.

Goal

  • Implement access control

Implementation

  • TBD

Add custom manifest when deploying

Motivation

In some use-cases, user want to create a custom object such as "custom controller".
We need to add options for this case.

Goal

  • Add text/file field to write yaml.

Implementation

  • feature
  • testing

Edit (patch) application info

Motivation

Add UI to edit application info.

Goal

  • Add UI to edit application info

Implementation

  • Add UI to edit application info

Dumping configuration is too slow when we mount a network storage

Motivation

Dumping configuration is too slow when we mount a network storage.
Currently dashboard dumps files when we run "Sync", "Add Application/Server" and so on...

Goal

  • Add "Dump Application Configurations" button
  • Create batch script to dump configurations

Implementation

  • Add "Dump Application Configurations" button
  • Create batch script to dump configurations
  • Add Unit testing

Use Secret for private git repository

Motivation

For GitHub Enterprise.

Goal

  • Use Secret to store SSH key

Implementation

  • Add useSecret field to models/application table.
  • Allow 1 secret per 1 application.
    • Register the followings.
      • SSH key (id_rsa)
      • private git hostname (config)
      • private git username (config)
      • private git port number (config)
    • Mount Secret to /root/.ssh/.
    • Store id_rsa and config files with mode=600
  • testing

config

Host {{ hostname }}
  User {{ username }}
  Port {{ port number }}
  HostName {{ hostname }}
  IdentityFile /root/.ssh/id_rsa
  StrictHostKeyChecking no

id_rsa

-----BEGIN RSA PRIVATE KEY-----
{{ SSH key }}
-----END RSA PRIVATE KEY-----

Reference

Edit (patch) project info

Motivation

Add UI to edit project info.

Goal

  • Add UI to edit project info

Implementation

  • Add UI to edit project info

Add Kubernetes config editor

Motivation

Currently we need to upload the file of Kubernetes token config file.
To extend UX, we add the functionality of editor for Kubernetes token.

Goal

  • Implement Kubernetes config editor

Implementation

  • TBD

Support to deploy GCP/AWS/Rancher/kubeadm env

Motivation

There are varieties of Kubernetes environment.
We need to support each environment.

Goal

  • Add Select box when deploying new application/service.

Add Select box instead Non Kubernetes/Kubernetes.

Implementation

  • TBD

Test coverage up to 0.95

Motivation

Add unittest.
All pull requests must to cover codes up to 0.95.

Goal

  • Up to 0.95 test coverage

Implementation

  • testing

Add image driven boot option

Motivation

Currently we need to specify a git repository booting a rekcurd service. (GitOps option)
But general usage for Kubernetes is using an image.

Goal

  • Add image driven boot option

Implementation

  • implement
  • testing

Handle parallel request return status

Motivation

Dashboard cannot handle multiple Rest API response statuses.
See here.

Ideally, dashboard must popup all API response status or all failure response status.

Goal

  • Handle parallel request return status

Implementation

  • TBD

Monitor Kubernetes statuses

Motivation

To monitor the status of Kubernetes cluster/pod/etc.., we need a visualization function.

Goal

  • Implement Kubernetes monitoring

Implementation

  • TBD

evaluation data versioning

Motivation

support versioning for evaluation data to save volume usage when applying small change.

Goal

  • support versioning for evaluation

Implementation

  • save whole git data to data server
  • able to show diff

Uploading model sometimes returns errors.

Motivation

When Uploading model by requesting directly to API (not from frontend), sometimes return errors.
The model is actually uploaded, but API returns error response

Log in client:

{"message": "(pymysql.err.OperationalError) (2006, \"MySQL server has gone away (ConnectionResetError(104, 'Connection reset by peer'))\") [SQL: 'SELECT services.service_id AS services_service_id, services.service_name AS services_service_name, services.display_name AS services_display_name, services.application_id AS services_application_id, services.model_id AS services_model_id, services.service_level AS services_service_level, services.register_date AS services_register_date, services.confirm_date AS services_confirm_date, services.update_date AS services_update_date, services.host AS services_host, services.description AS services_description \\nFROM services \\nWHERE services.application_id = %(application_id_1)s \\n LIMIT %(param_1)s'] [parameters: {'application_id_1': 10, 'param_1': 1}] (Background on this error at: http://sqlalche.me/e/e3q8)"}
INFO - {models.py:1736} ERROR - 500:INTERNAL SERVER ERROR

Goal

  • finish uploading model successfully and the API returns the correct response.

Implementation

Fixed ssh directory mount path

Motivation

The dashboard will mount the ssh directory to the container for retrieving the git repository. However, the mount path is fixed to /root/.ssh/ but there are some platforms(e.g. GCP) which /root directory is read-only. The failure of mounting ssh volume will cause the deployment of the services to fail.

Goal

Users should be able to configure the mount path by using frontend and API. I'm also wondering if it's possible to use Kubernetes secret to mount.

Implementation

Please leave your comments if I missed something important.

  • Add ssh related fields to the Kubernetes object
  • Make Kubernetes API be able to create or update a Kubernetes object with specified ssh mount path
  • Use ssh related fields to create or update services in create_or_update_drucker_on_kubernetes
  • Add input textbox on frontend site
  • Testing

Thank you!

allow to add Service without any models in Local mode

Motivation

  • In Local mode, cannot add model when no services are deployed
  • currently, cannot add service when no models are uploaded

So only in local mode, allow to add Service without any models in Local mode

Goal

  • able to add service in Local mode

Implementation

  • in local mode, able to display page to add service with no model uploaded
  • in local mode, not have to select model when adding service
  • in local mode, raise error when uploading model with no service deployed
    • currently, add record to db and return 200 (not save model content anywhere)

Azure support

Motivation

Azure support

Implementation

  • AKS support
  • Azure storage (BLOB?) support
  • testing

Refactoring around authentication frontend

Motivation

Refactoring frontend codes around LDAP authentication.

Goal

  • Fix error handling more generally without exceptional if statement
  • Implement Authentication component which wraps all other components
    to handle authentication

Add storage options for ML models and evaluation data

Motivation

Current architecture requires that nodes must mount cloud storage. This spec is not developer-friendly.
Adding storage option will support developers to use Rekcurd easier.

Goal

  • Get models via APIs.

Implementation

  • Use boto to connect ceph s3 APIs
  • Use boto3 to connect AWS S3 APIs
  • Use google-cloud-storage to connect GCS APIs
  • testing

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.