comparison doc/v2_planning/architecture.txt @ 1115:967975f9c574

added Jobman compatibility to architecture.txt
author James Bergstra <bergstrj@iro.umontreal.ca>
date Tue, 14 Sep 2010 13:41:48 -0400
parents e5306f5626d4
children 5387666d49b4
comparison
equal deleted inserted replaced
1114:de153244c8e5 1115:967975f9c574
1 ==================== 1 ====================
2 Pylearn Architecture 2 Pylearn Architecture
3 ==================== 3 ====================
4 4
5 5
6 Basic Design Approach 6 SE + VM Approach
7 ===================== 7 =================
8 8
9 I propose that the basic design of the library follow the Symbolic Expression 9 One avenue for the basic design of the library is to follow the Symbolic
10 (SE) structure + virtual machine (VM) pattern that worked for Theano. 10 Expression (SE) structure + virtual machine (VM) pattern that worked for Theano.
11 11
12 So the main things for the library to provide would be: 12 The main things for the library to provide would be:
13 13
14 - a few VMs, some of which can run programs in parallel across processors, 14 - a few VMs, some of which can run programs in parallel across processors,
15 hosts, and networks [R6,R8]; 15 hosts, and networks [R6,R8];
16 16
17 - MLA components as either individual Expressions (similar to Ops) or as 17 - MLA components as either individual Expressions (similar to Ops) or as
107 (*) Note that I cheated a bit in my example above: the graph from the 107 (*) Note that I cheated a bit in my example above: the graph from the
108 encapsulated version is not a simple chain, so it is not obvious how to 108 encapsulated version is not a simple chain, so it is not obvious how to
109 convert it into the pipeline given in the linear version. It's still possible 109 convert it into the pipeline given in the linear version. It's still possible
110 though, but this is probably not the place to get into the details. 110 though, but this is probably not the place to get into the details.
111 111
112
113
114 Jobman Compatibility Approach
115 =============================
116
117 One basic approach for the library is to provide a set of components that are
118 compatible with remote execution. The emphasis could be not so much on
119 standardizing the roles and APIs of components, so much as ensuring that they
120 can be glued together and supports parallel execution on one or more CPUs or
121 clusters.
122
123 In this approach we would provide a proxy for asynchronous execution
124 (e.g. "pylearn.call(fn, args, kwargs, backend=default_backend)"), which would
125 come with constraints on what fn, args, and kwargs can be. Specifically, they
126 must be picklable, and there are benefits (e.g. automatic function call caching)
127 associated with their being hashable as well.
128
129
130