I've just released a major update, which extends it's usefulness, makes it portable and greatly improves performance and memory efficiency broadly.
I
provide an explanation of the new features and capabilities,
reproducible benchmark results, which indicate Infotheory's MC-AIXI-CTW
is faster, and uses less memory across all tested configurations compared to
PyAIXI and the
Reference C++ Implementation of MC-AIXI-CTW.
Infotheory aims to unify sequential probabilistic models interfaces,
which are plug-compatible with metric functions, search, agents,
compression, generation and more, and states can be managed across those
different use-cases.
For those which learn best by doing something, you may try the
new demos, which now include
in-browser MC-AIXI and AIQI:
https://infotheory.tech and click AIXI Runner --
no data leaves your web browser, and everything runs locally with
WebAssembly. It's fast but single threaded, which exemplifies how much
faster AIQI is.
Infotheory now has one main model class: Probablistic Predictive models
("Rate Backends") -- which can be used to construct compressors(Add AC or rANS). This is
a major change from v1.0.0
I've added new models
(Mamba v1 LLM, Match, PPMd), improved performance and memory usage of
existing models including CTW, added generative capability,
added an AIQI approximation to compliment MC-AIXI, made all LLM models capable of Online training+weight export in addition to inference on weights.
In summary:
1. It now has a
Python API, allowing complete usage of all features with
Python alone without knowing Rust (which the underlying library is
written in) -- including AIXI, and yes, environments can be defined in
Python. Just `pip install infotheory-rs` --
Documentation is available on the site.2. It is now completely portable across operating systems and
architectures -- even web browsers via WebAssembly, which is very
performant.
3. Extended Model class significantly --
models work universally within the library, plug and play, and can be
arbitrarily and recursively configured in mixtures, of there is now also
Neural Mixture (ZPAQ inspired)
4.
Implemented AIQI-CTW, and extended it with any library model as the return predictor! Infotheory's AIQI-CTW yields a
general 5-10x improvement in throughput compared to it's own MC-AIXI-CTW implementation;
See my later benchmark section.5. Any Infotheory Model can be used for compression
and decompression(serving as a good evaluator), losslessly. Since
models can be Mixtures(Bayesian, Neural) of other models or mixtures,
which themselves are configurable -- It's a compression framework. You
configure it down to what algorithms are used and how.
In
addition, I have improved the documentation, and updated my site from a
server architecture, to allowing you to demo it's features inside your
web browser locally via WebAssembly. The demo has a few basic games, and
you can watch the Agent play, it's very fun to tweak and play around
with in my opinion.
Benchmarking:
Infotheory's MC-AIXI-CTW implementation is
70-140x faster than
PyAIXI's in equivalent scenarios.
It is likewise
1.4-3x faster than
this C++ MC-AIXI
implementation in the same equivalent scenarios, never slower. It
consistently uses less memory compared to both implementations,
strictly. I observed strictly superior speed and memory efficiency.
Across 18 AC-CTW scenario-trials: reward for Infotheory's MC-AIXI was below both in 6, above both in 5, between them in 7.
The exact steps to reproduce these results are documented on my site (the entire thing is a deterministic computation) Hardware is Intel(R) Core(TM) i7-8850H and all runs were single-threaded, and ran on Linux.
Infotheory supports efficient, full planner parallelism for both AIQI and MC-AIXI, which further improves performance.
And
Infotheory's AIQI-CTW is 5-10X faster, and more memory efficient than
even its own MC-AIXI implementation, which confirms and reproduces the
findings made by
Yegon Kim and Juho Lee that AIQI-CTW can be implemented faster than MC-AIXI-CTW, and I confirm it can be parallelized to practically the same degree.
In the attached graphs, infotheory-rust refers to the Infotheory CLI, whereas
Infotheory-python is Infotheory used via it's Python API, which compute
identical rewards.
I will be releasing more examples, documentation, and benchmarks on my site including Jupyter notebooks in the coming days...
I would very much welcome feedback and suggestions from the community.
Best,
Noah