Nvidia's RTX Spark has an NPU it barely mentions, and I spent a week figuring out what it actually is
엔비디아 RTX Spark의 잘 알려지지 않은 NPU, 일주일간 파헤친 정체
RTX Spark의 55 TOPS NPU는 실제 연산 장치이며, 구조와 성능 측정 결과 Nvidia DLA 계열일 가능성이 큽니다. 다만 INT8에서도 약 6 TOPS에 그쳤고 Windows 지원도 초기 단계입니다. GB10에서 같은 장치가 비활성화됐는지는 확인되지 않았습니다.
- 주제
에디터 노트
측정에서 가장 분명한 결과는 NPU가 독립 연산 장치라는 점과 현재 구현의 성능이 Nvidia가 내건 TOPS 수치에 크게 못 미친다는 점입니다. 작성자는 INT8 작업을 직접 실행해 정확한 결과를 확인했지만 처리량은 약 6 TOPS였고, ResNet-50에서도 FP16보다 빨라지지 않았습니다. 다만 하이브리드 모드만 쓸 수 있어 GPU 전력까지 포함한 효율은 실리콘 자체의 효율과 구분해야 합니다. 댓글에는 NPU가 GPU보다 약하니 쓸모없다는 반응과 저전력 백그라운드 작업에 맞는 장치라는 반론이 함께 있습니다. 후자는 이 글의 전력 측정과 용도에 부합하지만, RTX Spark에서 Copilot+ 기능이 아직 동작하지 않고 앱이 NPU에 접근할 경로도 부족하다는 조건이 남습니다. GB10 펌웨어가 DLA를 비활성화한다고 확인했어도 실제 칩에 장치가 있는지, 활성화할 수 있는지는 결론 내리지 못했습니다. 따라서 현재 확인된 성능과 Nvidia가 제시한 최고 수치를 같은 기준으로 비교하기는 어렵습니다.
AI 요약
RTX Spark에 탑재된 NPU는 Windows에서 별도 장치로 인식되지만 Nvidia는 구조와 사용 방법을 거의 공개하지 않았습니다. 작성자는 펌웨어와 드라이버, 베타 개발 도구를 조사하고 직접 신경망을 실행해 장치의 정체와 현재 성능을 확인했습니다.
장치의 정체와 실행 방식
펌웨어에는 DLA0 장치와 자체 레지스터 영역, 인터럽트가 정의돼 있습니다. 드라이버와 성능 카운터에는 DLA 연산 유닛 네 개와 Rubik 데이터 변환 장치, RISC-V 벡터 유닛(RVV) 관련 코드가 나타납니다. 작성자는 TensorRT와 cuDLA를 조합해 네트워크를 실행했고, NPU 사용률은 오르는 동안 GPU 연산 코어는 쉬는 것을 확인했습니다. GPU Tensor Core 작업과 NPU 작업을 동시에 실행했을 때 양쪽 처리량도 떨어지지 않았습니다. 따라서 NPU가 GPU를 가장해 작업을 넘기는 장치가 아니라 자체 연산 하드웨어라는 근거를 확보했습니다.
다만 일반적인 Windows 앱이 바로 쓸 수 있는 상태는 아닙니다. cuDLA의 독립 실행 모드는 작동하지 않아 GPU CUDA 스트림을 거치는 하이브리드 모드가 필요합니다. TensorRT 11.4 베타는 Windows on Arm에서만 DLA 지원을 제공하며, 배치 크기는 1로 고정되고 입력 크기는 정적이어야 합니다. 모든 레이어가 DLA에서 실행돼야 하며 GPU 폴백도 허용하지 않습니다.
처리량과 전력 측정
FP16 합성 벤치마크에서 NPU는 약 5.2 TFLOPS를 기록했습니다. 작업 하나에 여러 레이어를 묶으면 최대 6.07 TFLOPS까지 나왔습니다. ResNet-50은 FP16에서 이미지당 11.8ms가 걸렸고, 20코어 CPU의 FP32 실행 시간인 42.4ms보다 빨랐습니다. 다만 두 실행은 정밀도가 달라 직접적인 동등 비교는 아닙니다. 실제 ResNet-50 처리량은 0.65 TFLOPS로 합성 벤치마크보다 크게 낮았습니다.
Nvidia는 NPU가 55 TOPS라고 밝혔지만, 작성자가 TensorRT를 우회해 INT8 네트워크를 직접 컴파일한 결과는 약 6 TOPS였습니다. ResNet-50 INT8 실행도 13.6ms로 FP16의 11.8ms보다 느렸습니다. INT8 설정은 하드웨어 레지스터에 반영됐지만 처리량은 FP16과 거의 같았습니다. 따라서 광고된 50~55 TOPS가 어떤 조건에서 나오는지는 현재 결과만으로 설명되지 않습니다. Nvidia는 향후 백서에서 TOPS 수치를 설명하겠다고 답했습니다.
전력 측정에서는 NPU 레일만 계산하면 FP16 효율이 1.85 TOPS/W로 GPU의 1.59 TOPS/W보다 약 16% 높았습니다. 그러나 하이브리드 모드에서 GPU가 대기하며 쓰는 전력까지 합치면 NPU 시스템 효율은 0.85 TOPS/W로 내려갔습니다. 이 측정은 특정 작업과 현재 소프트웨어 구현에 한정되며, 독립 실행 모드가 작동하지 않는 점도 결과에 영향을 줍니다.
DLA 구조와 GB10의 미확인 상태
드라이버와 펌웨어의 RISC-V 코드, 연산 장치 명칭은 Nvidia가 2024년 발표한 DLA 설계와 맞아떨어집니다. 다만 Nvidia가 RTX Spark의 구조를 공식 확인하지는 않았습니다. DGX Spark의 GB10 펌웨어에는 DLA 비활성화 설정이 기록돼 있고, 조사한 43개 GB10 펌웨어도 DLA 설정을 기본 비활성화 상태로 숨깁니다. 반면 실제 실리콘에 DLA가 들어 있는지, 설정을 바꾸면 활성화되는지는 확인하지 못했습니다.
Windows에서도 Copilot+ 인증 외에 쓸 수 있는 기능은 제한적입니다. DirectML은 NPU를 지원하지 않고, Nvidia의 실행 경로도 아직 공개되지 않은 구성 요소와 베타 소프트웨어에 의존합니다. 공개된 통합 경로는 양자화 모델의 INT8 가중치를 FP16으로 변환해 실행하므로 직접 확인한 INT8 연산 능력도 활용하지 않습니다. Copilot+의 Recall, Click to Do, 기기 내 의미 검색도 출시 시점에는 사용할 수 없었습니다.
Reddit 반응
- @Silentparty1999 — 자세한 글이네요. 유용한 정보입니다.
- @EvenBroaderBand — NPU는 'Hey Siri'를 듣는 것 같은 저전력 작업용입니다. RTX Spark GPU는 AI 작업에서 NPU를 압도합니다. 사람들은 NPU의 용도를 잘 모릅니다. NPU는 너무 약해서 아주 단순한 모델도 겨우 실행하며, 하드웨어 애호가에게는 늘 더 나은 대안이 있으니 지금은 전혀 흥미롭지 않습니다.
- @lightmatter501 — NPU는 '그 밖의 모든 것'을 맡는 범주입니다. 그 안에는 원시 연산 성능만 놓고 보면 현세대 데이터센터 GPU를 제외한 거의 모든 장치를 압도하는 작업도 있습니다.
- @jenny_905 — 실리콘을 NPU에 낭비하는 이유가 뭔가요? 실제로 쓰는 사람이 있나요?
- @zerinho6 — 휴대전화에서는 전력 절감 측면이 이해됩니다. 하지만 콘솔이나 데스크톱에서는 왜 그 공간을 캐시로 만들지 않는지 모르겠습니다.
- @Luggage-Lock — NPU는 실리콘 면적을 거의 차지하지 않으며, 5%보다 훨씬 적습니다. 백그라운드 AI 작업을 효율적으로 처리해 전력을 낮추고 GPU 자원도 아껴 전체 성능을 높입니다. Teams의 배경 흐림 같은 운영체제·제조사 기능이나 보안 소프트웨어가 활용하며, 기업 환경에서 특히 유용합니다.
- @Spiral1407 — 제가 NPU가 켜진 걸 보는 때는 Teams 통화 중뿐입니다.
원문: XDA Developers / 번역·요약: Trawling