Before training a GS model, a few things need to be defined. Mainly, the dataset location (on the remote server) and the hyperparameters for the training/model. We need a window to allow editing of the parameters and dataset loading.
The window(s) should allow this process to work
- Set up Dataset (tell backend where to load dataset from remote storage), then a button to actually load the data.
- Choose training hyperparameters
- Button to initialize trainer/model
- Buttons to play/pause/stop training.
Requirements
Dataset loading
- In the backend, the dataset can be loaded with only a few parameters hosted within a
Settings
object (see /src/backend/settings
). Part of the setup for the dataset will require the user picking the following in the frontend:
-- a path to the dataset to load settings.dataset_path
(string value)
-- a settings.resolution_scale
(whether the images are downsized for faster training) (float value, 0.0-1.0)
-- white_background
for if the images use a white background or not (boolean)
- When the "load dataset" button is clicked, it should trigger the AppController/AppCommunicator to send a message to the backend with the dataset information/settings required for the data to be loaded (#5).
Trainer/model setup
- The trainer has many hyperparameters of different type. Please see the
Settings
object, starting from iterations
down to random_background
. Each hyperparameter should be adjustable from the trainer setup window
- Clicking initialize model button should transmit the parameters to the backend, at which point the backend will initialize a trainer and model for training (#6).
- Trainer/model setup will REQUIRE that a dataset is already loaded.
Start training
- Buttons for start/stop/pause/etc should transmit to the backend the intent. Separate issue for handling the communication on backend (#7 ).
Extra
Dataset loading
With extra communication, the frontend could navigate the folders on the backend easier than typing in a direct path. Some way to show the remote folder structure would help users.
Button clicking
It would help if the buttons could only be pressed when the prerequisites are met. For instance, for the trainer/model initialization, the dataset must already exist because the trainer needs the dataset. For training start, it should only be clickable once the dataset+model+trainer are initialized. To pause training, the model must be currently training.
Adjusting settings during training
Sometimes it would be nice to adjust the hyperparameters during training. If the user changes a learning rate or number of iterations, a message should be sent to the backend to update those settings again and continue training. Pausing training is not necessary (but may be wise!).