관련 대화 (비공개)
차근차근 트랜스포머 MoE: https://claude.ai/chat/a72b649c-5500-46a0-8bad-9a00c1d8bb1a
차근차근 트랜스포머 2: https://claude.ai/chat/4d75d4cf-f06c-44e3-92ca-00677a053db4
MoE 익스퍼트, 합성함수: https://chatgpt.com/c/695c6cc0-2cb8-8320-a8ac-bf301bcfa4a3
Sparse MoE 인퍼런스 처리: https://chatgpt.com/c/695ef27d-b9dc-8322-8190-0399d598eaed
Sparse MoE 역할 분석: https://chatgpt.com/c/695e2e05-4288-8321-90e5-c94d1055c2dc
차근차근 트랜스포머에 읽기와 소회: https://chatgpt.com/c/695e10e2-95d4-8325-bdb9-cded4d99c71c
오토리그레시브 이미지 모델과 KV 캐시: https://chatgpt.com/c/695dd60f-b938-8321-8be2-bcdb8265bdee
CoT Faithfullness의 중요성: https://chatgpt.com/c/695d9c79-c3e4-8322-aeec-5a8cbc95ee2b
FCL, FFN, MLP, Dense Layer, Linear Layer 용어 차이: https://chatgpt.com/c/695d1cae-2b88-8322-a8cf-3b992b1f6c9c
Toy Sparse MoE: https://chatgpt.com/c/695ca60d-cc5c-8321-9cbd-1b26f72a3364
2024년에 포스팅했던 '차근차근 트랜스포머'를 Opus 4.5로 하여금 오류를 개정하고 MoE 내용까지 추가해서 윤문하도록 해봤습니다. 아마 여전히 비약이 있긴 할텐데요. 제가 심상을 유지하고 리파인해 나가기 위해 생각을 외재화 해두는 메모 정도로 사용하고자 합니다.
다른 모델들과의 대화에서 이 뒤에 진행된 내용도 많은데... 일단 FFN(ML)를 MoE로 대체했을 때 입력(히든 스페이스 또는 임베딩)에 관해 게이트가 고른 top-k의 전문가들의 응답에서 가중합을 취하는 부분과 어텐션 메커니즘이 뭔가 유사한 느낌이 있어요. 어텐션에서 QK(K는 캐시된, Q는 현재 시퀀스)로 만드는 어텐션 스코어에 캐시된 V들을 선형조합해서 V'를 만드는 것과 비슷한 부분이 있거든요. 그리고 멀티헤드의 각 V'(부분 차원에 해당하는)를 이어붙여서(concat)이고 노말라이즈해서(프리놈, 포스트놈 차이는 있지만) 전체 히든스페이스에 델타를 더해서 고차원 벡터 공간에서 방향을 바꿔가며 전진(?)해 가는 과정의 궤적이 토큰으로도 남아있고, KV로도 남아있고 한 심상( == 컨텍스트의 정체)인데요.
이게 2023, 2024년에 안드레이 카파시가 말했던
"어텐션은 의사소통 작업이라는 점을 기억하세요. 모든 토큰, 즉 1024개의 토큰이 일렬로 배치되어 있는 곳이며, 이것이 토큰들이 의사소통하는 곳입니다. 이것이 토큰들이 정보를 교환하는 곳입니다. 따라서 어텐션은 집계(aggregation) 함수입니다. 풀링 함수입니다. 가중 합산 함수입니다. 이는 리듀스(reduce) 작업입니다. 반면에 MLP, 여기서 이 MLP는 각각의 토큰에서 개별적으로 발생합니다. 토큰 간에 수집되거나 교환되는 정보가 없습니다. 그래서 Attention은 리듀스이고, MLP는 맵(map)입니다. 그래서 트랜스포머는 결국 맵 리듀스(map reduce)를 반복적으로 적용하는 것이라고 생각할 수 있습니다. 따라서 이것(attention)이 토큰들이 의사소통하는 곳이고, 이것(MLP)이 그들이 수집한 정보에 대해 개별적으로 생각하는 곳입니다. 그리고 이러한 블록 각각은 레지듀얼(잔차, residual) 스트림에서 표현을 반복적으로 개선합니다.
트랜스포머 블록 통합에 대한 랜덤한 메모: 사람들은 트랜스포머에서 반복되는 MLP와 어텐션 블록이 매우 유사하게 보이도록 재구성될 수 있으며, 통합 가능성이 있다는 사실에 보통 놀랍니다. MLP 블록은 데이터에 독립적인 {key: value} 노드에만 주목합니다. 병렬 및 직렬로 잔차 경로에 연결된 단일 유형의 블록만을 사용하는 훨씬 더 간단한 트랜스포머가 가능하지만, 제가 아는 한, 이것이 아직 확실하게 입증된 적은 없습니다. (이 연결은 새로운 것이 아니지만, 널리 알려져 있지도 않습니다. 오래 전에 같은 점을 지적한 논문을 본 기억이 있지만, 참고 문헌을 잃어버렸습니다.)
재미있는 사실은 트랜스포머의 MLP 블록이 몇 가지 차이만 제외하면 실제로 셀프 어텐션 블록과 동일하다는 것입니다: