alberta-framework 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,196 @@
1
+ """Alberta Framework: Implementation of the Alberta Plan for AI Research.
2
+
3
+ This framework implements Step 1 of the Alberta Plan: continual supervised
4
+ learning with meta-learned step-sizes.
5
+
6
+ Core Philosophy: Temporal uniformity - every component updates at every time step.
7
+
8
+ Quick Start:
9
+ >>> import jax.random as jr
10
+ >>> from alberta_framework import LinearLearner, IDBD, RandomWalkStream, run_learning_loop
11
+ >>>
12
+ >>> # Create a non-stationary stream
13
+ >>> stream = RandomWalkStream(feature_dim=10, drift_rate=0.001)
14
+ >>>
15
+ >>> # Create a learner with adaptive step-sizes
16
+ >>> learner = LinearLearner(optimizer=IDBD())
17
+ >>>
18
+ >>> # Run learning loop with scan
19
+ >>> key = jr.key(42)
20
+ >>> state, metrics = run_learning_loop(learner, stream, num_steps=10000, key=key)
21
+
22
+ Reference: The Alberta Plan for AI Research (Sutton et al.)
23
+ """
24
+
25
+ __version__ = "0.1.0"
26
+
27
+ # Core types
28
+ # Learners
29
+ from alberta_framework.core.learners import (
30
+ LinearLearner,
31
+ NormalizedLearnerState,
32
+ NormalizedLinearLearner,
33
+ UpdateResult,
34
+ metrics_to_dicts,
35
+ run_learning_loop,
36
+ run_normalized_learning_loop,
37
+ )
38
+
39
+ # Normalizers
40
+ from alberta_framework.core.normalizers import (
41
+ NormalizerState,
42
+ OnlineNormalizer,
43
+ create_normalizer_state,
44
+ )
45
+
46
+ # Optimizers
47
+ from alberta_framework.core.optimizers import IDBD, LMS, Autostep, Optimizer
48
+ from alberta_framework.core.types import (
49
+ AutostepState,
50
+ IDBDState,
51
+ LearnerState,
52
+ LMSState,
53
+ Observation,
54
+ Prediction,
55
+ StepSizeHistory,
56
+ StepSizeTrackingConfig,
57
+ Target,
58
+ TimeStep,
59
+ )
60
+
61
+ # Streams - base
62
+ from alberta_framework.streams.base import ScanStream
63
+
64
+ # Streams - synthetic
65
+ from alberta_framework.streams.synthetic import (
66
+ AbruptChangeState,
67
+ AbruptChangeStream,
68
+ AbruptChangeTarget,
69
+ CyclicState,
70
+ CyclicStream,
71
+ CyclicTarget,
72
+ DynamicScaleShiftState,
73
+ DynamicScaleShiftStream,
74
+ PeriodicChangeState,
75
+ PeriodicChangeStream,
76
+ PeriodicChangeTarget,
77
+ RandomWalkState,
78
+ RandomWalkStream,
79
+ RandomWalkTarget,
80
+ ScaleDriftState,
81
+ ScaleDriftStream,
82
+ ScaledStreamState,
83
+ ScaledStreamWrapper,
84
+ SuttonExperiment1State,
85
+ SuttonExperiment1Stream,
86
+ make_scale_range,
87
+ )
88
+
89
+ # Utilities
90
+ from alberta_framework.utils.metrics import (
91
+ compare_learners,
92
+ compute_cumulative_error,
93
+ compute_running_mean,
94
+ compute_tracking_error,
95
+ extract_metric,
96
+ )
97
+ from alberta_framework.utils.timing import Timer, format_duration
98
+
99
+ # Gymnasium streams (optional)
100
+ try:
101
+ from alberta_framework.streams.gymnasium import (
102
+ GymnasiumStream,
103
+ PredictionMode,
104
+ TDStream,
105
+ collect_trajectory,
106
+ learn_from_trajectory,
107
+ learn_from_trajectory_normalized,
108
+ make_epsilon_greedy_policy,
109
+ make_gymnasium_stream,
110
+ make_random_policy,
111
+ )
112
+
113
+ _gymnasium_available = True
114
+ except ImportError:
115
+ _gymnasium_available = False
116
+
117
+ __all__ = [
118
+ # Version
119
+ "__version__",
120
+ # Types
121
+ "AutostepState",
122
+ "IDBDState",
123
+ "LMSState",
124
+ "LearnerState",
125
+ "NormalizerState",
126
+ "Observation",
127
+ "Prediction",
128
+ "StepSizeHistory",
129
+ "StepSizeTrackingConfig",
130
+ "Target",
131
+ "TimeStep",
132
+ "UpdateResult",
133
+ # Optimizers
134
+ "Autostep",
135
+ "IDBD",
136
+ "LMS",
137
+ "Optimizer",
138
+ # Normalizers
139
+ "OnlineNormalizer",
140
+ "create_normalizer_state",
141
+ # Learners
142
+ "LinearLearner",
143
+ "NormalizedLearnerState",
144
+ "NormalizedLinearLearner",
145
+ "run_learning_loop",
146
+ "run_normalized_learning_loop",
147
+ "metrics_to_dicts",
148
+ # Streams - protocol
149
+ "ScanStream",
150
+ # Streams - synthetic
151
+ "AbruptChangeState",
152
+ "AbruptChangeStream",
153
+ "AbruptChangeTarget",
154
+ "CyclicState",
155
+ "CyclicStream",
156
+ "CyclicTarget",
157
+ "DynamicScaleShiftState",
158
+ "DynamicScaleShiftStream",
159
+ "PeriodicChangeState",
160
+ "PeriodicChangeStream",
161
+ "PeriodicChangeTarget",
162
+ "RandomWalkState",
163
+ "RandomWalkStream",
164
+ "RandomWalkTarget",
165
+ "ScaleDriftState",
166
+ "ScaleDriftStream",
167
+ "ScaledStreamState",
168
+ "ScaledStreamWrapper",
169
+ "SuttonExperiment1State",
170
+ "SuttonExperiment1Stream",
171
+ # Stream utilities
172
+ "make_scale_range",
173
+ # Utilities
174
+ "compare_learners",
175
+ "compute_cumulative_error",
176
+ "compute_running_mean",
177
+ "compute_tracking_error",
178
+ "extract_metric",
179
+ # Timing
180
+ "Timer",
181
+ "format_duration",
182
+ ]
183
+
184
+ # Add Gymnasium exports if available
185
+ if _gymnasium_available:
186
+ __all__ += [
187
+ "GymnasiumStream",
188
+ "PredictionMode",
189
+ "TDStream",
190
+ "collect_trajectory",
191
+ "learn_from_trajectory",
192
+ "learn_from_trajectory_normalized",
193
+ "make_epsilon_greedy_policy",
194
+ "make_gymnasium_stream",
195
+ "make_random_policy",
196
+ ]
@@ -0,0 +1,27 @@
1
+ """Core components for the Alberta Framework."""
2
+
3
+ from alberta_framework.core.learners import LinearLearner
4
+ from alberta_framework.core.optimizers import IDBD, LMS, Optimizer
5
+ from alberta_framework.core.types import (
6
+ IDBDState,
7
+ LearnerState,
8
+ LMSState,
9
+ Observation,
10
+ Prediction,
11
+ Target,
12
+ TimeStep,
13
+ )
14
+
15
+ __all__ = [
16
+ "IDBD",
17
+ "IDBDState",
18
+ "LMS",
19
+ "LMSState",
20
+ "LearnerState",
21
+ "LinearLearner",
22
+ "Observation",
23
+ "Optimizer",
24
+ "Prediction",
25
+ "Target",
26
+ "TimeStep",
27
+ ]