DeepMem이 바이트 수준 언어모델의 압축과 무손실 복원을 분리한다
Going Deeper With Memories
무엇인가
이 논문은 서브워드 토크나이저에 의존하지 않는 바이트 수준 언어모델의 비용 문제를 다룬다. 256개 고정 어휘로 임의의 UTF-8 바이트를 처리하면 미등록 토큰과 언어·문자별 분절 편향은 줄지만, 문서가 토큰보다 훨씬 많은 바이트를 가져 모든 층을 전체 해상도로 계산하기 어렵다. 기존 내부 압축 구조는 풀링·삭제·병합·패치 과정에서 효율과 충실도 사이의 긴장을 만든다. DeepMem은 압축된 의미 계산과 정확한 바이트 보존을 분리하면 이 긴장을 줄일 수 있다고 주장한다.
어떻게 동작하나
DeepMem은 인과적 다중해상도 구조로, 학습되는 의미 스트림 S와 무손실 캐리어 스트림 K를 병렬로 유지한다. 각 바이트는 8차원 ±1 이진 캐리어로 주입되고, 레벨 l에서 길이는 T/2^l로 줄지만 캐리어 폭은 8·2^l로 늘어 전체 계수 수 8T는 유지된다. 학습된 리프팅 변환은 이웃한 캐리어를 짝/홀로 나눈 뒤 예측기 P와 업데이트 U로 detail Δ=o−P(e), coarse C=e+U(Δ)를 만들고 다음 레벨 캐리어를 cat(C;Δ)로 구성한다. P와 U는 RMSNorm·저랭크 투영·SiLU를 쓰는 점별 MLP이며 최종 투영을 0으로 초기화해 처음에는 항등에 가까운 변환으로 시작한다. 이 변환은 실수 산술에서 정확한 역변환을 가지므로 세부 대역을 명시적으로 남긴 채 원래 바이트 캐리어를 재구성할 수 있다.
무엇과 다른가
의미 경로는 역변환을 강제하지 않고 압축된 예측 표현을 학습한다. 인접한 의미 벡터를 이어 붙여 다음 레벨 폭으로 투영하고, 무손실 캐리어를 저랭크 맵으로 주입한 뒤 RMSNorm과 인과적 메모리 블록을 통과시킨다. 레벨 l+1의 토큰 j는 레벨 l의 두 토큰을 요약하므로 바이트 수용장 끝이 (j+1)2^{l+1}−1인데, 믹서가 인과적이어서 완료된 스팬의 정보가 더 이른 위치로 새지 않는다. 인코더의 fast-weight 메모리는 헤드별 query·key·value를 인과적 depthwise convolution과 SiLU로 만들고, 입력 의존 log-decay γ로 상태 M_t=γ_t M_{t−1}+k_t v_t^T를 갱신해 출력 M_t^T q_t를 낸다. 학습 시에는 청크 병렬 계산으로 이 재귀를 정확히 평가한다. 가장 깊은 16위치·폭 128 병목에서는 동일한 FastWeight 믹서와 정규화 파라미터를 공유하는 두 번의 상태 개선을 적용해 B+Z_2를 디코더 초기값으로 쓴다.
어떻게 쓰나
디코더는 초해상도 방식으로 병목에서 바이트 해상도까지 표현을 복원한다. 부모 벡터를 선형 투영해 두 자식 제안으로 나누되, 부모 j가 두 자식을 모두 요약하므로 왼쪽 자식 2j에 그대로 대입하면 미래 바이트가 새어 나간다. 논문은 오른쪽 자식 2j+1에는 부모 j의 오른쪽 제안을 쓰고, 왼쪽 자식 2j에는 j=0이면 0, 아니면 부모 j−1의 왼쪽 제안을 쓰는 지연 언패킹 규칙을 적용한다. 이 제안을 인코더 스킵과 캐리어 특징에 게이트로 융합한 뒤 RoPE를 쓰는 인과적 self-attention 블록으로 정제한다. 마지막에는 바이트 해상도 표현을 다시 인과적 self-attention 스택과 256바이트 어휘 투영에 통과시켜 다음 바이트의 조건부 확률을 예측하고 음의 로그우도로 학습한다. 디코더는 여러 미래 바이트를 동시에 예측하는 것이 아니라 숨은 표현을 복원하며, 각 위치는 자신 이전 또는 같은 위치의 바이트에만 조건화된다.
전제와 한계
실험은 FineWeb-Edu 학습 분할을 UTF-8 바이트로 표현하고 2,048바이트 문맥, 약 1억 파라미터, 50,000 옵티마이저 스텝, 효과 배치 256시퀀스(스텝당 524,288바이트, 학습 중 약 262억 바이트 제시)로 네 대의 V100에서 처음부터 학습했다. 비교 대상은 같은 말뭉치·예산·하드웨어를 쓴 일반 Transformer, FastWeight, BLT, AU-Net이다. DeepMem은 FineWeb-Edu에서 1.0134 BPB로 Transformer 1.0457, FastWeight 1.0187, BLT 1.0336, AU-Net 1.0319보다 낮았다. PG19에서는 1.4402 BPB로 Transformer 1.4635를 앞섰고, FLORES 8개 언어 매크로 평균도 1.9694 BPB로 Transformer 2.0082, BLT 2.0233, FastWeight 2.0599, AU-Net 2.0077보다 좋았다. 다만 Stack-smol 코드에서는 일반 Transformer가 2.4474 BPB로 가장 좋았고 DeepMem은 2.4854 BPB였다.
다국어 세부에서는 영어·독일어·아랍어·태국어에서 가장 낮은 BPB를 냈고 태국어·아랍어·베트남어에서 Transformer 대비 개선이 컸다. 반면 스와힐리어는 Transformer, 힌디어는 flat FastWeight가 가장 좋았고, 공유 상태 개선을 뺀 변형은 벵골어와 베트남어에서 가장 좋았다. 제로샷 선택지 평가에서는 HellaSwag 30.30%, ARC-Challenge 23.41%, 네 과제 비가중 평균 37.76%로 주 비교 모델 중 최고 평균을 기록했고 PIQA는 60.83%였다(공유 상태 개선을 뺀 변형은 61.81%). ARC-Easy에서는 FastWeight가 37.72%로 DeepMem의 36.49%보다 좋았다. 바이트 교란 robustness 평균은 29.00%로 FastWeight 28.87%, Transformer 27.73%보다 높았고, 깨끗한 입력·반복 문자·랜덤 대소문자에서 강했으며 삭제·Antspeak 띄어쓰기·대문자화에서는 최강 베이스라인과 가까웠다. 평가 처리량은 평균 119,718바이트/초로 flat Transformer의 147,023바이트/초의 81.4%였지만 FastWeight·BLT·AU-Net보다는 높았다.
개발자 관점에서 이 논문은 토크나이저 없이 바이트를 직접 다루면서도 모든 층을 전체 해상도로 돌리는 비용을 피하려는 경우에 참고할 만하다. 특히 원문 바이트를 정확히 보존해야 하는 데이터나 문자 변형에 강건한 모델을 설계할 때, 의미 표현은 압축하고 바이트 정체성은 별도 무손실 캐리어로 유지하는 분리가 유용한 패턴이 된다. 다만 코드 모델링에서는 flat Transformer가 더 좋았고 평가 처리량도 flat Transformer보다 낮으므로, 코드 중심 워크로드와 지연·처리량 제약이 큰 서비스에서는 이 트레이드오프를 먼저 확인해야 한다. 또한 압축 병목에서의 정제가 전체 해상도 추론보다 약 7,600배 적은 counted FLOPs를 요구한다는 주장은 계산량 절감의 근거이지, 벽시계 처리량이 더 빠르다는 주장은 아니다.
저자들이 밝힌 한계는 분명하다. 실험은 약 1억 파라미터와 단일 학습 예산에 한정되어 더 큰 규모의 검증이 필요하고, Stack-smol에서 Transformer에 뒤지며, 측정된 평가 처리량도 flat Transformer보다 낮다. 무손실 역변환은 실수 산술에서 성립하므로 유한 정밀도에서는 작은 재구성 오차가 생길 수 있고, 고정된 이진 트리 계층은 학습된 가변 길이 분절보다 유연성이 떨어진다. 따라서 이 구조를 실제 시스템에 적용할 때는 정밀도에 따른 복원 오차, 코드·처리량 트레이드오프, 그리고 더 큰 모델에서의 확장성을 별도로 검증해야 한다.