본문 바로가기
C.W.K.
Stream
Lesson 02 of 05 · published

세 가지 계산 방식

~12 min · paradigms, parallel, recurrent, chunkwise

Level 0관찰자
0 XP0/50 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

같은 매개변수를 세 방식으로 실행해

RetNet이 내세운 공학적 장점은 한 번 학습한 매개변수를 서로 호환되는 세 가지 방식으로 실행할 수 있다는 거야. 상황마다 가장 알맞은 방식을 고르면 돼.

병렬 방식(O(n²))은 어텐션처럼 n×n 점수 행렬을 만들고 지수 감쇠 마스크를 적용한 뒤 V와 곱해. 전체 시퀀스를 한 번에 다루며 GPU 병렬성을 최대한 쓰고 싶을 때 학습용으로 사용해. 표준 어텐션처럼 행렬 곱에 잘 맞는 형태야.

순환 방식(토큰당 O(1))은 상태 s를 유지하면서 토큰마다 갱신해. 자기회귀 추론에 사용하고 메모리와 계산량이 토큰마다 일정해. 긴 문맥 생성에서 유리한 방식이야.

청크 단위 순환 방식(O(N·B))은 시퀀스를 크기 B인 청크로 나눠. 청크 안에서는 병렬 방식을 쓰고, 청크 사이에서는 마지막 상태를 다음 청크로 넘겨 순환을 이어가. 긴 시퀀스 학습과 긴 프롬프트의 프리필에 알맞아. GPU 병렬성을 어느 정도 유지하면서 하나의 어텐션 행렬에 담을 수 없는 시퀀스를 처리할 수 있어.

청크 단위 방식이 둘 사이의 다리야

병렬 형태와 순환 형태를 함께 가진 아키텍처는 많아. RetNet이 실전에서 규모를 키울 수 있게 만드는 건 청크 단위 방식이야. 이 다리가 없으면 긴 시퀀스에서 O(n²) 메모리를 내거나 GPU 병렬성을 거의 포기해야 해. 청크 단위 처리는 두 극단 사이에 실제로 쓸 만한 절충점을 만들어.

벤치마크 수치도 컸어

원본 논문은 6.7B 규모에서 비슷한 Transformer보다 디코딩이 8.4배 빠르고, 메모리는 70% 적게 쓰며, 학습은 7배 빠르다고 보고했어. 측정한 조건에서는 실제 수치야. 다만 오늘날 FA3와 GQA로 최적화한 같은 규모의 Transformer와 비교해도 그대로인지는 어떤 기준 모델을 고르느냐에 달렸어.

External links

Exercise

이전 레슨에서 만든 병렬·순환 retention 구현에 청크 단위 방식을 추가해. 길이 1024인 시퀀스를 128토큰 청크로 나누고 병렬 방식과 출력이 같은지 확인해 봐. 청크 경계에서 상태가 어디로 넘어가는지 직접 보는 게 핵심이야. 그 지점이 세 가지 계산 방식을 실제로 맞물리게 만드는 공학적 기법이거든.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.