NPU의 특징 :



하드웨어별로 구현 다르고 지원하는 레이어, 넓이 다 다름


같은 모델을 집어 넣어도 어떤 레이어는 NPU에선 빨리 돌아가고 어떤부분은 느리게 돌아갈 수 있음

같은회사 NPU라도 세대별로 다름.


AI 모델이 통째로 NPU에서 돌아가는 경우는 드물고 어떤 레이어는 CPU에서 받아서 처리하기 때문에 경우 따라 병목도 생김


어떤 레이어는 그냥 CPU에서 전용 AI 유닛 넣고 처리하는게 더 빠름(CPU에 주어진 메모리 대역폭이 커서)





Whisper 같은 음성-텍스트 모델만 해도 수백가지의 레이어로 구성되어 있고


이게 NPU 성능 십분 활용하면서 돌아가게 하려면

해당 하드웨어에 아주 해박한 엔지니어가 제대로 된 프로파일링 도구 써가면서 머가리 싸매고 최적화 시켜야함



최신 퀄컴칩은 모르겠지만 NPU 구조 제대로 공개하는 기업은 없어서 (어차피 아무도 안할거 아니까 ㅋㅋ)

덕후들이 일일이 NPU 벤치마크 돌려보면서 어떤 형태로 구성되어 있나 추정하기도 함



24b0d121e09c28a8699fe8b115ef046f5c449096ac

레이어들의 "극히" 일부분이 이정도




당연하지만 저렇게까지 해서 개발하는 개발자는 없음 ㅋㅋ


제대로 최적화 하려면 칩셋별로 다른경우 많으니 



현재 모바일 앱에서 쓰는 대부분 AI 모델들 (얼굴인식, 번역, 이미지 인식 등등)은 너무나 작고 단순해서 그냥 CPU에서 쌩으로 돌리는 경우가 많음


내가 말하는건 기본 수백메가 하는 대형 모델들임



퀄컴도 엔지니어들이 아무도 관심가지지 않으니까 상용 모델들을 자기들이 직접 컨버팅해서 올리는 작업을 진행중





애플 엔지니어들은 NPU라는 물건이 얼마나 복잡하고 다루기 어렵고,


실질적으로 활용되지 못할거라는걸 아주 오래전부터 예상하고 있었음




애플 뉴럴엔진과 CoreML은 아주 신박한 방식으로 동작하는데, Coreml tools를 이용해서 상용 AI 모델을 CoreML 포맷으로 변환하고 앱에 적용후 배포하게 되면

사용자 기기에 설치된 앱의 CoreML 포맷 AI 모델은


사용자의 칩셋의 CPU, NPU, GPU 구성에 가장 최적화된 형태로 레이어가 재구성되어서 컴파일이 진행됨...

개발자는 각각 기기에 최적화를 따로 할 필요가 없음


만능은 아니라서 사전에 모델을 애플의 포맷에 맞게 제대로 최적화 하는건 여전히 성능향상에 중요함



아주 혁신적인 방식이고, 타사들은 퍼스트파티 기능, 혹은 마케팅으로 소모하는 NPU를 진짜 제대로 활용하는건 애플인 이유

가벼운 모델을 쓰는 대부분 앱들도 타사 플랫폼보다 훨씬 효율적으로 돌아갈 수 있다는 장점이 있음



물론 라마3, 파이3, 같은 온갖 최신 모델들을 아이폰에서 돌리는 기행이 펼쳐질 수 있는 이유이기도 하고


이 방식이 혁신적인게, 애플이 더 나은 최적화 기법을 찾아낸다?

그럼 AI 모델을 쓰는 앱들이 다시 컴파일되고 성능이 전부 오름


iOS 18에서도 애플이 새로운 최적화 기법을 찾아내서 성능이 크게 상승함


이건 오픈AI의 Whisper 모델을 돌리는 앱인데
Whisper-Base-En 모델 기준 iOS 18 업데이트 이후



초당 165토큰에서 237토큰으로 40% 넘는 성능향상을 보임...




반면 퀄컴 엔지니어들이 동일한 Whisper-Base-En 모델을 머리 싸매가며 최적화 시킨 결과는?


24b0d121e09c28a8699fe8b115ef046541a8fc3ef1

최신 갤럭시 S24 기준 토큰당 18.6ms = 초당 53토큰 ㅋㅋㅋㅋ


A17 대비 4배 이상 느림


0a8ce808f0c30fa4799ef7f833e82b73b85491b63162fb317672d5923fc330


노트북에 들어가는 퀄컴 X 엘리트는 13.8ms = 72tok/s


A17 대비 3배 이상 느리다




이게 현실이야


그래서 NPU TOPS 수치로 딸딸이 치는건 아무 의미가 없다는거고


마이크로소프트 같은 대기업들이 논문에서 자사 최신 모델을 왜 아이폰용으로 이식하고 퀄컴엔 시도조차 안하는지 알겠지?



페라리 엔진이 5000 RPM으로 도는거랑 그랜저 엔진이 5000 RPM으로 도는게 다르듯이

NPU는 특히나 HW specific한 설계 사상으로 만들어지는거라 얼마나 다양한 모델, 데이터타입을 지원하는지가 중요하지

TOPS는 그냥 대충 그렇구나 하고 흘려듣는게 맞아