File size: 2,958 Bytes
80df427 ca55194 80df427 ca55194 80df427 ca55194 80df427 ca55194 80df427 489e989 02d8ae5 ca55194 02d8ae5 ca55194 02d8ae5 ca55194 80df427 ca55194 80df427 ca55194 80df427 ca55194 80df427 ca55194 80df427 | 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 | ---
license: apache-2.0
base_model: Qwen/Qwen2.5-7B-Instruct
pipeline_tag: text-generation
tags:
- memory
- long-horizon
- reinforcement-learning
- grpo
- agent
---
# Memory-R2 7B — Memory Manager
The trained **memory-management policy** from [Memory-R2: Fair Credit Assignment for Long-Horizon Memory-Augmented LLM Agents](https://arxiv.org/abs/2605.21768) (arXiv:2605.21768). This is the paper's main contribution and deployed "champion" (`32sess_champion_v2`, LoGo-GRPO curriculum, global step 5).
It is a Qwen2.5-7B-Instruct model fine-tuned with **LoGo-GRPO** (turn-level + token-level credit assignment) via a curriculum of 8 → 16 → 32-session rollouts on the LoCoMo long-horizon dialogue dataset. Given a running conversation, it decides what to INSERT / UPDATE / DELETE in an external memory store.
**This model only manages memory — it does not answer questions.** A separate answer agent reads the memory store this model produces and generates answers; it can be any instruction-tuned LLM. Our own SFT+RL-trained answer agent is released separately at **[ahmedehabb/Memory-R2-answer-agent](https://huggingface.co/ahmedehabb/Memory-R2-answer-agent)**.
## Headline results (`tab:main`)
This memory manager is held constant; only the paired answer agent changes:
| Answer agent | F1 | BLEU-1 | LLM-judge (gpt-4o-mini) |
| --- | ---: | ---: | ---: |
| [ahmedehabb/Memory-R2-answer-agent](https://huggingface.co/ahmedehabb/Memory-R2-answer-agent) (ours, SFT+RL) | **51.46** | **44.84** | 69.03 |
| GPT-OSS-120B (untrained, external) | 49.29 | 43.64 | **86.08** |
See the paper's `tab:different-answer-agent` for more pairings (untrained Qwen-7B, etc.) — the memory manager is not tied to any one answer agent.
## Usage
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
memory_manager = AutoModelForCausalLM.from_pretrained("ahmedehabb/Memory-R2", torch_dtype="auto", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("ahmedehabb/Memory-R2")
```
Full inference code and the memory-store protocol are in the [project repository](https://github.com/ahmedehabb/Memory-R2) (see the paper for the official release).
## Training
- Base model: `Qwen/Qwen2.5-7B-Instruct`
- Algorithm: LoGo-GRPO (turn-level + token-level advantage), curriculum-trained 8-session → 16-session → 32-session
- Reward: per-session cumulative F1 against gold QA + a memory-compression penalty (λ=0.3)
- Judge for reward/logging during training: GPT-OSS-120B
## Citation
```bibtex
@misc{yan2026memoryr2faircreditassignment,
title={Memory-R2: Fair Credit Assignment for Long-Horizon Memory-Augmented LLM Agents},
author={Sikuan Yan and Ahmed Bahloul and Ercong Nie and Susanna Schwarzmann and Riccardo Trivisonno and Volker Tresp and Yunpu Ma},
year={2026},
eprint={2605.21768},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2605.21768},
}
```
|