M1 애플 뉴럴 엔진, CNN용 데이터 흐름이 트랜스포머에 맞지 않았던 이유
- M1 ANE는 16개 코어에 코어당 128개 FP16 또는 256개 INT8 MAC 레인을 두며, FP16 기준 총 2,048개 병렬 MAC 레인이 동작함
- 각 MAC은 16비트 곱셈 결과를 Q16.16 32비트 누산기에 반복 합산한 뒤 FP16으로 읽어내며, 연산 종류는 하드웨어가 아니라 입력 배치와 스케줄링이 결정함
- 저자는 ANE가 예측 가능한 재사용이 많은 CNN 데이터 흐름을 전제로 설계돼 자기회귀 디코드처럼 재사용 패턴이 달라지는 트랜스포머에는 맞지 않았다고 분석함
- 저자는 3년 전 리눅스 ANE 드라이버 작업을 멈춘 이유로 지나치게 정해진 구조와 제한된 작업 범위를 들며, macOS도 주로 Finder 미리보기 이미지 업샘플링에 ANE를 쓴다고 적음
- 저자는 M5에서 ANE 코어가 GPU 코어 안으로 들어간 점을 독립형 NPU의 쇠퇴 신호로 해석하고, 이번 글에서는 드라이버가 아닌 M1 ANE의 연산·데이터 경로·스케줄러·메모리 구조를 추적함
Hacker News opinions
ANE와 그 데이터 파이프라인이 트랜스포머가 아니라 CNN을 겨냥했다는 걸 이제야 알았음. 왜 기대만큼 영향력이 없었는지 이해됐고, 글도 AI 슬롭이 아니라 잘 썼더라.
칩을 설계하던 애플 팀은 거의 10년 전부터 ML 워크로드가 어디로 갈지 모르는 상태에서 결정해야 했을 텐데, 그 불확실성이 꽤 컸을 것 같음.
임베디드 ARM/RISC MCU용 신경망 엔진도 비슷한 문제가 있음. 컨볼루션 블록에서 성능을 내려면 프로파일링이 많이 필요했고, 예전에는 슈퍼넷에 NAS를 써서 최적화했음.
ANE가 취소된 애플 자율주행차 프로젝트에서 나왔다는 보도가 여럿 있었음. 비전용 CNN과 잘 맞고, 애플은 10년간 약 100억 달러를 쓴 연구 결과를 아이폰과 맥에 재활용한 셈임.
M4 ANE를 다룬 다른 역공학 글과는 어떻게 연결되는지 궁금함. M4 이후에 새 기능이 생긴 건지, 같은 구조의 성능 개선판인지 알고 싶고, 글 서두는 ANE와 M5 GPU의 NAX를 같은 것으로 보는 듯함.
M4 글은 Claude가 썼고 이 글은 사람이 썼음. 내가 알기로 M4는 INT8 가중치와 활성값용 w8a8 빠른 경로를 넣었고, M5 Ultra와 M6, A20에는 ANE가 2개임. NAX는 NVIDIA 텐서 코어에 더 가까운 GPU 행렬곱 가속기라 ANE와 다름.
트랜스포머를 ANE에 포팅했을 때 작업 대부분은 CNN인 척하게 만드는 일이었음. 시퀀스를 마지막 축에 둔 4차원 텐서와 행렬곱 대신 1x1 컨볼루션을 썼음.
애플은 가을에 Core ML보다 범위를 넓힌 Core AI 프레임워크를 내놓을 예정임. CPU, GPU, Neural Engine에서 최신 모델 구조와 추론 기법을 쓰게 한다고 설명함.