신경망 추론의 메모리 트래픽 — 학습서
작은 모델이 칩에서 느릴 때가 있다. 파라미터가 적고 곱셈 횟수도 적은데 왜 그럴까. 답은 연산이 아니라 메모리에 있다. 추론 한 번에 메모리와 연산기 사이를 오가는 바이트, 곧 메모리 트래픽이 속도를 정하는 경우가 많기 때문이다.
이 책은 그 메모리 트래픽을 처음부터 세 가지 질문을 따라 풀어 나간다.
- 메모리 트래픽이란 무엇이고 무엇이 그 크기를 정하나.
- inverted residual 블록에서는 왜 트래픽이 늘어나나.
- 파라미터 수와 메모리 트래픽은 왜 별개인가.
기준 예시는 모바일용 합성곱 신경망 MobileNet-v2다. 추상적인 정의로 끝내지 않고, 이 모델의 실제 레이어를 한 바이트씩 세어 가며 답을 확인한다.
읽는 순서
00장부터 06장까지 차례로 읽으면 된다. 앞 장이 뒷 장의 어휘와 수치를 깔아 두므로 건너뛰지 않기를 권한다.
00 기초 어휘 → 01 한 레이어 세기 → 02 MobileNet-v2 분해 → 03 확장과 트래픽 → 04 파라미터 대 트래픽 → 05 roofline과 실무 → 06 결론.
- 00-foundations.md — byte와 자료형, 가중치와 활성값, 메모리 트래픽, 재사용, 연산강도, roofline. 책 전체의 어휘.
- 01-counting-traffic.md — 한 레이어의 트래픽을 세는 법. 작은 예제로 세 항을 직접 더한다.
- 02-mobilenetv2-worked-example.md — MobileNet-v2의 두 블록을 완전 분해하고 전체 66 MB를 쌓아 본다.
- 03-inverted-residual-why-traffic-grows.md — 확장이 트래픽을 키우는 메커니즘. 확장한 경로와 안 한 경로를 수치로 맞댄다.
- 04-params-vs-traffic.md — 파라미터가 적은데 트래픽이 큰 사례, 그리고 batch를 키울 때 무엇이 변하나.
- 05-roofline-and-practice.md — 모델이 roofline 위 어디에 앉는지, INT8과 depthwise가 왜 그렇게 되는지, 실무에서 트래픽이 줄어드는 경계.
- 06-conclusion.md — 세 질문에 대한 최종 답과 실무 정리. 결론은 이 장에 모았다.
- GLOSSARY.md — 용어 색인. 각 용어가 처음 정의된 절로 잇는다.
세 질문의 답만 빠르게 보고 싶다면 06장으로 가도 된다. 다만 그 답을 떠받치는 수치와 과정은 02~05장에 있다.
Advertisements
Chapters at a glance
- 00 · 기초 어휘 신경망이 왜 느린지 따지기 위한 어휘 일곱 개를 정의한다. byte와 자료형, 가중치 대 활성값, 메모리 트래픽 Q, 재사용, 연산강도 I=W/Q, 그리고 memory-bound를 가르는 roofline 모델을 깔아 둔다. Read
- 01 · 한 레이어의 트래픽 세기 한 합성곱 레이어의 트래픽을 '원소 수 × 자료형 byte'로 세 항(가중치·입력·출력) 더해 센다. 1×1 합성곱 예제로 활성값이 가중치를 압도함을 확인하고, 같은 레이어의 연산강도 5.1 MAC/byte까지 구한다. Read
- 02 · MobileNet-v2를 한 바이트씩 세기 MobileNet-v2의 뼈대와 inverted residual(expand·depthwise·project) 구조를 익히고, 대표 블록 둘을 한 바이트씩 분해한다. 해상도가 활성값을, 채널 폭이 가중치를 키워 같은 블록의 트래픽 성격이 정반대가 됨을 보인다. Read
- 02 02a · 전체 네트워크 트래픽 — 66 MB가 쌓이는 과정 MobileNet-v2 전체 레이어의 트래픽을 깊이를 따라 쌓아 66.18 MB를 완성한다. 활성값이 80%이며 초기 두 해상도 밴드에서 30.62 MB가 나옴을 보이고, 가벼운 모델이 추론 한 번에 옮기는 바이트의 무게를 정량화한다. Read
- 03 · inverted residual에서 왜 트래픽이 느나 inverted residual에서 트래픽이 느는 메커니즘을 푼다. expand가 만든 넓은 텐서가 트래픽에 세 번 등장하고, 채널을 못 줄이는 depthwise 탓에 활성값이 t에 비례해 커짐을 확장(t=6)·비확장(t=1) 경로 대조로 확인한다. Read
- 04 · 파라미터 수와 메모리 트래픽은 왜 별개인가 파라미터 수(정적)와 메모리 트래픽(동적)이 별개임을 worked example로 못 박는다. 파라미터가 적은 레이어의 트래픽이 더 큰 순위 역전과, batch·해상도를 키우면 가중치는 불변인데 활성값만 N배 느는 모습을 보인다. Read
- 05 · roofline 위의 MobileNet-v2, 그리고 실무 경계 MobileNet-v2의 모든 단계를 roofline에 올려 전부 memory-bound임을 보인다. depthwise 연산강도가 바닥인 이유, INT8이 트래픽을 4분의 1로·연산강도를 4배로 올리는 효과, fusion·tiling이 66 MB 상한을 줄이는 실무 경계를 짚는다. Read
- 06 · 결론 — 세 질문의 답 책이 따라온 세 질문의 답을 한자리에 모은다. 트래픽은 해상도·채널·batch·재사용이 정하고, 확장계수 t가 활성값을 키우며, 파라미터는 트래픽을 대변하지 못한다. 핵심 수치 정리표와 실무 takeaway 다섯으로 마무리한다. Read