저는 다른 곳에서 심층 분석(deep dive)을 통해 발견한 내용에 대해 글을 썼지만(Reddit은 교차 링크를 좋아하지 않기 때문에 언급하지 않겠습니다), 이곳이 AI 관련 정보를 가장 많이 배우는 곳이고, NPU에 대한 질문들이 종종 마케팅 상술로 치부되어 무시되는 것을 보았기에 이곳에 공유하고 싶었습니다(LLM의 관점에서는 대부분 그렇지만, 다른 머신러닝 (ML) 워크로드의 경우에는 그렇지 않습니다).
OpenVINO로 컴파일된 onnx-asr를 NPU에서 작동하게 만드는 과정에서 제가 발견한 함정들이 궁금하시다면 해당 기사를 읽어보셔도 좋지만, 저는 이곳에 발견한 결과들을 게시하고자 합니다.
총 시간, 총 사용 에너지(추론 중 와트(watts) 및 전사당 총 줄(Joules))를 비교한 표입니다.
| 오디오 길이 | CPU (INT8) | NPU (FP32) | 속도 향상 | 에너지 |
|---|
| 10s | 978ms / 44.6J / 45.6w | 204ms / 4.2J / 20.5w | 4.8배 빠름 | 10.7배 적은 에너지 |
| ... | | | | |
에너지는 intel-rapl을 사용하여 10Hz로 샘플링되었으며, 이는 전체 패키지 전력을 제공합니다. 여기서 실행 전 측정된 유휴(idle) 전력을 뺐으므로, 전력이 12.7w로 표시된다면 이는 유휴 상태보다 12.7w가 더 높음을 의미합니다.
Intel NPU는 서류상으로는 13TOPS로, 40TOPS 이상의 AMD 제품에 비해 상당히 약하기 때문에 이는 놀라운 결과라고 생각합니다. 하지만 이 작업에는 여전히 충분히 빠릅니다.
Home Assistant에서 측정한 실제 엔드 투 엔드 (end-to-end) 수치입니다:
CPU
NPU
이 작업을 NPU에서 실행하면 CPU가 CPU 본연의 작업을 할 수 있도록 자유로워지며, 또한 제 7900XTX에서 LLM 작업을 수행하기 위한 귀중한 2~3GB의 VRAM을 절약할 수 있습니다.
덧붙이자면, 이 설정은 실제 사용 환경에서 이전에 사용하던 12GB RTX 3060 eGPU보다 더 나은 성능을 보여줍니다. 34초 길이의 음성 명령을 처리할 때, NPU는 약 120160ms가 소요되는 반면, 이전에 사용하던 3060은 약 150~300ms가 소요되었습니다. 제가 NPU가 NVIDIA 그래픽 카드보다 더 강력하다고 주장하는 것은 아닙니다. 다만, NPU는 휴면 상태에서 즉각적으로 깨어날 수 있는 반면, NVIDIA 카드는 성능을 끌어올리는 데(ramp up) 충분한 시간이 걸리기 때문에, 스마트 홈 음성 명령과 같은 짧은 작업 부하(workload)에서는 NPU의 빠른 시작이 승리할 수 있었던 것으로 추측합니다. 긴 형식의 오디오를 전사(transcribing)하는 작업이라면 NVIDIA 카드가 다시 승리할 가능성이 매우 높습니다.
마침내 NPU의 유용한 용도를 찾아냈으며, 다음으로는 STT(Speech-to-Text) 오디오 생성을 NPU로 옮겨보고 싶습니다.
https://github.com/cibernox/wyoming-parakeet-on-intel-npu