Skip to content

Pjottos/aivm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 

Repository files navigation

AIVM

Artificial intelligence that embraces the hardware it runs on.

Instead of relying on huge matrix multiplications and non-linear activation functions, AIVM uses a virtual machine with trainable code to directly drive its decision making. The code can be compiled into native machine code, removing an expensive layer of abstraction from typical artificial intelligence agents.

Agent structure

An agent has the following components:

  • Thread The thread that runs the machine code.
  • Memory The short and long term memory of the agent. Also used to pass sensory input and read output.
  • Stack A space for local variables in functions (see below). It consists of 64 8 byte values.
  • Code A collection of functions with one entry point. Functions have no arguments and do not return values, it is expected that information is shared through the memory. The entry point is executed once at each step, which is similar to a forward pass.

Code generation

Each program has the following parameters:

  • Memory The initial values for the agent's memory, in 8 byte chunks.
  • Code string A string of 64 bit values that is used to generate the actual code.

A mix of integer, bitwise, call, load/store and conditional branch instructions is used. Infinite loops are prevented by only allowing a branch to jump to a later part in the same function, and by making recursive function calls impossible.

For details of instruction encoding, check compile.rs.

About

Artificial intelligence that embraces the hardware it runs on.

Resources

Stars

Watchers

Forks

Languages