본문으로 건너뛰기 © 2026 AIwitness. All rights reserved.
핵심 요약 로컬 어텐션과 이중 텐서 메모리를 결합한 새로운 아키텍처 'WarpState'의 첫 학습 성공 사례를 공유합니다.
WarpState 아키텍처 — 로컬 128 토큰 어텐션과 고정 크기 텐서 메모리를 결합한 비-트랜스포머 모델임공유 코어 설계 — 4개의 물리적 코어를 16개의 논리적 깊이로 재사용하여 효율적인 반복 연산을 수행함학습 결과 — 150M 파라미터 모델을 3억 토큰으로 학습시켜 의미 있는 언어 구조를 형성하는 데 성공함향후 과제 — 트랜스포머 베이스라인 비교, 메모리 상태 분석 및 장기 문맥 처리 성능 검증 예정
WarpState란 무엇인가? WarpState는 표준 트랜스포머 스택이 아니야.
기본 아이디어는 다음 세 가지를 합치는 거지:
1. 로컬 타일드 어텐션 (Local tiled attention)
전체 시퀀스에 걸친 글로벌 셀프 어텐션 대신, 토큰을 고정된 128토큰 단위의 청크 로 나눴어.
각 청크 안에서는 일반적인 인과적 스케일드 닷 프로덕트 어텐션(causal scaled-dot-product attention)을 사용해.
모든 청크는 학습 중에 토큰 하나하나 어텐션을 돌리는 게 아니라, 큰 배치 단위의 GPU 작업으로 처리할 수 있어.
tokens
↓
128-token chunks
↓
causal local attention
↓
local representation
2. 빠르고 느린 텐서 메모리 (Fast + slow tensor memory) 처리가 끝난 청크들은 지속적인 텐서 메모리로 압축돼.
WarpState는 모든 어텐션 헤드마다 두 개의 행렬을 유지해:
Fast State (빠른 상태)
Slow State (느린 상태)
빠른 상태는 비교적 짧은 메모리 타임스케일로 초기화되고, 느린 상태는 정보를 훨씬 더 오래 유지하도록 초기화돼.
current chunk
↓
K and U
↓
bounded tensor write
↓
┌───────────────┐
│ Fast memory │
│ Slow memory │
└───────────────┘
↓
future chunks
메모리 쓰기는 제한된 외적(outer-product) 형태의 업데이트를 기반으로 해:
write = tanh(K)^T × tanh(U) / chunk_size
그리고 상태들은 대략 이런 식으로 업데이트돼:
Fast = decay_fast × Fast + (1 - decay_fast) × write
Slow = decay_slow × Slow + (1 - decay_slow) × write
감쇠율(decay rates)은 헤드마다 독립적으로 학습돼.
Fast decay ≈ 0.90
Slow decay ≈ 0.99
모델은 빠른 메모리와 느린 메모리를 각각 얼마나 읽어올지도 학습해.
3. 로컬 어텐션과 메모리 간의 학습된 라우팅 (Learned routing between local attention and memory) 모든 토큰에 대해, 모델은 다음 중 어디에서 정보를 얼마나 가져올지 결정하는 게이트를 생성해:
local chunk attention
vs
long-range tensor memory
output =
gate × local_attention
+
(1 - gate) × memory_read
그러니까 모델이 이전 청크에서 가져온 정보는 압축된 상태에 의존하면서도, 토큰 간의 정밀한 로컬 관계는 그대로 활용할 수 있는 거지.
Shared recurrent depth WarpState에서 또 특이한 점은 16개의 거대한 레이어를 전부 따로따로 두지 않았다는 거야.
현재 모델에는 4개의 물리적 WarpState 코어 만 들어있는데, 이걸 16번의 논리적 깊이(logical depth) 패스 에 걸쳐서 재사용해:
Core 0
Core 1
Core 2
Core 3
Core 0
Core 1
Core 2
Core 3
...
각 논리적 깊이마다 학습된 작은 스케일과 바이어스 값이 있어서, 같은 물리적 코어라도 몇 번째 깊이에서 쓰이느냐에 따라 다르게 작동할 수 있어.
x = x × (1 + depth_scale) + depth_bias
x → shared WarpState core
모든 거대한 가중치 행렬을 복제하지 않고도 더 깊은 반복 연산을 수행하려는 의도지.
자동 회귀 생성 중에, 두 깊이가 같은 물리적 코어 가중치를 공유하더라도 각 논리적 깊이는 각자 독립적인 메모리 캐시 를 따로 가져.
Other details d_model: 1280
heads: 20
head_dim: 64
physical cores: 4
logical depth: 16
FFN hidden: 4480
chunk size: 128
RMSNorm
SwiGLU
RoPE inside each local chunk
tied input/output embeddings
입력 프로젝션은 하나로 합쳐져서 다음을 출력해:
Q
K
V
local/memory gate
memory U
이걸 한 번의 프로젝션으로 다 뽑아내는 거지.
Training results 내가 제일 궁금했던 건 이 아키텍처가 실제 사전 학습(pretraining)을 버틸 수 있느냐 하는 거였어.
NaN이나 그래디언트 붕괴, 혹은 눈에 띄는 최적화 실패 없이 약 3억 개의 토큰으로 전체 학습을 끝냈거든.
학습 막바지에도 그래디언트 노름(gradient norm)은 대략 이 정도 수준이었어:
그때 학습률(learning rate)은 이미 이 정도로 줄어든 상태였고:
최대 VRAM 점유율은 4.52 GB 정도를 유지했어.
모델이 학습 과정에서 언어 구조를 확실히 익혔다는 것도 확인했어.
초기 체크포인트는 그냥 영어처럼 보이는 노이즈만 뱉어냈거든.
근데 나중 체크포인트로 갈수록 의미론적으로 그럴듯한 클러스터가 형성되고, 문단 구조도 꽤 갖춰지더라고.
예를 들어, 페이스북에 대해 물어보면 최종 모델은 이런 것들과 연관 지어 대답해:
online platform
social media
sharing content
sharing information
interaction with other people
community
물론 아직 제대로 된 챗봇이라고 하기엔 무리가 있지.
반복 루프
의미론적 끌개(semantic attractors) 현상
약한 사실 관계 기억력
가끔 발생하는 역할 혼동
긴 문장 생성 시 붕괴 현상
게다가 이 모델은 그냥 베이스 사전 학습만 거친 상태야.
인스트럭션 튜닝, SFT, RLHF 같은 건 하나도 안 했으니까 , 내가 첨부한 채팅 스크린샷은 챗봇 벤치마크라기보다는 그냥 성능 확인용 테스트 정도로 봐줘.
1억 5천만 파라미터 모델을 겨우 3억 토큰으로 학습시킨 거라, 파라미터당 학습 토큰 수가 대략:
이 정도밖에 안 돼. 그래서 이건 제대로 학습된 150M 언어 모델이라기보다는, 이 아키텍처가 학습 가능하다는 걸 증명한 결과물로 봐주면 좋겠어.
What surprised me most 나한테 흥미로웠던 건, 이런 조건에서도 모델이 의미 있는 언어 표현을 학습할 수 있었다는 점이야:
그래서 장기 메모리 크기가 기존의 전체 KV 캐시처럼 컨텍스트에 비례해서 선형적으로 늘어나지 않아.
확실한 결론을 내리기 전에 테스트해보고 싶은 게 아직 많아.
일단은 첫 번째 전체 실행 결과를 공유하고 싶었어. 왜냐하면 이 시점부터 아키텍처가 단순한 아이디어를 넘어 실제로 학습된 언어 모델이 되었거든.
아키텍처에 대한 피드백은 언제든 환영이야. 특히 메모리 업데이트나 공유 코어(shared-core) 설계에 대한 비판은 더더욱 환영함.
주요 댓글 r/openai 새로운 언어 모델 아키텍처인 WarpState에 대해 기술적인 호기심과 벤치마킹에 대한 기대가 나타나고 있으며, 일부는 부정적인 반응을 보이기도 함.
10 파라미터 대비 토큰 비율이 정말 작네요. 대부분의 모델은 일관된 클러스터를 형성하기 시작하려면 훨씬 더 많은 데이터가 필요한데, 파라미터당 2토큰 수준에서 의미론적 그룹화를 포착하고 있다는 건 고무적입니다.
공유 코어 설계는 예전에 사람들이 시도했던 깊이별 가중치 공유 방식이 떠오르는데, 이 정도 규모에서 작동한 건 처음 보네요. fast/slow 메모리는 모델에 하나가 아닌 두 개의 서로 다른 망각률을 부여하는 것 같아 영리합니다.
긴 생성 후 메모리 상태가 어떻게 보일지 궁금하네요, 만약...
3 감사합니다! 그게 바로 제가 제대로 측정해보고 싶은 다음 단계 중 하나입니다.
현재 fast/slow 상태는 헤드별로 독립적으로 학습된 감쇠율을 사용합니다. 각각 0.90과 0.99 근처에서 초기화되지만, 학습 중에 둘 다 변할 수 있습니다.
현재 생성 경로는 여러 깊이가 동일한 물리적 코어 가중치를 공유할 때조차 각 논리적 깊이에 대해 별도의 fast/slow 상태를 유지합니다.
하지만 많은 청크 이후에 얼마나 많은 정보가 살아남는지에 대한 제대로 된 분석은 아직 수행하지 않았습니다...
길이 제한으로 뒷부분이 생략된 댓글입니다 · 원문에서 전체 보기 → 2 이거 진짜 꽤 흥미롭네. 개별 요소들이 엄청나게 참신한 건 아니라고 생각하지만, 이 조합은 꽤 그럴듯해서 제대로 벤치마크하는 걸 보고 싶어.
몇 가지 궁금한 점이 있는데:
학습 중에 청크 간의 재귀(recurrence)를 정확히 어떻게 처리하고 있어? 메모리 상태가 청크별로 순차적으로 업데이트되는 거야, 아니면 병렬 스캔(parallel scan) 같은 걸 사용하는 거야? 실제 학습 처리량 측면에서 그게 꽤 중요해 보여서 말이야.
그리고...
길이 제한으로 뒷부분이 생략된 댓글입니다 · 원문에서 전체 보기 → -4 그 말 하려고 들어왔음. 이거 만드는 데 들어간 전기조차 아까움.
고마워, 정말 유용한 피드백이야.
청크 재귀에 관해서 말하자면, 현재 병렬 스캔은 없어. 128토큰 청크 전체에 대한 로컬 어텐션은 하나의 SDPA 작업으로 배치 처리되지만, fast/slow 메모리 업데이트는 청크별로 순차적으로 진행돼. 1024토큰 시퀀스라면 논리적 패스당 8번의 상태 업데이트가 일어나는 셈이지. 현재 학습 순전파(forward)에서는 각 논리적 깊이 패스마다 상태가 초기화되고, 그 패스 내의 청크들을 가로질러 전달돼. 생성(generation)은 조금 다른데, 왜냐하면 각...
r/ChatGPT & r/OpenAI • 약 10시간 전
AI의 능력과 한계를 둘러싼 커뮤니티 내의 끊임없는 논쟁과 반목을 다룬 포스트입니다.
AI의 능력과 한계를 둘러싼 커뮤니티 내의 끊임없는 논쟁과 반목을 다룬 포스트입니다.
Claude Opus 5.5의 성능 저하 여부를 실시간으로 추적하는 오픈소스 벤치마크 도구 'LiveNerf'가 공개되어 큰 호응을 얻고 있습니다.
Claude Opus 5.5의 성능 저하 여부를 실시간으로 추적하는 오픈소스 벤치마크 도구 'LiveNerf'가 공개되어 큰 호응을 얻고 있습니다.
Opus 5.5를 사용해 14만 줄 이상의 코드를 삭제한 스크린샷에 대해 사용자들은 구체적인 설명이 없다며 회의적인 반응을 보임.
Opus 5.5를 사용해 14만 줄 이상의 코드를 삭제한 스크린샷에 대해 사용자들은 구체적인 설명이 없다며 회의적인 반응을 보임.