/RIXA

User centered XAI - made easy

Primary LanguageCSSApache License 2.0Apache-2.0

Welcome to RIXA
"Real tIme eXplainable Artificial Intelligence" A project for end user focused XAI (and other stuff)

drawing You are entering an active construction zone!

⚠️ A stable release is expected in the middle of November to early December

Install, program and deploy is currently not possible except for a few handpicked cases.

However we would love to see RIXA deployed. If you would like to try out or use RIXA contact finn.schwall@iosb.fraunhofer.de with a rough idea of usage and timeline.

A version that works (for a case) should be ready in < 2 weeks.

This is mainly due to dev priorities. We intend RIXA to be easily locally installable at some point, where installing plugins will just be drag and drop. But as of now more pressing is optimizing the LLM pipeline and the stability of the plugin system.

However deploying RIXA is the highest priority so if you are reading this and can think of a use case we will gladly try to finish up the areas that would be required to allow for timely use.

Rework

The plugin system is changed from the ground up to make it more stable and ease its use. Reworked RIXA will break parts of the current API. Installations will not be compatible as the project is refactored into smaller, more manageable projects.

Current development is mainly going on in

PyALM

PyLoT

DikeLM

Description

RIXA is primarily a combination of dashboard and NLP for integration between XAI code and a more "natural" interface. The underlying paper is Coming soon (~December).

This readme aims to give a quick overview for getting started. All technical questions and advanced infos are in the docs .

Quickstart

Demo

There is no demo currently :(

Documentation

Here for the latest main branch version. For all other versions (also locally) it is under docs/build/html. For branches other than main you will have to build it.

Installation

Hardware requirements

Basically none for the pure server (<300 MB of RAM, negligible CPU time). The requirements come from the plugins and the chat backend. If you want to run the latter one locally they are substantial. For usable results near real time I would recommend at least 12 GB RAM, 8 GB VRAM and a decent CPU with AVX2 support. It also works with way less but the experience will be subpar.

As an enduser

If you do not intend to develop plugins or don't have any idea how package management works you are probably better off with the integrated solution. It comes with a python/C environment and an automatic package manager.

UNFINISHED

For developers

For the server you need Python>=3.10.

Server + Plugin API:

pip3 install rixa

Plugin API only. Works with lower python versions but functionality may be reduced.

pip3 install git+https://github.com/finnschwall/RIXA#subdirectory=plugins

RIXA works fine without venvs, conda, pyenv etc. But it comes with extensive support for all of those. The "RIXA way" is to install plugins with different requirements in different environments so plugin dependencies don't interfere with each other.

Starting and running the server

Creating the working directory (wd)

For endusers

Just start RIXA via terminal

rixaserver runserver

or desktop shortcut.

The instructions below can also be used in the enduser installation, however defaults are supplied. Also a working directory is automatically created and managed in the RIXA data folder.

For developers

Setup

The server requires a directory to work from that contains temporary files, databases, config files etc. Such a directory can be created either by supplying path or by navigating to a folder.

#A
rixaserver initialize-dir PATH
#B
rixapserver initialize-dir

A local database is automatically created when you create a new WD. Should you switch the RIXA version and encounter errors you can update the db scheme with

rixaserver update_db 

Should you otherwise encounter errors and there is nothing of interest in the db you can rebuild it at any time with

rixaserver update_db --rebuild

That is also necessary should you e.g. switch to mysql.

If conservation of the dbs contents is important you will have to use djangos managment commands to manually alter the db. All of djangos managment commands are available through

rixaserver django

Running the server

To run the server you must be in the wd. Alternatively you can set the wd as an env var like this:

export RIXA_WD=PATH

Then you can run

rixaserver runserver
#or alternatively specify port and ip. This will open the server to your entire network.
rixaserver runserver localhost:8000

The runserver command is a link to djangos runserver with some settings of paths before running.

Developing and adding plugins

In the wd there is a plugin folder. This folder is always added to the search paths for plugins. Other search paths and more complex configurations have to be done using the config.ini. There are some helpful commands for all of this available in

rixaserver

FAQ

I encounter a shared_memory warning when the server closes

UserWarning: resource_tracker: There appear to be 1 leaked shared_memory objects to clean up at shutdown

If it looks something like this then you can ignore it. See issues pages.

I would like to use a version managment system

I recommend pyenv with venv plugin. In the docs under the advanced installation page the most important steps are listed to get both running with RIXA.

Branches?

You can install from three branches. There is main, beta and dev.

main aims to provide stable code. beta is semistable and should reflect newer features currently nonexistent. dev is for ongoing development. Unless you have a very good reason don't touch the dev branch. It seldom contains a working version.

If you install it will automatically be built from main. For dev or beta you can use for the server:

pip3 install git+https://gitlab.cc-asp.fraunhofer.de/xai-hiwi/rixa/rixawebserver.git@dev

and for the plugins

pip3 install git+https://gitlab.cc-asp.fraunhofer.de/xai-hiwi/rixa/rixawebserver.git@dev#subdirectory=plugins

For options add a hashtag at the end with the build option following. Several options can be delimited by an ampersand.

If you wish to have a look at the dev branch then a local installation is recommended. Pull the repo and1

pip install -e PATH_TO_PROJECT

Options are supported here too.

pip install -e PATH_TO_PROJECT[OPTION]

Package options

There are currently two options for the installation: standard and doc. It is strongly recommended to install with standard. Otherwise the standard plugins will not work. If you want to be able to build the docs you also need doc. For installing e.g. with full:

Everything else

See docs for everything else)

Footnotes

  1. Pulling and not installing is not supported. It will likely lead to path issues.