Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FLOPs calculation for Monty #9

Closed
wants to merge 260 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
260 commits
Select commit Hold shift + click to select a range
18c93df
Add scripts to find FLOP operations
hlee9212 Jan 2, 2025
5507d8a
Update directory structure for better organization
hlee9212 Jan 2, 2025
d8ac45d
Breaking down large file into modules
hlee9212 Jan 2, 2025
c11d4d7
Update ufunc handling
hlee9212 Jan 2, 2025
bae74b5
Update matmul flop counter to handle broadcasting
hlee9212 Jan 2, 2025
4912df2
Add initial KDTree query flop counter
hlee9212 Jan 2, 2025
cfa14a4
Renaming to Floppy
hlee9212 Jan 3, 2025
5901a5d
Add sine, cosine, and cross
hlee9212 Jan 3, 2025
8d6ffca
Add arccos support
hlee9212 Jan 3, 2025
c89e068
Update find operations to cover sklearn and scipy
hlee9212 Jan 6, 2025
b7d28fc
Rename and fix bugs
hlee9212 Jan 6, 2025
cb7319a
Update to track instance method calls
hlee9212 Jan 6, 2025
9a9b302
Add more support to numpy functions including np.linalg
hlee9212 Jan 6, 2025
013dc13
Update FlopCounter to track new supported functions
hlee9212 Jan 6, 2025
578963f
Add FLOP counting support for additional arithmetic and bitwise opera…
hlee9212 Jan 6, 2025
5df9646
Implement FLOP counting for KDTree operations in evidence matching an…
hlee9212 Jan 7, 2025
8306f24
Enhance FlopCounter functionality and improve arithmetic operation br…
hlee9212 Jan 7, 2025
62db219
Add comprehensive tests for FLOP counting in various operations
hlee9212 Jan 7, 2025
a7c31b0
Add sum support
hlee9212 Jan 8, 2025
7697d95
Add TrackedArray to count +, -, *, /
hlee9212 Jan 8, 2025
7cd3301
Update tracker to prevent infinite recursion
hlee9212 Jan 8, 2025
69b55c8
I think working code????
hlee9212 Jan 8, 2025
7bc3d28
Add GSG Flop counter
hlee9212 Jan 8, 2025
ede596e
Revamp README to introduce Floppy framework for FLOP analysis and cou…
hlee9212 Jan 10, 2025
44729d5
Add readme
hlee9212 Dec 4, 2024
b7b8674
Update readme on installing pypapi in Linux
hlee9212 Dec 4, 2024
113f471
Add FlopCounter and override a single function in EvidenceLM
hlee9212 Dec 10, 2024
b9306aa
Remove papi information in README
hlee9212 Dec 19, 2024
60428b2
Update flop counter
hlee9212 Dec 19, 2024
7f1138d
Copying over configs from tbp.monty
hlee9212 Dec 19, 2024
81e247b
Override with FLOP counter
hlee9212 Dec 19, 2024
7631137
Add run scripts
hlee9212 Dec 19, 2024
40e98e4
Update Flop counter and way to wrap Monty and Experiment classes
hlee9212 Dec 19, 2024
d575ba4
Add scripts to find FLOP operations
hlee9212 Jan 2, 2025
0794a03
Update directory structure for better organization
hlee9212 Jan 2, 2025
dc02688
Breaking down large file into modules
hlee9212 Jan 2, 2025
e9d330a
Update ufunc handling
hlee9212 Jan 2, 2025
31c59fd
Update matmul flop counter to handle broadcasting
hlee9212 Jan 2, 2025
b884ca6
Add initial KDTree query flop counter
hlee9212 Jan 2, 2025
4004f9f
Renaming to Floppy
hlee9212 Jan 3, 2025
81271d3
Update find operations to cover sklearn and scipy
hlee9212 Jan 6, 2025
db95652
Rename and fix bugs
hlee9212 Jan 6, 2025
b3c6e01
Add FLOP counting support for additional arithmetic and bitwise opera…
hlee9212 Jan 6, 2025
1ee5fb9
Add TrackedArray to count +, -, *, /
hlee9212 Jan 8, 2025
a8f3465
Update tracker to prevent infinite recursion
hlee9212 Jan 8, 2025
b546a7f
I think working code????
hlee9212 Jan 8, 2025
b49086e
Move test files
hlee9212 Jan 10, 2025
1778169
Update README with dependencies
hlee9212 Jan 10, 2025
d58ce6b
Update where results are stored at
hlee9212 Jan 10, 2025
321f2e0
Remove unused code part 1
hlee9212 Jan 10, 2025
4964668
Remove unused code part 2
hlee9212 Jan 10, 2025
5f9871d
Remove unused code part 3
hlee9212 Jan 10, 2025
7d8f699
Remove unused code part 4 (kdtree)
hlee9212 Jan 10, 2025
08d2e73
Simplify code part 1
hlee9212 Jan 10, 2025
a49da4b
Remove unused code part 5
hlee9212 Jan 10, 2025
7c0eed1
Testing add function in various ways
hlee9212 Jan 11, 2025
02b33c5
Add more tests for ufuncs
hlee9212 Jan 11, 2025
d2cb6d4
Tests for Trig
hlee9212 Jan 11, 2025
74f8a02
Tests for remainder of ufuncs
hlee9212 Jan 11, 2025
634a2d6
Tests for matmul, argmin, argmax
hlee9212 Jan 11, 2025
a32a954
Tests for linalg and stats
hlee9212 Jan 11, 2025
e1f09ae
Update import scheme
hlee9212 Jan 11, 2025
ca240ca
Update README
hlee9212 Jan 11, 2025
03e6635
Slightly update KDTree flop count
hlee9212 Jan 12, 2025
e44cc36
Make KDTree query consistent across methods
hlee9212 Jan 12, 2025
275f019
Update GSG approx with heap_flops = 0 because 1 nn
hlee9212 Jan 12, 2025
9989469
Add run_parallel (doesn't work)
hlee9212 Jan 12, 2025
3e4ddc8
Add implementation to override _build_adjacency_matrix
hlee9212 Jan 13, 2025
cc01529
Add support to method calls, e.g. arr.add(arr2)
hlee9212 Jan 13, 2025
7c88809
Update README
hlee9212 Jan 13, 2025
9d514a3
Remove old test code
hlee9212 Jan 14, 2025
282bbb7
Update READ as per comment: https://github.com/thousandbrainsproject/…
hlee9212 Jan 14, 2025
3eeb7bc
Moved frequency_of_ops into results (gitignored)
hlee9212 Jan 14, 2025
b6fd427
Added example for how we individually wrapped select Monty functions
hlee9212 Jan 14, 2025
6454489
Update init file
hlee9212 Jan 14, 2025
24bb2ce
Add docstring to array_finalize
hlee9212 Jan 14, 2025
974be0b
Remove irrelevant docstring
hlee9212 Jan 14, 2025
f8c7afc
Move should skip as class method
hlee9212 Jan 14, 2025
d00c14c
Remove unused method
hlee9212 Jan 14, 2025
ecf2d8e
Added docstring to explain args and result
hlee9212 Jan 14, 2025
6b16737
Delete whitespace
hlee9212 Jan 14, 2025
adb36f2
Add better comment to matmul
hlee9212 Jan 14, 2025
e34193b
Update docstring
hlee9212 Jan 15, 2025
73f2d63
Update FLOP for log
hlee9212 Jan 15, 2025
9484945
Update FLOPs for power op
hlee9212 Jan 15, 2025
742d80f
Clarify FLOP counting for arithemetic
hlee9212 Jan 15, 2025
368c14c
Enhance docstring for SumOperation's count_flops method to clarify FL…
hlee9212 Jan 15, 2025
255eb4d
Update flop count for FloorDivideOperation to reflect both division a…
hlee9212 Jan 15, 2025
0f5dfaa
Update FLOP counting for ModuloOperation to be 3n.
hlee9212 Jan 15, 2025
9e74833
Update FLOP counting for SineOperation to reflect a revised estimate …
hlee9212 Jan 15, 2025
ed0541c
Update FLOP counting for Cosine
hlee9212 Jan 15, 2025
f16f969
Clarify that the cross product is only defined for 3D vectors.
hlee9212 Jan 15, 2025
535c2d6
Update FLOP counting for ArcTangentOperation.
hlee9212 Jan 15, 2025
4ca8f96
Update FLOP counting for ArccosOperation.
hlee9212 Jan 15, 2025
e4264da
Refactor FLOP counting for trigonometric operations: updated ArccosOp…
hlee9212 Jan 15, 2025
effbc68
Update FLOP counting for TangentOperation to reflect a revised estima…
hlee9212 Jan 15, 2025
1534e54
Update FLOP counting for ArcSineOperation to reflect a revised estima…
hlee9212 Jan 15, 2025
f9e5dcd
Refactor MontyFlopTracer to encapsulate original method references fo…
hlee9212 Jan 15, 2025
57a4ef8
Specification of configs for DMC paper (#13)
nielsleadholm Jan 17, 2025
1b06ef7
Fix typo
hlee9212 Jan 17, 2025
5772273
Remove monty_flops folder, use monty_profiling instead
hlee9212 Jan 10, 2025
8d152e3
Add readme
hlee9212 Dec 4, 2024
d4a6cf4
Update readme on installing pypapi in Linux
hlee9212 Dec 4, 2024
dcaaac9
Add FlopCounter and override a single function in EvidenceLM
hlee9212 Dec 10, 2024
fadd880
Remove papi information in README
hlee9212 Dec 19, 2024
dc0d5ca
Update flop counter
hlee9212 Dec 19, 2024
913aebe
Copying over configs from tbp.monty
hlee9212 Dec 19, 2024
59e5865
Override with FLOP counter
hlee9212 Dec 19, 2024
7d5a6f5
Add run scripts
hlee9212 Dec 19, 2024
0b72ec6
Update Flop counter and way to wrap Monty and Experiment classes
hlee9212 Dec 19, 2024
bd725c4
Add scripts to find FLOP operations
hlee9212 Jan 2, 2025
6ab0c68
Update directory structure for better organization
hlee9212 Jan 2, 2025
15635c4
Breaking down large file into modules
hlee9212 Jan 2, 2025
a6d11eb
Update ufunc handling
hlee9212 Jan 2, 2025
32e3368
Update matmul flop counter to handle broadcasting
hlee9212 Jan 2, 2025
7af86e3
Add initial KDTree query flop counter
hlee9212 Jan 2, 2025
e62c147
Renaming to Floppy
hlee9212 Jan 3, 2025
14a6b1c
Add sine, cosine, and cross
hlee9212 Jan 3, 2025
9673371
Add arccos support
hlee9212 Jan 3, 2025
30ecc11
Update find operations to cover sklearn and scipy
hlee9212 Jan 6, 2025
d744b0a
Rename and fix bugs
hlee9212 Jan 6, 2025
3acf3d6
Update to track instance method calls
hlee9212 Jan 6, 2025
7548593
Add more support to numpy functions including np.linalg
hlee9212 Jan 6, 2025
f00b9d3
Update FlopCounter to track new supported functions
hlee9212 Jan 6, 2025
8e1997d
Add FLOP counting support for additional arithmetic and bitwise opera…
hlee9212 Jan 6, 2025
743f2d9
Implement FLOP counting for KDTree operations in evidence matching an…
hlee9212 Jan 7, 2025
c05a1f0
Enhance FlopCounter functionality and improve arithmetic operation br…
hlee9212 Jan 7, 2025
105f9b6
Add comprehensive tests for FLOP counting in various operations
hlee9212 Jan 7, 2025
643a8f8
Add sum support
hlee9212 Jan 8, 2025
fb8a569
Add TrackedArray to count +, -, *, /
hlee9212 Jan 8, 2025
7942eaa
Update tracker to prevent infinite recursion
hlee9212 Jan 8, 2025
264711a
I think working code????
hlee9212 Jan 8, 2025
431e4de
Add GSG Flop counter
hlee9212 Jan 8, 2025
e9aac42
Revamp README to introduce Floppy framework for FLOP analysis and cou…
hlee9212 Jan 10, 2025
b3df0b7
Add readme
hlee9212 Dec 4, 2024
80f33bc
Update readme on installing pypapi in Linux
hlee9212 Dec 4, 2024
a93c68e
Add FlopCounter and override a single function in EvidenceLM
hlee9212 Dec 10, 2024
0812a89
Remove papi information in README
hlee9212 Dec 19, 2024
aac7603
Update flop counter
hlee9212 Dec 19, 2024
bf0c0c6
Copying over configs from tbp.monty
hlee9212 Dec 19, 2024
65ba453
Override with FLOP counter
hlee9212 Dec 19, 2024
18838b3
Add run scripts
hlee9212 Dec 19, 2024
c9f0550
Update Flop counter and way to wrap Monty and Experiment classes
hlee9212 Dec 19, 2024
b0fdcb9
Add scripts to find FLOP operations
hlee9212 Jan 2, 2025
42ed9c4
Update directory structure for better organization
hlee9212 Jan 2, 2025
6c0f1ba
Breaking down large file into modules
hlee9212 Jan 2, 2025
bbb9bd9
Update ufunc handling
hlee9212 Jan 2, 2025
4841b01
Update matmul flop counter to handle broadcasting
hlee9212 Jan 2, 2025
3635cdc
Add initial KDTree query flop counter
hlee9212 Jan 2, 2025
389e869
Renaming to Floppy
hlee9212 Jan 3, 2025
7baf8c2
Update find operations to cover sklearn and scipy
hlee9212 Jan 6, 2025
0f0a7bc
Rename and fix bugs
hlee9212 Jan 6, 2025
ce382d4
Add FLOP counting support for additional arithmetic and bitwise opera…
hlee9212 Jan 6, 2025
3257c03
Add TrackedArray to count +, -, *, /
hlee9212 Jan 8, 2025
d4bfb06
Update tracker to prevent infinite recursion
hlee9212 Jan 8, 2025
332f0c1
I think working code????
hlee9212 Jan 8, 2025
c03aca6
Move test files
hlee9212 Jan 10, 2025
403a7be
Update README with dependencies
hlee9212 Jan 10, 2025
b9eb46e
Update where results are stored at
hlee9212 Jan 10, 2025
72ab504
Remove unused code part 1
hlee9212 Jan 10, 2025
c55fcf8
Remove unused code part 2
hlee9212 Jan 10, 2025
3bb9468
Remove unused code part 3
hlee9212 Jan 10, 2025
ab86cd1
Remove unused code part 4 (kdtree)
hlee9212 Jan 10, 2025
8c07318
Simplify code part 1
hlee9212 Jan 10, 2025
e177d19
Remove unused code part 5
hlee9212 Jan 10, 2025
7ea8268
Testing add function in various ways
hlee9212 Jan 11, 2025
ae3ff08
Add more tests for ufuncs
hlee9212 Jan 11, 2025
618c192
Tests for Trig
hlee9212 Jan 11, 2025
1f19a2d
Tests for remainder of ufuncs
hlee9212 Jan 11, 2025
2b38181
Tests for matmul, argmin, argmax
hlee9212 Jan 11, 2025
9f06933
Tests for linalg and stats
hlee9212 Jan 11, 2025
14591fa
Update import scheme
hlee9212 Jan 11, 2025
8aeb109
Update README
hlee9212 Jan 11, 2025
08e88c7
Slightly update KDTree flop count
hlee9212 Jan 12, 2025
2f40615
Make KDTree query consistent across methods
hlee9212 Jan 12, 2025
b2ea69c
Update GSG approx with heap_flops = 0 because 1 nn
hlee9212 Jan 12, 2025
4fe6967
Add run_parallel (doesn't work)
hlee9212 Jan 12, 2025
01c3d57
Add implementation to override _build_adjacency_matrix
hlee9212 Jan 13, 2025
38fb3f4
Add support to method calls, e.g. arr.add(arr2)
hlee9212 Jan 13, 2025
ee35501
Update README
hlee9212 Jan 13, 2025
7656c8e
Remove old test code
hlee9212 Jan 14, 2025
9e29d00
Update READ as per comment: https://github.com/thousandbrainsproject/…
hlee9212 Jan 14, 2025
fbb418e
Moved frequency_of_ops into results (gitignored)
hlee9212 Jan 14, 2025
d1668b1
Added example for how we individually wrapped select Monty functions
hlee9212 Jan 14, 2025
e611603
Update init file
hlee9212 Jan 14, 2025
c501d2b
Add docstring to array_finalize
hlee9212 Jan 14, 2025
7572e2c
Remove irrelevant docstring
hlee9212 Jan 14, 2025
c3ee286
Move should skip as class method
hlee9212 Jan 14, 2025
3c3c354
Remove unused method
hlee9212 Jan 14, 2025
1b09a51
Added docstring to explain args and result
hlee9212 Jan 14, 2025
f05f030
Delete whitespace
hlee9212 Jan 14, 2025
d61471b
Add better comment to matmul
hlee9212 Jan 14, 2025
1f1186e
Update docstring
hlee9212 Jan 15, 2025
4ede8e6
Update FLOP for log
hlee9212 Jan 15, 2025
d45a043
Update FLOPs for power op
hlee9212 Jan 15, 2025
c187470
Clarify FLOP counting for arithemetic
hlee9212 Jan 15, 2025
2e9b47e
Enhance docstring for SumOperation's count_flops method to clarify FL…
hlee9212 Jan 15, 2025
539c50c
Update flop count for FloorDivideOperation to reflect both division a…
hlee9212 Jan 15, 2025
e078444
Update FLOP counting for ModuloOperation to be 3n.
hlee9212 Jan 15, 2025
77b446d
Update FLOP counting for SineOperation to reflect a revised estimate …
hlee9212 Jan 15, 2025
34899b4
Update FLOP counting for Cosine
hlee9212 Jan 15, 2025
fad1adb
Clarify that the cross product is only defined for 3D vectors.
hlee9212 Jan 15, 2025
6a29931
Update FLOP counting for ArcTangentOperation.
hlee9212 Jan 15, 2025
7bcdebf
Update FLOP counting for ArccosOperation.
hlee9212 Jan 15, 2025
2e9d61a
Refactor FLOP counting for trigonometric operations: updated ArccosOp…
hlee9212 Jan 15, 2025
1c67101
Update FLOP counting for TangentOperation to reflect a revised estima…
hlee9212 Jan 15, 2025
ca43746
Update FLOP counting for ArcSineOperation to reflect a revised estima…
hlee9212 Jan 15, 2025
ac8fd1c
Refactor MontyFlopTracer to encapsulate original method references fo…
hlee9212 Jan 15, 2025
7290e8f
Fix typo
hlee9212 Jan 17, 2025
3ef8413
Merge branch 'hlee9212/flops' of github.com:hlee9212/monty_lab into h…
hlee9212 Jan 17, 2025
00efcc4
Remove run_parallel
hlee9212 Jan 19, 2025
a4294e3
Added detailed explanations for arguments, input unwrapping, 'out' pa…
hlee9212 Jan 19, 2025
518a7cd
Update docstring for SVD
hlee9212 Jan 19, 2025
370a472
Enhance FLOP counting for vector and matrix norms in linalg.py
hlee9212 Jan 19, 2025
9b1d79c
Remove old flop_analyzer result from monty_lab
hlee9212 Jan 19, 2025
b7cbc3e
Start refactoring monty_flop_tracer
hlee9212 Jan 19, 2025
f3db157
Debugging MontyFlopTracer
hlee9212 Jan 19, 2025
733cfa1
Enhance NormOperation in linalg.py to support axis and keepdims param…
hlee9212 Jan 20, 2025
6cc571d
Refactor MontyFlopTracer to improve method wrapping and FLOP counting.
hlee9212 Jan 20, 2025
ca6be40
Change warnings to errors
hlee9212 Jan 20, 2025
d3d276b
Add detailed FLOP analysis for KDTree construction and querying in RE…
hlee9212 Jan 20, 2025
379a568
Update README KDTree section to justify balanced tree.
hlee9212 Jan 20, 2025
56271eb
Refactor FlopAnalyzer to utilize dedicated visitors for NumPy, SciPy,…
hlee9212 Jan 20, 2025
1125eee
Enhance README with detailed static code analysis for FLOP operations.
hlee9212 Jan 20, 2025
e4c6fd3
Refactor FlopCounter to streamline array tracking and FLOP counting
hlee9212 Jan 20, 2025
a432f35
Remove skip_library_calls attribute from FlopCounter.
hlee9212 Jan 20, 2025
851ce7b
Remove duplicate TrackedArray.
hlee9212 Jan 20, 2025
2224987
Added eferences to "Numerical Linear Algebra" by Trefethen and Bau.
hlee9212 Jan 20, 2025
af44bbc
Add documentation to division.
hlee9212 Jan 20, 2025
767fc1b
Remove unnecessary blank lines in BitwiseOrOperation class in numpy_f…
hlee9212 Jan 20, 2025
1630ceb
Refactor ArccosOperation to handle scalar and array inputs correctly,…
hlee9212 Jan 21, 2025
da86ca2
Enhance test coverage for addition operations in test_add.py by captu…
hlee9212 Jan 21, 2025
109e9fb
Remove hardcoded path in find_operations.py
hlee9212 Jan 21, 2025
fe95e2f
Removed the Monty class from the wrapping process, focusing solely on…
hlee9212 Jan 21, 2025
b781f8d
Simplified the condition for counting FLOPs by removing unnecessary c…
hlee9212 Jan 21, 2025
c8eb351
Updated attribute names in FlopCounter and TrackedArray to make public.
hlee9212 Jan 21, 2025
9be788e
Update log path in MontyFlopTracer to include experiment name and tim…
hlee9212 Jan 21, 2025
2ec567a
Refactor MontyFlopTracer to include experiment name in initialization…
hlee9212 Jan 21, 2025
8e1bc7d
Refactor MontyFlopTracer to separate method collection for Monty and …
hlee9212 Jan 22, 2025
f1f9566
Wrap more methods from dataloaders and motor_system
hlee9212 Jan 22, 2025
db3119a
Detailed logging
hlee9212 Jan 22, 2025
087a18b
Introduced a logger in MontyFlopTracer for better traceability and ad…
hlee9212 Jan 22, 2025
f5e6cec
Rename monty_profiling -> floppy
hlee9212 Jan 22, 2025
d3e57a3
Moving files
hlee9212 Jan 22, 2025
bdf743d
Renaming
hlee9212 Jan 22, 2025
c97fa55
Update README with usage for both FLOP counting and FLOP analysis
hlee9212 Jan 22, 2025
f44799f
Refactor static analysis
hlee9212 Jan 22, 2025
2da7705
Update file paths in README
hlee9212 Jan 22, 2025
2bd5bfa
Better organization of operations
hlee9212 Jan 22, 2025
3f9c1e5
Minor fixes
hlee9212 Jan 22, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ If your project requires several additional dependencies you should document thi
- [**temporal_memory**](./temporal_memory): A first implementation of the HTM algorithm for recognizing 3D objects. Includes data preprocessing and SDR generation for 3D locations. Note: This code was written when the Monty framework was not well established yet.
- [**touch_sensor**](./touch_sensor): The first implementation of a sensor moving along the surface of an object. This is now integrated in the Monty framework and called "surface agent".
- [**very_first_experiments**](./very_first_experiments): A couple of notebooks visualizing first experiments of working with sensorimotor data collected in habitat and building and extending graphs using this data.
- [**dmc_configs**](./dmc_configs): A collection of configs for experiments found in the "Demonstrating Monty's Capabilities" paper.

## Contributing
This repository is not meant for external contributors. It is just a place where the TBP team keeps its project files. If you are on the TBP team and start working on a new project, please remember to always add a README in your project folder and a short description in the "Content" section here.
Expand Down
1,101 changes: 1,101 additions & 0 deletions analysis_results/flop_analysis_20250106_112121.csv

Large diffs are not rendered by default.

186 changes: 186 additions & 0 deletions dmc_configs/dmc_configs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
# Experiment Configs for Key Figures

Below is a summary of configs that correspond to figures in the Demonstrating Monty Capabilities paper, with descriptions motivating the choice of config parameters.

**Note:** In all experiments, `use_semantic_sensor=False` should be specified. This should be the case once PR #116 is merged, updating the values for PatchViewFinderMountHabitatDatasetArgs etc to be False by default.

## Figure 1 & 2: Diagramatic Figures With No Experiments

## Figure 3: Robust Sensorimotor Inference

Consists of 4 experiments:
- `dist_agent_1lm` (i.e. no noise)
- `dist_agent_1lm_noise` - Sensor noise
- `dist_agent_1lm_randrot` - 5 random rotations (5 rather than e.g. 14 or 32 due to the long time to run the experiments)
- `dist_agent_1lm_randrot_noise`

Here we are showing the performance of the "standard" version of Monty, using:
- 77 objects
- Goal-state-driven/hypothesis-testing policy active
- A single LM (no voting)

The main output measure is accuracy and rotation error as a function of noise conditions.

## Default Parameters for Figures 4+
Unless specified otherwise, the following figures/experiments use:
- 77 objects
- 5 random rotations
- Sensor noise

This captures core model performance in a realistic setting.

## Figure 4: Rapid Inference with Voting

Consists of 5 experiments:
- `dist_agent_1lm_randrot_noise`
- `dist_agent_2lm_randrot_noise`
- `dist_agent_4lm_randrot_noise`
- `dist_agent_8lm_randrot_noise`
- `dist_agent_16lm_randrot_noise`

This means performance is evaluated with:
- 77 objects
- Goal-state-driven/hypothesis-testing policy active
- Sensor noise and 5 random rotations
- Voting over 1, 2, 4, 8, or 16 LMs

The main output measure is accuracy and rotation error as a function of number of LMs.

**TODO:**
- Config builders for arbitrary numbers of LMs are not currently included in `dmc_eval_experiments.py`.
- Comparable configs should be used to generate views for evaluated rotations to pass to ViT model for comparison.

## Figure 5: Rapid Inference with Model-Based Policies

Consists of 3 experiments:
- `dist_agent_1lm_randrot_noise_nohyp` - No hypothesis-testing
- `dist_agent_1lm_randrot_noise_moderatehyp` - Occasional hypothesis-testing
- Should specify:
- elapsed_steps_factor=20
- min_post_goal_success_steps=10
- `dist_agent_1lm_randrot_noise` - Default, frequent hypothesis-testing
- Should specify:
- elapsed_steps_factor=10
- min_post_goal_success_steps=5

This means performance is evaluated with:
- 77 objects
- Sensor noise and 5 random rotations
- No voting
- Varying levels of hypothesis-testing

The main output measure is accuracy and rotation error as a function of hypothesis-testing policy.

**TODO:**
- These configs need to be specified.

## Figure 6: Rapid Learning

Consists of 6 experiments:
- `dist_agent_1lm_randrot_nohyp_1rot_trained`
- `dist_agent_1lm_randrot_nohyp_2rot_trained`
- `dist_agent_1lm_randrot_nohyp_4rot_trained`
- `dist_agent_1lm_randrot_nohyp_8rot_trained`
- `dist_agent_1lm_randrot_nohyp_16rot_trained`
- `dist_agent_1lm_randrot_nohyp_32rot_trained`

This means performance is evaluated with:
- 77 objects
- 5 random rotations
- NO sensor noise*
- NO hypothesis-testing*
- No voting
- Varying numbers of rotations trained on (evaluations use different baseline models)

*No hypothesis-testing as the ViT model comparison only receives one view and cannot move around object, and no noise since Sensor-Module noise does not have a clear analogue for the ViT model.

The main output measure is accuracy and rotation error as a function of training rotations.

**Notes:**
- Training rotations should be structured:
1. First 6 rotations = cube faces
2. Next 8 rotations = cube corners
3. Remaining = random rotations (as otherwise introduces redundancy)

**TODO:**
- Configs need to be specified
- Comparable configs needed for ViT model comparison

## Figure 7: Computationally Efficient Learning and Inference

Consists of 8 experiments:

### Inference (7 experiments):
- `dist_agent_1lm_randrot_nohyp_x_percent_5p` - 5% threshold
- `evidence_update_threshold=x_percent_threshold` # Evidence update threshold is the same as x-percent threshold for determining convergence.
- `dist_agent_1lm_randrot_nohyp_x_percent_10p` - 10% threshold
- `dist_agent_1lm_randrot_nohyp_x_percent_15p` - 15% threshold
- `dist_agent_1lm_randrot_nohyp_x_percent_20p` - 20% threshold (default for other experiments)
- `dist_agent_1lm_randrot_nohyp_x_percent_30p` - 30% threshold
- `dist_agent_1lm_randrot_nohyp_x_percent_30p_evidence_update_all`
- 30% x-percent threshold for *convergence*
- Effectively >100% threshold for which hypotheses to test, i.e. all hypotheses are tested, even those with negative evidence; determined by setting `evidence_update_threshold='all'

**Notes:**
- For the first 5 experiments above, x-percent threshold determines the threshold at which the LM determines it has converged. In addition we set `evidence_update_threshold=x_percent_threshold`, so that this same threshold also determines which evidence values are updated.
- For the final experiment, these are separated out as noted.

This means performance is evaluated with:
- 77 objects
- 5 random rotations
- No sensor noise*
- No hypothesis-testing*
- No voting

*Due to ViT model comparison.

The main output measure is accuracy and FLOPs as a function of x-percent threshold.

### Training (1 experiment):
- `dist_agent_77obj_1rot_trained`**

**Single rotation evaluation due to FLOPs counting overhead, so we will extrapolate total FLOPs to 14 rotations based on this/or can compare to a ViT trained on 1 rotation.

The main output measure is FLOPs as a function of whether the ViT or Monty is training.

**TODO:**
- Configs need specification (including `dist_agent_77obj_1rot_trained` in `dmc_pretrain_experiments.py`)
- Comparable config needed to generate views corresponding to the 5 random, evaluated rotations, which can then be passed to the ViT model(s) for comparison.

## Figure 8: Multi-Modal Transfer

Consists of 4 experiments:
- `dist_agent_1lm_randrot_noise` - "Standard" Monty ("dist_on_dist")
- `dist_on_touch_1lm_randrot_noise` - "dist_on_touch"
- `touch_agent_1lm_randrot_noise` - "touch_on_touch" baseline
- `touch_on_dist_1lm_randrot_noise` - "touch_on_dist"

This means performance is evaluated with:
- 77 objects
- 5 random rotations
- Sensor noise
- Hypothesis-testing policy active
- No voting

The main output measure is accuracy and rotation error for within/across modality inference.

## Figure 9: Structured Object Representations

Consists of 1 experiment:
- `dist_agent_1lm_randrot_noise_10simobj`

This means performance is evaluated with:
- 10 morphologically similar objects
- Random rotations
- Sensor noise
- Hypothesis-testing policy active
- No voting

The main output measure is a dendrogram showing evidence score clustering for the 10 objects.

**Notes:**
- Although evaluating on 10 objects, the model is trained on 77 objects.
- We need to run this experiment with SELECTIVE logging on so we get the evidence values to analyze.

**TODO:**
- Config needs specification, including training config for similar objects in `dmc_pretrain_experiments.py`.
Loading