Blog
2017.12.20
We have released ChainerUI, a training visualizer and manager for Chainer
Tag
Kei Akita
Engineer
We have released ChainerUI, to help visualize training results and manage training jobs.
Among Chainer users, there are demands to watch the progress of training jobs or to compare jobs by plotting the training loss, accuracy, and other logs of multiple runs. These tasks tend to be intricate because there were no suitable applications available. ChainerUI offers functions listed below in order to support your DNN training routine.
- Visualizing training logs: plot values like loss and accuracy
- Managing histories of training jobs with experimental conditions
- Operating the training jobs: take a snapshot, modify hyper parameter like within training
ChainerUI consists of a web application and an extension module of Trainer in Chainer, which enables easy training. If you have already used the LogReport extension, you can watch training logs on web browser without any change. If you add other extensions of ChainerUI, more experimental conditions will be displayed on the table and the training job can be managed from ChainerUI.
Visualizing training logs
ChainerUI monitors training log file and plots values such as loss, accuracy, and so on. Users can choose which variables to plot on the chart.
Managing training jobs
ChainerUI’s web application shows the list of multiple training jobs on the result table with experimental conditions. In addition, you can take actions such as taking snapshot or modifying hyperparameters from the job control panel.
How to use
To install, please use the pip module, and then setup the ChainerUI database.
pip install chainerui chainerui db create chainerui db upgrade
Secondly, register a “project” and run server. The “project” is the repository or the directory that contains chainer based scripts.
chainerui project create -d PROJECT_DIR [-n PROJECT_NAME] chainerui server
You can also call chainerui project create
while the server is running.
Finally, open http://localhost:5000/
on web browser, and you are ready!!
Visualizing training logs
The standard LogReport extension included in Chainer exports “log” file. ChainerUI watches that “log” file and plots a chart automatically. The following code is an example to run MNIST example to show plotting with ChainerUI.
chainerui project create -d path/to/result -n mnist python train_mnist.py -o path/to/result/1
The “…result/1” result is added in “mnist” project. ChainerUI watches the “log” file updated in “path/to/result/1” continuously and plots values written in the file.
Managing training jobs
ChainerUI monitors the “args” file that is located in the same directory with the “log” file, and shows its information on the results table as experimental conditions. The “args” file has key-value pairs in JSON style.
The below sample code shows how to save “args” file using ChainerUI’s utility function.
# [ChainerUI] import chainerui util function from chainerui.utils import save_args def main(): parser.add_argument('--out', '-o', default='result', help='Directory to output the result') args = parser.parse_args() # [ChainerUI] save 'args' to show experimental conditions save_args(args, args.out)
To operate training jobs, set CommandsExtension
in the training script. This extension supports taking a snapshot and changing hyperparameters such as learning rate while running the training job.
# [ChainerUI] import CommandsExtension from chainerui.extensions import CommandsExtension def main(): trainer = training.Trainer(updater, (args.epoch, 'epoch'), out=args.out) # [ChainerUI] enable to send commands from ChainerUI trainer.extend(CommandsExtension())
To see whole code, examples/train_mnist.py.
Background
ChainerUI was mainly developed by Inagaki-san and Kobayashi-san who participated in summer internship at Preferred Networks this year.
During the two months of their internship program, they specified user requirements and implemented a prototype. They have continued to contribute after the internship as part-time workers. They are proud to release their work as “ChainerUI.”
Future plan
ChainerUI is being developed under the Chainer organization. The future plan includes the following functions.
- Output chart as image file
- Add other extensions to operate training script, etc.
We are also hiring front-end engineers to work on such! We are looking forward to receiving your applications.
Tag