Jax for scaling ALife tutorial: Biomaker CA
Ettore Randazzo* and Bert Chan**
*Google, Paradigms of Intelligence Team
**Google DeepMind
The environment
That is the core…
But if you want to see how to add more complex properties such as gradients of colors, here is the full implementation
key, env and programs are NOT static.
Highlights of the logic
The code is quite complex, but it is jittable. If you are brave, here it is.
Implementing exclusive ops
Implementing exclusive ops
Implementing exclusive ops
Implementation of AIR and EARTH ops
Now let’s implement some new materials
Extra material
Cut for time…
This is a variable input. As long as the size is the same, any function taking this as input won’t recompile.
This is a static input.
If you change it, the function recompiles.
Example on how to create environments and configs
A jittable function.
It detects where to place the seed.
The position is dynamic, so at-set doesn’t compile.
It needs to know the exact size of the update
Agent logic
You just think about what to do yourself.
Then, we vmap it twice to create the logic for a grid.
We can also (and do) optimize it for sparse computations.
Example: performing meta-evolution