Mercurial > pylearn
comparison doc/v2_planning/plugin_greenlet.py @ 1200:acfd5e747a75
v2planning - a few changes to plugin proposals
author | James Bergstra <bergstrj@iro.umontreal.ca> |
---|---|
date | Mon, 20 Sep 2010 11:28:23 -0400 |
parents | a60b3472c4ba |
children |
comparison
equal
deleted
inserted
replaced
1199:98954d8cb92d | 1200:acfd5e747a75 |
---|---|
1 """plugin_greenlet - draft of library architecture using greenlets""" | 1 """plugin_greenlet - draft of library architecture using greenlets |
2 | 2 |
3 | 3 HISTORICAL - NOT ACTUALLY A PROPOSAL |
4 """ | 4 ==================================== |
5 | 5 |
6 - PICKLABLE - algorithms are serializable at all points during execution | 6 This was the original approach for what I renamed to plugin_JB, until I realized that I could |
7 | 7 get the end result without using greenlets at all. |
8 - ITERATOR walks through algorithms with fine granularity | 8 |
9 | 9 Still, greenlets seem like they could be neat and making this program stretched my mind so I |
10 - COMPONENTS - library provides components on which programs operate | 10 keep it. There's something wrong when you run with the kfold validation, but until that point |
11 | 11 I think it works. |
12 - ALGORITHMS - library provides algorithms in clean (no hooks) form | |
13 | |
14 - HOOKS - user can insert print / debug logic with search/replace type calls | |
15 e.g. prog.find(CALL(cd1_update)).replace_with(SEQ([CALL(cd1_update), CALL(debugfn)])) | |
16 | |
17 - PRINTING - user can print the 'program code' of an algorithm built from library pieces | |
18 | |
19 - MODULAR EXPERIMENTS - an experiment object with one (or more?) programs and all of the objects referred to by | |
20 those programs. It is the preferred type of object to be serialized. The main components of | |
21 the algorithms should be top-level attributes of the package. This object can be serialized | |
22 and loaded in another process to implement job migration. | |
23 | |
24 - OPTIMIZATION - program can be optimized automatically | |
25 e.g. BUFFER(N, CALL(dataset.next)) can be replaced if dataset.next implements the right | |
26 attribute/protocol for 'bufferable' or something. | |
27 | |
28 e.g. SEQ([a,b,c,d]) can be compiled with Theano if sub-sequence is compatible | |
29 | |
30 - don't need greenlets to get efficiency, the implementations of control flow ops can manage a | |
31 stack or stack tree in the vm (like greenlets do I think) we don't really need | |
32 greenlets/stackless I don't think | |
33 | 12 |
34 """ | 13 """ |
35 | 14 |
36 __license__ = None | 15 __license__ = None |
37 __copyright__ = None | 16 __copyright__ = None |