File size: 3,634 Bytes
5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 38faacf 5e27996 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | ---
license: mit
language:
- en
tags:
- msa
---
# MSA: Memory Sparse Attention
*A scalable, end-to-end trainable latent-memory framework for 100M-token contexts.*
**Anonymous code release for peer review.** This repository contains the inference and evaluation code
used to produce the reported benchmark results.
| | |
|---|---|
| Code (this repo) | `Anoy123423123/MSA-Code` |
| Model weights | [`Anoy123423123/MSA-4B`](https://huggingface.co/Anoy123423123/MSA-4B) |
| Benchmark data | [`Anoy123423123/MSA-RAG-BENCHMARKS`](https://huggingface.co/datasets/Anoy123423123/MSA-RAG-BENCHMARKS) |
## Requirements
Linux x86-64, Python 3.12, CUDA 12.x. **8× 80GB GPUs** for the default benchmark suite; the 100M-token
`ms_100M` setting runs on **2× A800** via Memory Parallel. ~9 GB disk for weights, ~0.6 GB for data.
`transformers` must be exactly **4.51.3** — the attention implementation targets that API and will not
load on 4.52+ or 5.x. The other pins in `requirements.txt` are the tested versions.
## Quick Start
**1. Get the code**
```bash
pip install -U "huggingface_hub==0.31.4"
# export HF_ENDPOINT=https://hf-mirror.com # uncomment if you need a mirror
huggingface-cli download Anoy123423123/MSA-Code --repo-type=model --local-dir MSA
cd MSA
```
**2. Install**
```bash
conda create -n msa python=3.12 -y && conda activate msa
pip install -r requirements.txt
pip install flash-attn==2.7.4.post1 --no-build-isolation
```
`flash-attn` is separate because it needs `--no-build-isolation`. To skip the slow source build, see the
prebuilt wheel in [QUICK_START.md](./QUICK_START.md). Verify:
```bash
python -c "import torch, transformers, flash_attn, pynvml; print(torch.__version__, transformers.__version__, flash_attn.__version__)"
# expected: 2.6.0 4.51.3 2.7.4.post1
```
**3. Download the weights**
```bash
huggingface-cli download --resume-download Anoy123423123/MSA-4B --local-dir ckpt/MSA-4B
```
This is the path `scripts/run_benchmarks.sh` expects (`model_path=ckpt/MSA-4B`).
**4. Run inference**
```bash
bash scripts/run_benchmarks.sh eval_benchmark
```
Benchmark data is fetched automatically on first use into `./data/`. Results land in
`src/evaluation/outputs/eval_benchmark/` as one `.log` and one `.json` per benchmark.
**5. Score the answers**
```bash
export OPENROUTER_API_KEY=<your key>
bash scripts/calculate_llm_score.sh eval_benchmark
```
The argument must match the log directory name from step 4.
## Benchmarks
Configured in the `benchmarks` array at the top of `scripts/run_benchmarks.sh` as `name:batch_size`:
`2wikimultihopqa` `hotpotqa` `musique` `nature_questions` `triviaqa_06M` `triviaqa_10M`
`hipporag_narrative` `hipporag_popqa` `msmarco_v1` `dureader` `ms_100M`
`ms_100M` (the 100M-token setting) and `triviaqa_06M` are commented out by default.
**Batch size must be scaled with your GPU count** — the memory corpus is partitioned into one bucket per
visible GPU, and the defaults assume the 8 GPUs in `CUDA_VISIBLE_DEVICES`.
## Notes
| Symptom | Fix |
|---|---|
| Errors loading the model | `transformers` must be exactly `4.51.3`. |
| `import pynvml` fails | The module comes from `nvidia-ml-py`; the separate deprecated `pynvml` distribution shadows it. `pip uninstall -y pynvml && pip install nvidia-ml-py==12.575.51` |
| CUDA OOM | Lower `batch_size` in `scripts/run_benchmarks.sh`. |
| Data download stalls | `export HF_ENDPOINT=https://hf-mirror.com` and retry; partial files resume. |
See [QUICK_START.md](./QUICK_START.md) for the project layout and the prebuilt `flash-attn` wheel.
## Citation
Withheld during anonymous peer review.
## License
MIT.
|