Theano/Theano — Issue #131: James InteractiveEnv
Author: nouiz
Created: 2011-10-20 16:56:31+00:00
State: open

This is a place holder for the current information I have on James proposal of InteractiveEnv.

1. you create an InteractiveEnv aka workspace and you choose a storage policy.
2. you create shared variables aka global variables in that workspace.
3. you build graphs and such in that workspace
4. you compile functions in that workspace

The InteractiveEnv would do all computations on the fly, and do
minimal optimizations so it behaves similarly to a procedural python
program. It would behave similarly to when the test_val mode is on in
the new debugger code (which I still haven't really grokked, sorry)

- then -

If you want better performance from repeated calls, then *you take the
entire workspace and optimize the whole thing*. This creates a new
workspace that you might think of as the GPU workspace. You do your
training in there if you like. When you want to save your workspace in
a portable way, clone the trained workspace as an InteractiveEnv and
save that.

Gpu workspaces are not serializable.

The default workspace uses simple data types and it is serialiazable.

I don't think this work pattern is hard to implement. It's just a few
new data structures and methods essentially wrapping all the same
shared varaiables, Ops, modes, function-makers, and stuff that we
already use.