This repository provides a Docker-based environment as a submission for the Lightning-Fast Modulation Classification with Hardware-Efficient Neural Networks problem statement of the ITU AI/ML in 5G Challenge. The sandbox environment includes PyTorch and Brevitas and serves Jupyter notebooks that include definition, training, pruning, and evaluation of our quantized CNN model.
The sandbox was tested on Ubuntu, but the containerized setup should work on most platforms.
- Install Docker Engine
- Convenient install script: get.docker.com
- Full installation instructions: docs.docker.com/engine/install/
- To use docker without
sudo
you should follow these instructions to add your user to thedocker group
- Optional steps to enable GPU-accelerated training (recommended)
- Install current NVIDIA driver
- Install NVIDIA Container Toolkit, see instructions here: github.com/NVIDIA/nvidia-docker
- Clone this repository
- Set optional environment variables
DATASET_DIR
: This directory will be mounted inside the container at "/workspace/dataset", download instructions can be found inside the Jupyter notebookDOCKER_GPUS
: Select GPUs which will be accessible from within the container, for exampleall
ordevice=0
JUPYTER_PORT
: Override default port (8888)NETRON_PORT
: Override default port (8081)JUPYTER_PASSWD_HASH
: Override default password ("radioml")LOCALHOST_URL
: Set the IP/URL of the machine if you don't access it vialocalhost
- Run
./run_docker.sh
insidesandbox/
to launch the Jupyter notebook server- Alternatively for experimenting: Run
./run_docker.sh bash
to launch an interactive shell
- Alternatively for experimenting: Run
- Connect to
http://HOSTNAME:JUPYTER_PORT
from a browser and login with password "radioml"
- Run
./run_docker.sh
insidesandbox/
to launch the Jupyter notebook server. - Connect to
http://HOSTNAME:JUPYTER_PORT
from a browser and login with password "radioml". - Run
./sandbox/notebooks/evaluation_only.ipynb
with pre-trained modelIlliNet_trained.pth
for evaluation.
- Run
./run_docker.sh
insidesandbox/
to launch the Jupyter notebook server. - Connect to
http://HOSTNAME:JUPYTER_PORT
from a browser and login with password "radioml". - Run
./sandbox/notebooks/training_and_evaluation.ipynb
with a proper number of epochs for general training. - Run
./sandbox/notebooks/training_and_pruning.ipynb
with a proper number of epochs for pruning.
Connect with the challenge organizers and other participants on GitHub discussion. For questions related to quantization-aware training with Brevitas, there is also a separate Gitter channel: