3 releases (breaking)

0.3.0 Oct 1, 2022
0.2.0 Jan 16, 2022
0.1.0 Jan 13, 2022

#710 in Programming languages

MIT/Apache

105KB
2.5K SLoC

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.

Quick start

use aivm::{codegen, Compiler, Runner};

const LOWEST_FUNCTION_LEVEL: u32 = 1;
const MEMORY_SIZE: u32 = 4;
const INPUT_SIZE: u32 = 4;
const OUTPUT_SIZE: u32 = 4;

let gen = codegen::Interpreter::new();
let mut compiler = Compiler::new(gen);

// TODO: train code and memory to make it do something useful.
let code = [0; 16];
let mut runner = compiler.compile(
    &code,
    LOWEST_FUNCTION_LEVEL,
    MEMORY_SIZE,
    INPUT_SIZE,
    OUTPUT_SIZE,
);
let mut memory = [0; (MEMORY_SIZE + INPUT_SIZE + OUTPUT_SIZE) as usize];

runner.step(&mut memory);

Dependencies

~0–1.6MB
~33K SLoC