Apple M3 Neural Engine, 1MiB 배수 가중치 전송에서 17-19GB/s로 급락
- Apple M3 Neural Engine은 총 가중치 크기가 1MiB의 정수 배수일 때 DRAM 가중치 스트리밍 대역폭이 통상 45-60GB/s에서 17-19GB/s로 떨어지며, ANEMLL 모델 15개 중 7개가 영향받음
- 저자는 KernelDMA의 추측적 프리페치 링에서 문제 경로를 피하도록 바꿔 Llama 3.2 1B의 토큰 처리량을 10.0에서 24.3 tokens/s로 높이고 DRAM 사용량을 24.7에서 60.0GB/s로 올렸음
- 같은 M3 Air 측정에서 텐서 차원 D=2048은 16.93GB/s였지만 D=2016은 44.5GB/s였으며, 67개 D 값과 무작위 41회 반복으로 수집한 2,747개 관측치에서 2048 주기의 대역폭 하락을 확인함
- D=2048의 배수에서는 대역폭이 17-19GB/s 수준으로 제한되고 약 256라인 떨어지면 회복됐으며, 저자는 전송 정확도 문제가 아니라 credit-starved DMA 발행 경로가 요청 처리량을 막는 RTL 성능 결함으로 설명함
- 같은 우회로 Qwen3-8B의 토큰 처리량은 1.36에서 2.97 tokens/s, DRAM 사용량은 22.4에서 48.7GB/s로 증가했음
Hacker News opinions
SystemVerilog 코드는 실제 RTL 소스가 아니라, 무슨 일이 일어난다고 보는지 설명하려고 만든 가설 아닌가? 실제 RTL 원본을 본 건지 궁금함.
페이지를 그냥 열었는데 뒤로 가기 버튼을 가로챘음. 이런 동작은 고쳐야 하고, 사이트가 해서는 안 될 일임.
브라우저 차원에서 이런 히스토리 조작을 막을 수 있어야 하는 거 아닌가 싶음.
난 HN 링크는 거의 항상 새 탭으로 엶. 이상한 다크 패턴이 보이면 그 탭만 닫으면 되니까, 같은 도메인에서 계속 그러는 곳은 결국 안 누르게 되더라.
내 쪽에서는 Safari에서만 뒤로 가기 문제가 보였음. Edge와 Firefox에서는 안 그랬는데, 브라우저가 막았거나 uBlock Origin이 막았을 수도 있음.
1MiB처럼 딱 떨어지는 크기가 나쁜 성능 조건이 되는 건 늘 이상하지만 실제로 일어남. 다만 erratum은 보통 문서의 오류 정정 공지를 뜻하는 말로 봐서, 여기서도 맞는 표현인지는 모르겠음.
M1과 M5 Max는 영향을 받지 않는다는 보고가 있음. 모든 Apple Neural Engine 세대의 문제는 아닌 듯함.
2048 차원 공진이 눈에 띄었음. 코어 경합을 먼저 배제하고 주소 패턴을 시험한 뒤 DMA 설명으로 넘어가니 추론 흐름이 훨씬 따라가기 쉬웠음.