During a round of CoopIHC, many things happen, and altogether, it results in a rather slow round. To realistically use coopihc to define environments from which to sample efficiently, this needs to be improved.
Steps and resets are the main targets here, since initialization will be rare.
[ ] Profiling a round of a coopihc bundle to see where the bottlenecks are, to identify areas of improvements that we need to prioritize
[ ] Actually optimize each of the identified bottleneck components
[ ] Compare an environment implemented in CoopIHC with the same one implemented in a popular library for envs e.g. gym
[ ] Compare an environment implemented in CoopIHC with a heavy one implemented in a popular library for envs e.g. gym
Some ideas are:
Subclass State from dict rather than ordereddict (dict preserves order since python3.7/3.8)
Generalize the use of numpy arrays, operators and functions wherever possible
Explore libraries like Numba, brax-jumpy, tiny_arrays
During a round of CoopIHC, many things happen, and altogether, it results in a rather slow round. To realistically use coopihc to define environments from which to sample efficiently, this needs to be improved. Steps and resets are the main targets here, since initialization will be rare.
Some ideas are: Subclass State from dict rather than ordereddict (dict preserves order since python3.7/3.8) Generalize the use of numpy arrays, operators and functions wherever possible Explore libraries like Numba, brax-jumpy, tiny_arrays