Store, manage and remix states for SSMs and other Stateful models
Project description
🪄 Statecraft - Load, store and remix states for SSMs, Mamba and Stateful models
TL;DR
With statecraft you can easily load states from a file or from the community repository and use them in your SSMs or stateful models. The interface is just like Huggingface's Transformers library:
from statecraft import StatefulModel
model = StatefulModel.from_pretrained(
model_name="state-spaces/mamba-130m-hf",
initial_state_name="koayon/state-a",
)
Now with every forward pass you get the knowledge from the state you loaded. And because StatefulModel inherits from Huggingface's PreTrainedModel
, you can use it just like any other Huggingface model.
🧑💻 Installation
pip install statecraft
✨ Other Features
- Use
model.build_state()
to generate a new state from your context. - Use
model.save_state()
ormodel.save_current_state
to save your state to a file so that you can use it again in the future. - With
model.load_state()
you can load a state either from a file or from the community repository.- To see the states that are available in the community repository, visit the Statecraft Hub or use
statecraft.list_states()
.
- To see the states that are available in the community repository, visit the Statecraft Hub or use
🔍 Coming Soon
- Right now we only support Mamba models (in all sizes), as more SSMs and Stateful models begin to come onto Huggingface, we will support them too.
- We're also looking at RAG-like generation approaches where you automatically retrieve the
state
instead ofcontext
, watch this space 👀
🧙 Conceptually
Currently, we often use RAG to give a transformer contextual information.
With Mamba-like models, you could instead imagine having a library of states created by running the model over specialised data. States could be shared kinda like LoRAs for image models.
For example, I could do inference on 20 physics textbooks and, say, 100 physics questions and answers. Then I have a state which I can give to you. Now you don’t need to add any few-shot examples; you just simply ask your question. The in-context learning is in the state.
In other words, you can drag and drop downloaded states into your model, like literal plug-in cartridges. And note that “training” a state doesn’t require any backprop. It’s more like a highly specialised one-pass fixed-size compression algorithm. This is unlimited in-context learning applied at inference time for zero-compute or latency.
The structure of an effective Transformer LLM call is:
- System Prompt
- Preamble
- Few shot-examples
- Question
With statecraft and your SSM, we instead simply have:
- Inputted state (with problem context, initial instructions, textbooks, and few-shot examples all baked in)
- Short question
For more details see here
💃 Contributions
We welcome contributions to the statecraft library!
And of course, please contribute your SSM states with statecraft.upload_state(...)
🪄
Proudly powering the SSM revolution.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file statecraft-0.3.0.tar.gz
.
File metadata
- Download URL: statecraft-0.3.0.tar.gz
- Upload date:
- Size: 15.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.2 CPython/3.10.14 Linux/6.5.0-1017-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c423f8927fe6169914ba9219e34d9fd017fa65f4802d19bd5a8daca626eeccd |
|
MD5 | 760c99d83cbe7bb1a304bc0a3b31bbca |
|
BLAKE2b-256 | c992da4e87a123534418b9ff34004aa49fd63f28d623d27372b40d3b2dfc6d5b |
File details
Details for the file statecraft-0.3.0-py3-none-any.whl
.
File metadata
- Download URL: statecraft-0.3.0-py3-none-any.whl
- Upload date:
- Size: 16.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.2 CPython/3.10.14 Linux/6.5.0-1017-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ed5e5d6f7097848a319a4fe5d12c2727485bc21e24b2e6ee9093dfda05ecda96 |
|
MD5 | fed9f1c1b34937e23f899cf99041e487 |
|
BLAKE2b-256 | c12a6226dcf9b349188cdfedcedbe4573fe17e966489a66fcca451227a383aff |