A Whirlwind Tour of RNNs with Docker (shortcut!)

Note: This video has subtitles - Click the "CC" button to activate.

RNN on Windows 10: Docker

I created an Azure Container Registry (ACR) to store a Docker container image of Cristian Baldi’s Docker-torch-rnn (which uses Justin Johnson’s “torch-rnn” project, a refactoring of Andrej Karpathy’s “char-rnn.”) An ACR allows for the use of open-source Docker command line interface (CLI) tools, and keeps container images near deployments to reduce latency and costs.

Step 0) Prerequisites

Step 1) Start Docker

Start Docker by clicking the Whale icon. Bash on Ubuntu on Windows is preferred for typing Docker commands. If your Docker commands don’t work in Bash, try restarting your computer, or using Windows PowerShell.

Note: Make sure the white whale in your task bar is set for using Linux. If you right click it and it says “Switch to Windows containers,” leave it alone; you are good to go.

Docker must be running with "Expose daemon on tcp://localhost:2375 without TLS" enabled. (Right click on the system tray icon then "Settings..."). This is not checked by default, so you must check it.

Step 2) Run Image

 docker -v

Writing “docker -v” as your first command will ensure your Docker commands are working by showing you which version and build of Docker your machine is running.

 docker run hello-world

To connect a docker client to Docker for Windows, keep in mind that Docker for Windows runs a Linux Hyper-V VM where it starts the daemon. Try running "docker run hello-world" so that the Docker client connects to the docker daemon. This "export" step is optional:

 export DOCKER_HOST=tcp://127.0.0.1:2375 

To pull or run Sarah’s pre-trained Docker snapshot to avoid waiting for hours, type:

 docker run -it saelia/rnn-js /bin/bash

Adding ./bin/bash to the end will give you a bash terminal to work in. You shouldn't need to type "docker pull" before you do "docker run" because if the image isn't there, docker will pull the image for you in the "docker run" step.

To show all docker containers - sudo docker ps -a
To start docker container - sudo docker start <container-name>
To attach to docker container - sudo docker attach <container-name>

Step 3) Sample Text

The way to actually make the RNN generate new text is with the data sampling script[1]:

 th sample.lua -gpu -1 -checkpoint cv/checkpoint_12900.t7 -length 150 -temperature .7

Figure 1: "The mind the same hath so much but promise the brother." - Catesby, William Fakespeare

Sample Flags

GPU: Setting the flag gpu to -1 tells the code to train using CPU; otherwise it defaults to GPU 0.
Length: An important flag is -length. 100 would generate a body of text 100 characters in length. The default is 2000.
Temperature: An important parameter you may want to play with is -temperature, which takes a number in range (0 to 1, 0 not included), default = 1. Lower temperature will cause the model to make more “likely” but more boring and conservative predictions. Higher temperatures cause the model to take more chances and increase diversity of results, but at a cost of more mistakes.
[1] sample.lua

Shutting Down

How to turn off Docker: Type “exit”, Close PowerShell. Right click the white whale in your task bar. Sign out / quit Docker.