Metis - Memory Foundation Model

🏷️ 논문 LLM 트랜스포머 에이전트 Headliner

Z. Zhang, Z. Guo, Y. Sun, X. Zhang, et al., "Metis: Memory Foundation Model," arXiv:2607.26760, 2026.

멀티모달은 파운데이션 모델 안으로 들어왔습니다. 추론도 Chain-of-Thought가 네이티브로 통합되면서 대형 추론 모델이 됐습니다. 그런데 메모리만 아직 바깥에 있습니다. Metis는 그 자리를 옮겨보자는 제안이고, 저자들 스스로 첫 프로토타입이라고 부르는 작업입니다.

metis-overview.png

저자

MemTensor(상하이)가 주도하고 중국인민대, 싱가포르국립대, 상하이교통대, 통지대가 함께한 작업입니다. Zeyu Zhang, Ziliang Guo, Yihang Sun, Xichong Zhang 네 명이 공동 1저자이고, 교신저자는 Zhiyu LiXu Chen입니다. Tat-Seng Chua가 마지막에 이름을 올렸습니다.

인물 배치가 이 논문의 계보를 그대로 보여줍니다.

장쩌위는 2024년 「A Survey on the Memory Mechanism of Large Language Model-based Agents」로 에이전트 메모리 연구를 정리한 사람입니다. 외부 메모리 접근법 전체를 서베이로 훑은 사람이, 그 접근의 구조적 한계를 정리해 백본 안으로 넣자고 제안한 셈입니다. 천쉬는 그의 지도교수이고 LLM 자율 에이전트 서베이의 공저자입니다.

리즈위는 MemOS의 1저자입니다. MemOS는 평문·활성화·파라미터 수준 메모리를 MemCube라는 단위로 묶어 운영체제처럼 관리하자는 작업이었습니다. 메모리를 모델 바깥에서 체계적으로 다루려 했던 사람이 이번에는 안으로 넣는 쪽을 시도합니다. 이 논문이 결론에서 네이티브 메모리가 외부 메모리를 대체하지 못하며 하이브리드가 유망하다고 적은 것도, 저자가 양쪽을 다 만들어 본 사람이라는 사실과 함께 읽으면 자연스럽습니다.

배경

외부 메모리의 문제를 저자들은 세 가지로 정리합니다.

첫째, 구조적 분리입니다. 외부 메모리는 백본과 목표도 처리 단계도 따로입니다. 외부 메모리는 정보가 풍부한 컨텍스트를 구성하는 것이 목표이고, 백본은 그 컨텍스트 위에서 조건부 언어 모델링만 합니다. 그래서 외부 메모리가 백본 추론에 가장 유용한 정보를 주지 못할 수 있고, 백본이 주어진 메모리를 최적으로 쓰지 못할 수도 있습니다. 서로 상대가 무엇을 원하는지 모른 채 작동합니다.

둘째, 종단간 최적화가 어렵습니다. 이산적인 메모리 연산을 통과해 그래디언트가 흐르지 못하기 때문에, 도메인 특화 포스트트레이닝이 매우 어렵습니다. RL 기반 전략이 보상 신호로 메모리 연산을 최적화해 부분적으로 완화하지만 효율 문제가 남습니다.

셋째, 지연입니다. 임베딩, 매칭, 리랭킹, 연결 같은 명시적 연산이 백본 바깥에서 순차적으로 돌아야 하므로 온라인 추론 지연이 늘어납니다.

여기에 저자들이 붙인 관점 하나가 이 논문에서 가장 마음에 드는 부분입니다. 메모리 문제의 근본은 온라인 정보의 시간 흐름 성질에서 나옵니다. 저장 시점에는 받은 정보가 미래에 어떻게 쓰일지 알 수 없고, 추론 시점에는 원본 정보에 더는 접근할 수 없어 저장된 것만 쓸 수 있습니다. 그러므로 메모리는 예측 문제로 볼 수 있습니다. 받은 정보가 미래에 어떻게 활용될지를 모델이 예측하는 문제입니다. 그리고 예측 문제라면 다른 예측 과제처럼 사전학습 단계에서 습득하고 다른 도메인으로 일반화시킬 수 있습니다.

이 논문에는 Are We Ready For An Agent-Native Memory System, AutoMem - Automated Learning of Memory as a Cognitive Skill, Memory Decoder at Scale - A Pretrained, Parametric Long-Term Memory 계열과 같은 방향의 문제의식이 깔려 있습니다. 같은 주에 HF Daily Papers 상위권에 메모리 논문이 넷 이상 올라온 것도 우연은 아닙니다.

무엇으로 구성돼 있나

네이티브 메모리를 두 축으로 정의합니다.

네이티브 메모리 상태. 기존 파운데이션 모델과 달리 여러 추론에 걸쳐 상태를 가집니다. 이 상태는 백본 파라미터의 일부로 동적으로 표현되고, 의미 공간이 사전학습 또는 미드트레이닝 단계에서 정렬됩니다.

네이티브 메모리 절차. 기억하기, 잊기, 갱신하기 같은 연산이 백본의 forward 계산과 함께 자율적으로 수행됩니다. 메모리 엔지니어링이 아니라 모델 계산입니다.

구현은 Fast Weight Programming에서 아이디어를 가져온 Metis 블록입니다. 각 트랜스포머 블록 안에 들어가며 로컬 메모리 블록과 하이퍼 메모리 블록으로 나뉩니다.

metis-architecture.png

로컬 메모리 블록은 현재 시점의 메모리 상태를 담습니다. \(l\)번째 층에 밀집 메모리 네트워크 \(M^{(l)} \in \mathbb{R}^{d_k \times d_v}\)와 쿼리-키 정규화 벡터 \(S^{(l)} \in \mathbb{R}^{d_k}\)를 두고, 둘 다 스텝마다 갱신되는 동적 파라미터입니다. 초기값은 \(M_1^{(l)} = 0\), \(S_1^{(l)} = 0\)입니다.

하이퍼 메모리 블록은 로컬 메모리 블록의 동적 파라미터를 갱신하는 역할을 합니다. 미드트레이닝으로 얻은 정적 파라미터로 구성되며 상호작용 중에는 변하지 않습니다. 학습 가능한 중요도 벡터 \(\tilde{w}_{\text{agg}}^{(l)}\), 메모리 키·값 투영 행렬 \(\tilde{W}_K^{(l)}\), \(\tilde{W}_V^{(l)}\), 그리고 메모리 쿼리 투영 행렬 \(\tilde{W}_Q^{(l)}\)을 가집니다.

어떻게 만들었나

저장 절차

스텝 \(t\)가 끝나면 하이퍼 메모리 블록이 은닉 상태를 압축된 표현으로 모읍니다. 먼저 사전 정규화한 \(\tilde{H}_t^{(l)}\)의 각 토큰을 중요도 벡터로 채점해 분포를 얻습니다.

\[p_t^{(l)} = \mathrm{Softmax}\left( \frac{\tilde{H}_t^{(l)} \tilde{w}_{\text{agg}}^{(l)}}{\tau} \right) \in \mathbb{R}^{L}\]

여기서 \(\tau\)는 온도 계수입니다. 이 확률을 내림차순 정렬해 누적값이 임계 \(\rho\)에 도달하는 최소 접두를 남깁니다.

\[L_t' = \mathrm{clip}\left( \min\left\{ k : \sum_{r=1}^{k} p_{(r)} \geq \rho \right\},\ K_{\min},\ L \right)\]

선택된 \(L_t'\)개 위치의 은닉 상태만 모으는데, \(L_t' \ll L\)입니다. top-\(\rho\) 선택은 미분 불가능하므로 straight-through estimator로 밀집 분포 \(p_t^{(l)}\)을 통해 그래디언트를 흘려서 채점기 \(\tilde{w}_{\text{agg}}^{(l)}\)를 종단간 학습 가능하게 만듭니다.

선택된 은닉 상태를 메모리 키와 값으로 투영한 뒤 밀집 메모리 네트워크를 갱신합니다.

\[M_{t+1}^{(l)} = \lambda M_t^{(l)} + \frac{(1 - \lambda)}{L_t'} \cdot \frac{\tilde{K}_t^{(l)\top}}{\sqrt{d_k}} \tilde{V}_t^{(l)}\]

\[S_{t+1}^{(l)} = \lambda S_t^{(l)} + \frac{(1 - \lambda)}{L_t'} \cdot \frac{\tilde{K}_t^{(l)\top} \mathbf{1}}{\sqrt{d_k}}\]

\(\lambda\)는 할인 계수입니다. 실제로는 이 선형 갱신보다 Gated Delta Network 기반 갱신(GDU)이 더 나은 성능을 보여 Metis는 GDU를 채택합니다.

활용 절차

메모리 어텐션을 다음과 같이 정의합니다.

\[\tilde{A}_t^{(l)} = \mathrm{diag}\left( \tilde{Q}_t^{(l)} S_t^{(l)} \right)^{-1} \tilde{Q}_t^{(l)} M_t^{(l)}\]

\(\tilde{Q}_t^{(l)} = \tilde{H}_t^{(l)} \tilde{W}_Q^{(l)}\)입니다. 이 메모리 어텐션이 원래 어텐션 가지와 합쳐집니다.

\[A_t^{(l)} = \gamma \cdot \mathrm{Softmax}\left( \frac{Q_t^{(l)} (K_t^{(l)})^\top}{\sqrt{d_k}} + \mathrm{Mask}(L) \right) V_t^{(l)} + (1 - \gamma) \cdot \mathrm{Norm}\left( \tilde{A}_t^{(l)} \right)\]

\(\gamma \in [0, 1]\)이 두 가지의 균형을 잡습니다.

핵심은 여기서 나옵니다. 온라인 메모리 유지는 그래디언트 프리이고, 갱신에는 forward 한 번만 필요합니다. 추론 시점에 학습된 가중치는 전부 동결되며 네이티브 메모리 상태만 표준 forward 연산으로 변형됩니다. Temp-LoRA처럼 추론 중에 임시 모듈을 학습시키는 test-time training 계열과 갈리는 지점입니다.

학습

백본은 Qwen3.5의 4B, 9B, 27B이고 8장의 H100으로 학습했습니다. 백본은 동결하고 학습 가능한 메모리 파라미터만 학습하는데, 초기값은 해당 층 백본의 키·값 투영 행렬로 잡습니다. 학습률 \(2 \times 10^{-4}\), AdamW, BF16입니다. Metis-4B는 14,000 스텝으로 1 에폭, Metis-27B는 같은 스텝 수로 약 0.4 에폭, Metis-9B는 검증 성능 기준 조기 종료로 8,000 스텝입니다.

목적함수는 셋입니다. 메모리 상태의 압축 상한에 해당하는 메모리 재구성 목적, 연산 목표에 해당하는 메모리 연산 목적, 복잡한 시나리오에서 견고성을 높이는 정규화 목적.

결과

평가는 컨텍스트 접근 조건으로 나눠 봐야 의미가 있습니다. Full Context는 전체 정보를 프롬프트에 붙인 상한선, Partial Context는 RAG로 상위 5개만 붙인 조건, No Context는 원본 정보를 전혀 안 주고 저장된 것만 쓰게 하는 조건입니다. Metis가 겨루는 판은 No Context입니다.

메모리 연산

방법

MemOps (Gold) 평균 (%)

Metis Test Set 평균 (%)

Qwen3.5-27B (Full Context)

87.90

78.87

Qwen3.5-4B (Partial Context)

30.18

64.82

Qwen3.5-27B (No Context)

1.69

16.87

Temp-LoRA-27B (No Context)

9.70

23.86

δ-Mem (No Context)

4.38

15.03

Metis-4B (No Context)

17.84

56.72

Metis-9B (No Context)

19.63

57.92

Metis-27B (No Context)

24.76

73.77

No Context 조건에서 Qwen3.5-27B가 MemOps 1.69%입니다. 컨텍스트를 빼면 사실상 아무것도 못 한다는 뜻이고, 이게 이 실험의 바닥입니다. Metis-27B는 같은 조건에서 24.76%입니다. Metis Test Set에서는 73.77%로 Full Context 상한선 78.87%에 근접합니다.

주목할 점은 자체 테스트셋과 외부 벤치마크의 격차입니다. Metis-27B가 자기 테스트셋에서는 73.77%인데 MemOps (Gold)에서는 24.76%입니다. 학습 데이터를 만들 때 LoCoMo나 LongMemEval에서 시드 엔티티를 뽑았고 QA 행동 자체는 유출하지 않았다고 밝혔지만, 분포 차이는 남습니다. 이 논문을 읽을 때 자체 테스트셋 숫자를 대표값으로 인용하면 안 됩니다.

연산별로 보면 잊기가 가장 어렵습니다. Metis-27B도 MemOps (Gold)에서 forget 10.91%에 그칩니다. 저자들의 해석은 공유된 잠재 상태에서 정보를 제거하거나 억제하는 것이 저장이나 갱신보다 일반화하기 어렵다는 것입니다.

메모리 기반 QA

방법

LoCoMo (Gold) 평균 (%)

NextMem 평균 (%)

Qwen3.5-27B (Full Context)

65.03

78.80

Qwen3.5-4B (Partial Context)

23.54

Qwen3.5-27B (No Context)

0.07

17.75

Temp-LoRA-9B (No Context)

11.72

28.12

Temp-LoRA-27B (No Context)

4.24

30.97

δ-Mem (No Context)

10.79

20.42

Metis-4B (No Context)

16.31

41.69

Metis-9B (No Context)

16.81

43.39

Metis-27B (No Context)

26.74

50.82

컨텍스트 없는 Qwen3.5는 LoCoMo (Gold)에서 0.07%입니다. 백본 지식만으로는 답을 복원할 수 없다는 확인입니다. Metis-27B가 26.74%로 올라오지만 Full Context 65.03%와는 여전히 38%p 넘게 벌어져 있습니다.

4B에서 9B로 갈 때 개선이 미미하고 27B에서 크게 뛰는 패턴도 눈에 띕니다. 모델 용량이 어느 선을 넘어야 네이티브 메모리 능력이 살아난다는 뜻인데, 개선 폭이 태스크마다 균일하지 않다는 단서이기도 합니다.

구조 절제

이 논문에서 가장 정보량이 많은 표입니다. Metis-4B 기준 전체 평균입니다.

변형

전체 평균

전체 대비 (%)

Metis (전체 모델)

33.14

w/o SA (적응적 집계 제거)

12.93

-60.98

w/o QKN (쿼리-키 정규화 제거)

23.72

-28.44

w/o MS+MP (보조 데이터 전체 제거)

26.74

-19.31

w/o OQ (별도 메모리 쿼리 제거)

29.09

-12.23

w/o MS (Multi-fact 데이터 제거)

29.68

-10.43

w/o GDU (선형 갱신으로 교체)

32.95

-0.58

적응적 집계를 빼고 마지막 토큰 은닉 상태만 쓰면 61%가 날아갑니다. 이 논문의 성능 대부분이 여기서 나온다는 뜻입니다. 입력 시퀀스 전체에 흩어진 정보를 마지막 토큰 하나가 담을 수 없다는 당연한 이야기지만, 수치가 이 정도로 극적인 건 짚어 둘 만합니다.

반면 GDU를 선형 갱신으로 되돌려도 전체 평균은 0.58%밖에 안 떨어집니다. 세부를 보면 선형 갱신이 MemOps (Gold)와 자체 테스트셋에서는 오히려 살짝 낫고 LoCoMo (Gold)에서 확연히 약합니다. 선형 갱신은 짧고 단순한 메모리 연산은 감당하는데 장기 시나리오에서 밀린다는 해석입니다. 논문 본문이 GDU를 아키텍처의 일부처럼 서술하는 데 비해 실제 기여는 이 정도라는 점을, 표를 봐야 알 수 있습니다.

저장 압축

메모리 상태에 SVD를 걸어 랭크를 줄여 보는 실험입니다. 전체 차원은 1024입니다.

랭크

전체 평균

전체 대비 회복률 (%)

1

14.43

43.5

4

22.84

68.9

16

31.22

94.2

64

33.10

99.9

128

33.26

100.4

1024 (Full)

33.14

100.0

랭크 64에서 99.9%가 회복됩니다. 1024차원 메모리 상태의 유용한 정보가 사실상 64차원 부분공간에 몰려 있다는 뜻입니다. 저장 비용을 16배 줄일 여지가 있다는 실무적 함의가 있고, 동시에 이 표현이 아직 매우 성기게 쓰이고 있다는 뜻이기도 합니다.

분포 밖 일반화

학습 데이터 구성에 쓰이지 않은 두 벤치마크입니다.

방법

ATM-Bench (Gold) 평균

MemDaily (Gold) 평균

Metis-27B

18.56

59.04

Metis-9B

16.49

47.29

Metis-4B

10.22

52.54

Temp-LoRA-27B

2.57

59.45

Temp-LoRA-9B

2.86

51.42

δ-Mem

2.27

39.84

ATM-Bench에서는 격차가 뚜렷합니다. LLM 판정이 아니라 후처리 정확 일치로 채점하는 number 문항에서도 앞서기 때문에, 판정기 편향의 산물이라고 보기 어렵습니다. 반면 MemDaily에서는 Temp-LoRA-27B가 근소하게 앞섭니다. 저자들도 MemDaily 결과가 혼재된다고 인정합니다.

회고

이 논문은 한계를 도입부에서 이미 밝히고 시작합니다. 그리고 §6.5와 §6.6에서 그 한계를 직접 측정합니다.

용량이 무너지는 방식. 20명의 가상 인물에게 40개 속성을 부여한 데이터셋으로 두 종류의 용량을 잽니다. 스텝 수준 용량은 한 번의 갱신이 담을 수 있는 최대 토큰 수, 궤적 수준 용량은 한 궤적 안의 최대 갱신 횟수입니다.

스텝 수준에서는 한 번에 넣는 정보가 적을 때는 잘 하지만 입력이 길어지면 정확도가 급격히 떨어집니다. 입력이 수백 단어를 넘으면 첫 번째, 중간, 마지막 사실 모두에서 성능이 낮아집니다. 궤적 수준에서는 갱신 스텝이 늘수록 성능이 떨어지는데, 첫 사실의 정확도가 거의 연속적으로 감소합니다. 여기서 중요한 관찰이 하나 나옵니다. 중간 사실과 최근 사실도 불안정합니다. 새 갱신이 가장 오래된 정보만 덮어쓰는 게 아니라 메모리 상태 전체에 간섭을 일으킨다는 뜻입니다. 각 갱신의 정보량이 고정돼 있는데도 궤적이 길어지면 성능이 떨어지므로, 반복되는 상태 전이와 누적되는 압축 오차가 별도의 한계로 작동합니다.

일반 능력이 깎이는 방식. 이 결과가 이 논문에서 가장 값진 부분일 수 있습니다.

벤치마크

초기 단계 (메모리 비어 있음)

활성 단계 (무관한 정보 저장 후)

MMLU-Pro

-0.80

-5.10

IFEval

+0.55

*-22.18*

GSM8K

-1.06

-5.61

MMMLU

-0.80

-3.30

메모리가 비어 있을 때는 백본 성능을 거의 그대로 보존합니다. 그런데 태스크와 무관한 정보를 메모리에 넣어 두면 모든 벤치마크에서 떨어지고, IFEval에서 22.18%p가 날아갑니다. 무관한 네이티브 메모리가 forward 계산에 노이즈를 넣어 현재 태스크 처리를 방해하며, 엄격한 지시 준수에서 특히 심하다는 뜻입니다.

이 숫자를 그대로 실무로 옮기면 이렇습니다. 개인 비서 시나리오에서 사용자가 며칠간 잡담을 쌓아 놓은 뒤 "다음 형식을 정확히 지켜서 답해"라고 하면, 그 지시를 지킬 확률이 크게 떨어집니다. 컨텍스트를 늘리면 생기는 lost-in-the-middle과는 다른 종류의 열화입니다. 저장한 것이 계산 경로 자체를 오염시킵니다.

저자들이 인정한 나머지. 케이스 스터디의 forget 사례가 솔직합니다. 잊으라는 지시를 받은 직후 응답에서 모델은 여전히 옛 사실을 되풀이하고, 그다음 질문에서야 "그 정보가 없다"고 답합니다. 최종 메모리 상태는 맞지만 연산 스텝의 응답이 의도와 어긋납니다. 현재 스텝이 이전 메모리 상태를 과도하게 반영해서일 수 있다고 적었습니다.

결론에서는 더 명확합니다. 고정 크기 잠재 파라미터로 압축하므로 극단적 장기 시나리오에서 성능이 떨어질 수 있고, 의미가 유사한 사실들이 잠재 공간에서 혼동될 수 있으며, 따라서 네이티브 메모리는 외부 메모리의 완전한 대체가 아니라고 못 박습니다.

논문이 안 적은 것. 백본이 Qwen3.5 4B, 9B, 27B로 한정돼 있어 아키텍처 일반성이 검증되지 않았습니다. \(\gamma\)가 두 어텐션 가지의 균형을 잡는 핵심 하이퍼파라미터인데 본문에 값이나 민감도 분석이 없습니다. 그리고 비교 대상이 Temp-LoRA와 δ-Mem 두 개뿐입니다. 상용 수준의 외부 메모리 시스템(MemGPT 계열이나 저자 자신의 MemOS 포함)과의 직접 비교가 없어서, "외부 메모리를 대체할 수 있는가"라는 질문에는 이 실험 구성으로 답할 수 없습니다. 물론 저자들이 그 주장을 하지도 않았습니다.

정리