PaulCCCCCCH/Robustar_implementation

Robustar v0.3 Main Features

Opened this issue · 0 comments

See design doc here

The most important features we want to support in v0.3 are:

  • Switching between different models
  • Upload and validate custom models

For this, we will have to implement and make use of the following APIs.

@route(GET, "/model/current")
def GetCurrModel():
    """ Get the model that is currently active """
	""" return data
	{
		id: string,
		name: string,
		details: string,
	}
	"""
	
@route(POST, "/model/current/<id>")
def SetCurrModel(id: string):
  	""" return 200 on success """

@route(DELETE, "/model/<id>")
def DeleteModel():
	""" return data
	{
		id: string,
		name: string,
		details: string,
	}
	"""

@route(POST, "/model")
def UploadModel():
    """ Should also accept (optionally) a model weight file as argument """
    """ After training a model, should do the same"""
  	""" return data
  		{
  			id: string,
  			name: string,
  			details: string,
  		}
  	
  	"""
    
@route(GET, "/model/list")
def GetAllModels():
  	""" return data
  	[
  		{
  			id: string,
  			name: string,
  			details: string,
  		},
  		...
  	]
  	"""

To implement these APIs, we need to make the following changes in the backend:

  • Extend RModelWrapper for dynamic model loading
  • Redesign database schema
  • Model upload and validation

Frontend tasks include:

  • Allow user to upload a model and see validation result
  • See a list of models, view their details and delete any of them
  • Select a model and use it as the current model

We will break down the feature into the tasks below:

  • Extending RModelWrapper (#176)
  • Model Upload & Validation (#177)
  • Database Redesign (#178)
  • Frontend Design & Implementation (#179)