Qwengram-0.8B: Qwen3.8 Flash-Next의 n-gram 메모리를 Qwen3.5-0.8B로 이식하여 검증 퍼플렉서티 5.05% 개선
Qwengram-0.8B: I transferred Qwen3.8 Flash-Next’s n-gram memory into Qwen3.5-0.8B — 5.05% lower validation perplexity
핵심 요약
Qwen3.5-0.8B 모델에 대형 모델의 n-gram 메모리를 주입하여 백본 수정 없이 성능을 향상시킨 실험입니다.
- 모델 아키텍처 — Qwen3.5-0.8B 백본에 51B 파라미터 규모의 PLE 메모리를 동적 게이트로 연결함
- 성능 개선 — 백본 미세 조정 없이 검증 퍼플렉서티(PPL)를 18.27에서 17.35로 5.05% 낮춤
- 기술적 특징 — 토큰별 동적 메모리 주입을 통해 고정된 메모리 주입보다 우수한 성능 확보
- 향후 계획 — 35B-A3B MoE 모델 등 더 큰 백본으로 확장하여 메모리 주입 효과 검증 예정
Qwen3.8-Flash-Next의 사전 학습된 PLE n-gram 메모리를 써서 훨씬 작은 Qwen3.5-0.8B 모델 성능을 끌어올릴 수 있을지 실험해 봤다.
0.8B 모델은 자원이 넉넉지 않아서 주로 Kaggle 노트북의 무료 GPU를 돌려가며 학습시켰다.
구조는 Qwen3.5-0.8B 백본이랑 대략 51B 파라미터짜리 PLE 메모리를 둘 다 고정(frozen)해두는 방식이다. 디코더 레이어 3번이랑 9번에 작은 R=1 리더를 붙여서 학습시켰고, 나중에 주입할 때는 토큰에 따라 달라지는 선형 게이트를 써서 조절했다.
백본 파인튜닝은 아예 안 했다.
현재 밸런스 잡힌 체크포인트는 15M 토큰으로 학습한 리더랑 따로 보정한 동적 게이트를 쓴 결과물이다. 고정된 전체 검증 세트에서의 결과는 다음과 같다.
Qwen3.5-0.8B 순정
-
NLL: 2.905585
-
PPL: 18.2759
Qwengram-0.8B
-
NLL: 2.853786
-
PPL: 17.3534
퍼플렉서티(Perplexity) 감소율: 5.05%
이건 언어 모델 검증 결과일 뿐이지, 벤치마크 정확도가 5% 올랐다는 소리는 아니다.
최종 설계를 결정짓는 데 몇 가지 발견한 점들이 있다.
-
실제 사전 학습된 PLE가 랜덤 메모리나 순서 섞은 메모리 대조군보다 성능이 훨씬 좋았다.
-
리더 손실값은 학습 토큰 5M을 넘어서도 계속 좋아졌다. 20M 리더가 전체적인 LM 손실값은 더 줄였는데, 수학 문제에서 성능이 떨어져서 15M을 밸런스 잡힌 체크포인트로 정했다.
-
후반 레이어에 메모리를 강하게 고정 주입하면 LAMBADA 성능이 깎였다. 토큰 단위로 동적 중재를 하니까 이 손실을 대부분 복구할 수 있었다.
-
게이트는 진짜로 동적이다. 학습된 상수처럼 작동하는 게 아니라 토큰마다 메모리 강도가 확확 바뀐다.
-
똑같은 메모리 예산 안에서, 학습된 토큰 배치가 섞인 배치보다 성능이 좋았다. 불확실성이 높은 위치로 메모리를 라우팅하면 이득을 좀 보긴 했는데, 그래도 학습된 게이트만큼은 안 됐다.
-
R=4 리더로 웜스타트(warm-start)를 해봤더니 전체 LM 손실값은 찔끔 좋아졌는데, 코드랑 수학 성능이 떨어졌다. 그래서 R=1을 밸런스 잡힌 아키텍처로 유지했다.
llama.cpp에 추론 경로도 구현해 뒀다.
공개한 아티팩트는 다음과 같다.
모델 / GGUF
https://huggingface.co/Ninnix96/Qwengram-0.8B
학습, 대조군, 평가
https://github.com/Ninnix/qwen-ple-transfer


