The final project of Deep Learning 2021 course at Skoltech, Russia.
❗ Attention ❗ We kindly ask the evaluating committee to consider the PRESENTATION.pdf
and REPORT.pdf
from there, rather than Canvas. They were significantly improved the night after the deadline and is very different from the version sent to the Canvas.
Team members:
- Ilya Kuk
- Razan Dibo
- Mohammed Deifallah
- Sergei Gostilovich
- Alexey Larionov
- Stanislav Krikunov
- Alexander Blagodarnyi
Inspired by the papers:
- Advancing theoretical understanding and practical performance of signal processing for nonlinear optical communications through machine learning.
- Fundamentals of Coherent Optical Fiber Communications
train.py
- entry point for training of models (see Reproduce training and inference section)notebooks/training.ipynb
- a quickstart Jupyter notebook for training or loading from a checkpointconfigs/
- YAML files that define each experiment's parametersdata/
- definitions of datasets (either preloaded or generated)materials/
- supplementary materials like reports, plotsmodels/
- definitions of models and their training process (optimizers, learning rate schedulers)auxiliary/
- supporting files with utility functions- 👉
PRESENTATION.pdf
- final presentation - 👉
REPORT.pdf
- project final report - 👉
VIDEO_PRESENTATION.txt
- link to video with project presentation
A GPU is recommended to perform the experiments. You can use Google
Colab with Jupyter notebooks provided in
notebooks/
folder
Main prerequisites are:
pytorch
for models trainingpytorch-lightning
withLightningCLI
for CLI tools and low-boilerplate models trainingnumpy
for data generation
Optional:
google-colab
- if you want to mount a Google Drive to your Jupyter Notebook to store training artifactsgdown
- if you want to download checkpoints from Google Drive by IDtensorboard
- if you want to view training/validation metrics of different experimentstorchvision
- only if you want to debug the workflow with a trivial MNIST classifier example
The easiest way to start training of one of experiments listed in configs/
, is to run
python train.py --config configs/your_chosen_experiment.yaml
After that you'll find new folders downloads/
with external downloaded files (like datasets) and logs/
which will contain folders for each distinct experiment. Under each such experiment folder you'll find results of all the runs of this very same experiment, namely folders like version_0/
, version_1/
, etc, which would finally contain:
config.yaml
with the parameters of the experiment for reproducibility (same parameters as inyour_chosen_experiment.yaml
)events.out.tfevents...
file with logs of TensorBoard, ready to be visualized in itcheckpoints/
directory with the best epoch checkpoint and the lastest epoch ckeckpoint (you can use those to resume training from them, or load them for inference)
A better approach to start training (or resuming or loading for inference), would be to use notebooks/training.ipynb
Jupyter Notebook. In the first section you can set the parameters of further work. Other sections don't usually need any adjustments. After you "Run All" the notebook, either a training will start (a new one, or resumed), or only the model weights will be loaded (if you've chosen to 'load_model'
, see the notebook).
Anyway after the notebook has been run completely, you should be given model
variable of type pytorch_lightning.LightningModule
. You can do inference with it suing model.forward(x)
.