애플 신경망 엔진에서 역전파를 실행하는 연구 코드
맥북의 칩 안에서 신경망이 스스로 학습하는 과정을 직접 관찰할 수 있습니다. 애플이 추론만 허용하는 신경망 엔진(ANE)의 비공개 API를 역공학하여, 학습에 필요한 역전파 연산까지 칩 위에서 돌리는 방법을 보여줍니다. 이는 하드웨어의 잠재력을 소프트웨어가 얼마나 제한하고 있는지 확인하는 실험실과 같습니다.
추론 전용 칩에 학습을 더하다
애플 실리콘의 신경망 엔진은 공식적으로 추론만 지원합니다. 이 프로젝트는 비공개 API를 역공학하여 이 제한을 넘어서고자 합니다. 목표는 하드웨어가 학습을 할 수 있는지, 그리고 그 장벽이 소프트웨어인지 확인하는 것입니다. 주말에 시작된 연구가 현재는 작은 모델 학습까지 가능함을 증명했습니다. 이는 생산용 프레임워크가 아니라, 가능성의 경계를 시험하는 개념 증명입니다.
역공학으로 여는 비공개 경로
공식 API가 아닌 _ANEClient와 _ANECompiler를 직접 호출하여 모델을 컴파일하고 실행합니다. 모델 중간 언어 형식을 분석하여 커스텀 연산 그래프를 칩에 올립니다. 가중치가 바뀌어도 다시 컴파일하지 않는 동적 파이프라인을 구현했습니다. 이를 통해 전방 전파와 역전파의 대부분을 칩 위에서 처리합니다. 가중치 기울기 계산만 CPU에서 수행하여 병목 현상을 줄였습니다.
측정된 성능과 한계
이는 GPU 학습을 대체할 수준은 아니지만, 칩 자체의 연산 능력을 확인하는 지표입니다. INT8 양자화를 적용하면 처리량이 1.88배 빨라집니다. 128x 컨볼루션 512채널 64x64 설정에서 FP16 대비 35.1 TOPS를 기록했습니다. 메모리 대역폭을 절반으로 줄여 성능을 끌어올립니다. 칩의 피크 성능 대비 활용도는 5~9% 수준입니다. 많은 연산이 여전히 CPU로 넘어가며, 대형 모델 학습에는 적합하지 않습니다. 컴파일러 리소스 누수 문제로 프로세스 재시작이 필요합니다.
실험을 위한 준비물
macOS 15 이상과 Apple Silicon 칩이 필요합니다. 외부 의존성 없이 시스템 프레임워크와 비공개 API만으로 동작합니다. TinyStories 데이터셋을 사전 토큰화하여 다운로드해야 합니다. 빌드 시 모델 종류를 지정하여 컴파일합니다. 이 코드는 연구 및 교육 목적으로만 사용해야 하며, 애플의 비공개 API를 사용하므로 업데이트 시 깨질 수 있습니다.
이 코드를 만져볼 사람
하드웨어 아키텍처에 관심이 있는 연구자나, 비공개 API를 탐구하는 개발자에게 적합합니다. 생산 환경에 바로 쓰기는 어렵습니다. 유지보수가 느리고 기능 요청에 대한 응답이 제한적입니다. MIT 라이선스이므로 자유롭게 포크하고 수정할 수 있습니다. 칩의 한계를 직접 확인하고 싶은 사람에게만 권합니다.