본문으로 건너뛰기

© 2026 Molayo

Reddit요약2026. 05. 21. 01:57

FlashLM v9.7

요약

FlashLM v9.7 업데이트를 통해 CPU 기반 아키텍처인 CPUFlow의 실험 과정과 모델의 일관성(Coherence) 문제를 다룹니다. 낮은 PPL(Perplexity)이 반드시 높은 문장 일관성을 보장하지 않는다는 발견을 바탕으로, 엔티티 트래킹을 위한 6가지 다양한 라우팅 메커니즘 실험 결과를 공유합니다.

핵심 포인트

  • 낮은 PPL이 반드시 문장의 논리적 일관성을 의미하지는 않음
  • CPUFlow는 무료 티어 CPU 환경에서 처음부터 학습된 네이티브 아키텍처임
  • 엔티티 트래킹을 위해 Softmax memory bank부터 Contrastive training까지 다양한 메커니즘을 시도함
  • 현재 모든 FlashLM 모델은 약 100 토큰 지점에서 일관성을 상실하는 한계가 있음

업데이트와 함께 돌아왔습니다. 여러분 중 일부는 Future Sentence Prediction (FSP)이 2.5배의 PPL 개선을 가져온다는 것을 발견했던 v10 FSP를 보셨을 겁니다. 그 이후로 모델이 실제로 자신이 말하는 내용을 이해하도록 만들기 위해 20개 이상의 추가 실험을 진행했습니다. 스포일러를 하자면, 더 낮은 PPL이 더 높은 일관성 (Coherence)을 의미하지는 않습니다.

명칭에 대한 빠른 설명: CPUFlow는 저의 cumsum 기반 CPU 네이티브 아키텍처 (v1부터 v9.7까지)입니다. FlashLM은 어텐션 (Attention) 실험 (v10 FSP), 삼진 모델 (Ternary models, v5 Thunderbolt) 등을 포함하는 더 넓은 범위의 프로젝트입니다. 모두 무료 티어 CPU에서 처음부터 (from scratch) 학습되었습니다.

나를 놀라게 한 발견:

역대 최고의 퍼플렉시티 (Perplexity, PPL) 모델(CPUFlow v8, 검증 PPL 9.30)은 완전히 횡설수설하는 문장을 생성합니다. 저의 베이스라인(CPUFlow v5-LN, 검증 PPL 11.94)은 이름이 있는 캐릭터와 서사 구조를 갖춘 부분적으로 일관된 동화 이야기를 생성합니다. CPUFlow v9.7 (검증 PPL 10.23)은 두 세계의 장점을 모두 갖추어, 더 나은 PPL과 함께 부분적으로 일관된 생성을 보여줍니다. 하지만 분명히 말씀드리자면, 어떤 FlashLM 모델도 진정한 일관성을 달성하지는 못했습니다. 모두 약 100 토큰(tokens) 지점에서 일관성을 잃습니다.

결과 (모두 TinyStories 데이터셋, 2시간, 무료 CPU 코어 4개 기준):

버전시리즈아키텍처파라미터검증 PPL일관성 있음?
v5FlashLMTernary recurrence29.7M1.36아니오
...

v10 FSP와 현재 사이에 일어난 일:

FSP의 돌파구 이후, 저는 엔티티 트래킹 (Entity tracking)을 추가하여 모델이 이야기 속에서 "누가 누구인지"를 기억하게 만들려는 시행착오의 과정에 빠졌습니다. 저는 여섯 가지의 서로 다른 메커니즘을 시도했습니다:

  1. Softmax memory bank (v7) — 콜드 스타트 (cold start) 시 게이트 (gates)가 붕괴되어 0.12에 머물렀습니다. 웜 스타트 (warm start)로 게이트 문제는 해결되었으나, Softmax가 여전히 모든 것을 하나로 섞어버렸습니다.
  2. Hard argmax routing (v8) — 각 토큰이 정확히 하나의 슬롯 (slot)으로 라우팅 (routing)됩니다. 역대 최고의 PPL (9.30)을 기록했지만, 완전히 비논리적이었습니다. 이산적 라우팅 (discrete routing)이 연속적인 문맥 (continuous context)을 깨뜨렸습니다.
  3. Supervised slot routing (v8.5) — 모델에 정답 엔티티 라벨 (ground truth entity labels)을 감독 신호 (supervision)로 제공했습니다. 모드 붕괴 (mode collapse)가 발생하여 모든 것이 슬롯 24로 라우팅되었습니다.
  4. Product Softmax addressing (v9) — 3개의 서브 Softmax x 8 = 512개의 가상 슬롯 (virtual slots), Top 8 희소 선택 (sparse selection). 수학적으로는 훌륭했으나, 어드레싱 (addresses)이 여전히 붕괴되었습니다.
  5. Contrastive entity routing (v9.5) — 엔티티 어드레스에 대해 명시적인 밀어내기 손실 (push apart loss)을 적용했습니다. CE (Contrastive Encoding)의 끌어당기기 (pull)가 대조 손실 (contrastive loss)의 밀어내기를 압도했습니다.
  6. Two phase contrastive training (v9.6) — 백본 (backbone)을 동결하고 메모리를 먼저 학습시킨 뒤, 전체를 학습시켰습니다. 동일한 붕괴가 발생했습니다.

이유가 있었습니다. Feng & Steinhardt (2024)는 엔티티 특화 어드레싱 (entity specific addressing)이 가능해지려면 약 1억 6천만 개 (~160M)의 파라미터 (parameters)가 필요함을 보여주었습니다. 250만 개 (2.5M)의 파라미터 규모에서는 결합 임계값 (binding threshold)이 거대한 벽과 같습니다. 여섯 가지의 서로 다른 메커니즘을 시도했지만, 동일한 근본적 한계에 부딪혔습니다.

실제로 작동한 방식 — v9.7:

저는 엔티티 추적 (entity tracking)을 포기하고, 단순히 RAM Net 희소 메모리 (sparse memory)를 단순한 용량 확장 방식으로 추가했습니다. 이 아키텍처 (architecture)는 CPUFlow v5-LN의 누적 합 (cumsum) 백본과 메모리 사이드패스 (memory sidepath, 512 슬롯, Product Softmax 어드레싱, Top 8 희소 읽기/쓰기)로 구성됩니다. 게이트나 라우팅 손실 (routing loss) 없이 직접적으로 추가되었으며, 단지 추가적인 파라미터만 더해졌습니다.

아키텍처 (Architecture):

임베딩(embed) + CumStepPos → [RAMScanBlock × 6] → LayerNorm → 연결된 출력(tied output) + FSP

RAMScanBlock:
  x_n = LayerNorm(x)
  h = W_proj(x_n)            # 결합: d → 3k
  query, key, value = chunk(h, 3)
  key = sigmoid(key); value = tanh(value)
  scan_out = W_m(query * cumsum(key*value) / cumsum(key))

  addr = W_addr(x_n) → Product Softmax → 512개 가상 슬롯의 상위 8개
  mem_out = sparse_read_write(addr, x_n)
  merged = scan_out + W_mem_proj(mem_out)

  x = x + W_out(merged)
  x = x + ff_down(relu(ff_up(LayerNorm(x))))

샘플 출력 (CPUFlow v9.7, 검증 PPL 10.23):

프롬프트: "Lily와 Tim은 공원에 갔어요. 그들은"

...그들은 뒷집 근처에서 노는 많은 아이들을 보았습니다. 그들은 나무로 올라가 아빠에게 주었습니다. 그들은 매우 행복했습니다. 한참 후에, 그들은 큰 개미 무리를 봤습니다. 평범한 날이 아니었습니다. 그들은 숨바꼭질을 하고 싶지 않았습니다. Tim과 그의 친구들은 겁에 질렸지만, 집에 가고 싶지는 않았습니다. 그들은 안으로 들어가 커다란 덤불 속에서 놀았습니다. 그들은 항상 들어야 한다는 것을 배웠습니다.

프롬프트: "Lily라는 이름의 어린 소녀가 있었습니다. 그녀는 친구들과 노는 것을 좋아했습니다. 어느 날"

...그녀는 신발을 공원에 두고 왔습니다. 공원에서 Lily는 땅에 있는 큰 자물쇠를 봤습니다. 그녀는 그것을 열고 싶었습니다. 그녀는 열쇠를 열려고 시도했지만, 너무 작았습니다. 그녀는 문을 열어 잠금 해제하려고 시도했지만, 할 수 없었습니다. Lily는 문을 열려고 했지만, 너무 꽉 닫혀 있었습니다. 그녀는 당기고 교회 위로 걸어 올라갔고, 마침내 자물쇠가 채워졌습니다. 그녀는 매우 혼란스러웠습니다. 엄마가 도와주러 왔습니다.

이름 있는 캐릭터와 대명사 추적은 작동합니다 ("Lily... She"), 그리고 어느 정도의 이야기 구조를 가지고 있습니다. 하지만 "she tried to open the key"는 말이 안 되며, 이야기는 공원에서 교회로 전개되는데 전환이 없습니다. 일관성이 약 100 토큰 이후에 무너집니다. 솔직히 말해서 — 이것은 부분적으로 일관성이 있지만, 진정으로 일관적이지는 않습니다. 어떤 FlashLM 모델도 서사적 일관성을 달성하지 못합니다.

모델 가중치:

모든 CPUFlow 가중치는 HuggingFace에 있습니다 (MIT 라이선스):

링크:

아키텍처, 개체 추적 실패(entity tracking failures), 또는 일반적인 CPU 학습에 관한 질문에 기꺼이 답변드리겠습니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0