Introduction
This proposal is intended for enabling users to visualize MXNet data using the TensorFlow's TensorBoard. We plan to develop a logging tool bundled in MXNet python package for users to log data in the format that the TensorBoard can later render in browsers. The typical flow of using the logging tool is explained in the following figure. Users would need to install MXNet and TensorFlow's TensorBoard to visualize the data. The project will be divided into two phases:
1. Synchronized logger. This is straightforward implementation in Python. The downside is that logging NDArrays is blocking in the main Python thread as it internally call asnumpy() to convert NDArrays to numpy.ndarrays for logging.
2. Asynchronized logger. This implementation requires much more engineering work in C++ and still have many unresolved difficulties to be discussed.
We will focus our efforts in the first phase and explore further the possibility of impelmemnting an asynchronized logger.
Synchronized Logger
This work will be based upon the contributions from the following three GitHub repositories to whose authors we should give credits.
/tensorboard_logger. The author of this repo implemented the encrypting algorithm for logging data in event files loaded by the TensorBoard for rendering. This is the key that enable us to develop a logger independent of TensorFlow.
/tensorboard. Zihao Zheng is the primary author of this repo and also a DMLC member. The idea of making a simple logging tool comes from our multiple discussions with him. He carved out from TensorFlow necessary protobuf definitions and designed low level logging interfaces for building a standalone logging and rendering tool.
/tensorboard-pytorch. The author of this repo adopted the idea from dmlc/tensorboard and implemented a standalone logging tool for Pytorch users. Our synchronized logger will be implemented based upon the basic design of this tool.