mdda / deep-learning-workshop

Deep Learning Workshop : Including a VirtualBox VM with pre-configured Jupyter, Tensorflow, PyTorch, models and data
MIT License
470 stars 121 forks source link

Deep Learning Workshop

This repo includes all scripts required to build a VirtualBox 'Appliance' (an easy-to-install pre-configured VM) that can be used by Deep Learning Workshop participants.

This workshop consists of an introduction to deep learning (from single layer networks-in-the-browser, then using the VM/Jupyter setup to train networks using both Theano (+Lasagne for model components) and Tensorflow (+some sugar layers). The modules also include pretrained state-of-the-art networks, such as GoogLeNet, in various applications) :

NB : Ensure Conference Workshop announcement / blurb includes VirtualBox warning label

The VM itself includes :

And this repo can itself be run in 'local mode', using scripts in ./local/ to :

Status : Workshop WORKS!

Currently working well

Still Work-in-Progress

Notes

Running the environment locally

See the local/README file.

Also worth investigating : Google Colab, which allows the Free (as in Beer) use of a K40 GPU in a Jupyter-notebook-like interface. In fact, there is also the possibility of pulling up GitHub-based notebooks directly using the url :

https://colab.research.google.com/github/USER/REPO/blob/master/NOTEBOOK

For a concrete example, look at this link to the recent revamped Reptile code from OpenAI that is in the MetaLearning folder of this repo.

Git-friendly iPython Notebooks

Using the code from : http://pascalbugnion.net/blog/ipython-notebooks-and-git.html (and https://gist.github.com/pbugnion/ea2797393033b54674af ), you can enable this kind of feature just on one repository, rather than installing it globally, as follows...

Within the repository, run :

# Set the permissions for execution :
chmod 754 ./bin/ipynb_optional_output_filter.py

git config filter.dropoutput_ipynb.smudge cat
git config filter.dropoutput_ipynb.clean ./bin/ipynb_optional_output_filter.py

this will add suitable entries to ./.git/config.

or, alternatively, create the entries manually by ensuring that your .git/config includes the lines :

[filter "dropoutput_ipynb"]
    smudge = cat
    clean = ./bin/ipynb_output_filter.py

Note also that this repo includes a <REPO>/.gitattributes file containing the following:

*.ipynb    filter=dropoutput_ipynb

Doing this causes git to run ipynb_optional_output_filter.py in the REPO/bin directory, which only uses import json to parse the notebook files (and so can be executed as a plain script).

To disable the output-cleansing feature in a notebook (to disable the cleansing on a per-notebook basis), simply add to its metadata (Edit-Metadata) as a first-level entry (true is the default):

  "git" : { "suppress_outputs" : false },

Git-friendly iPython Notebooks (Looks promising, but...)

nbstripout seems to do what we want, and can be installed more easily.

Within the local python environment (or do this globally, as root, if you're committed) :

pip install nbstripout

Useful resources