Apple Neural Engine 역공학 하기: LLM의 병목은 연산보다 데이터 이동

5 days ago 16

신경망 전용 칩인 Apple Neural Engine(ANE)이 LLM 실행에서 GPU보다 불리해지는 이유를 내부 구조와 메모리 전송 실험으로 살펴봄 M1 ANE의 연산기는 트랜스포머에 필요한 계산도 수행할 수 있지만, 주변 구조는 같은 가중치를 반복 사용하는 이미지 처리용 신경망(CNN) 에 맞춰져 있음 LLM이 토큰을 하나씩 생성할 때는 큰 모델의 가중치를 계속 읽어야 하므로, 최대 연산 성능보다 메모리에서 데이터를 얼마나 빨리 가져오는지가 속도를 좌우함 실험에서 ANE의 가중치 읽기 경로는 약 38 GB/s, 입력 읽기 경로는 약 59 GB/s로 GPU의 약 78 GB/s보다 느렸으며, 두 경로를 함께 사용해도 전송 시간이 겹치지 않고 더해짐 드라이버를 개방하거나 연산 성능만 높여서는 이 병목을 해결하기 어려우며, 데이터 전송 경로와 실제 대역폭을 개선하는 것이 단일 토큰 생성 속도를 높이는 핵심임 다시 분석하는 이유와 범위 리버스 엔지니어링한 ANE 드라이버 개발은 3년 전 중단됐음. 범용 가속기로 활용하기에 아키텍처 제약이 컸고, Linux 드라이버로 하드웨어 API를 개방해도 처리 가능한 워크로드 종류를 넓히기 어려웠음 macOS에서도 ANE의 정기적인 활용은 주로 Finder 미리보기 이미지의 업샘플링에 그쳤음 이번 분석은 연산 실행 자체보다 연산기, 데이터 경로, 스케줄러, 메모리, 실행 모델을 복원하는 데 초점을 맞춤 A11 Bionic이 나온 2017년에 실리콘에 반영한 ML 워크로드 가정과, CNN 시대 NPU에서 트랜스포머를 실행하는 GPU로의 이동을 연결해 살펴봄 2025년 M5가 LLM 성능을 전면에 내세우고 ANE 코어를 GPU 코어 안에 통합한 변화는 독립형 NPU 쇠퇴의 시작일 수 있음 연산기: 내적은 같지만 데이터 공급 방식이 다름 M1 ANE에는 16개 연산 코어가 있으며, 코어마다 FP16 곱셈 누산(MAC) 레인 128개 또는 INT8 레인 256개가 있음 FP16 기준 총 2,048개 레인이 병렬로 s ← s + a × b를 수행함 각 레인은 시간에 걸쳐 스칼라 값을 누산하며, 내적/행렬 곱/합성곱의 차이는 피연산자를 코어에 배치하고 스케줄링하는 방식에서 생김 합성곱의 활성값 창과 커널, 어텐션의 쿼리와 키 모두 내적을 계산함. CNN 특화의 핵심은 MAC 자체가 아니라 입력과 출력이 언제 어디에 머물고 이동하는지에 있음 특히 자기회귀 디코딩은 ANE가 모바일 전력 효율을...

Read Entire Article