핵심 요약
- 인텔 메테오레이크 프로세서의 NPU(NPU3720)에서 직접 작성한 C 커널을 컴파일해 실행할 수 있는 오픈소스 프로젝트 'npunlock'이 공개되었습니다.
- 인텔 공식 스택에서는 막혀 있던 NPU 내부 SHAVE 코어를 레거시 툴체인 등을 활용해 커스텀 연산에 활용할 수 있도록 경로를 복원했습니다.
- 현재 윈도우 x64 환경에서 FP32 및 FP16 정적 연산을 지원하며 Python 환경에서 직접 C 코드를 임베딩해 구동할 수 있습니다.
요약 인텔의 메테오레이크(Core Ultra) 프로세서에 탑재된 NPU에는 원래 프로그래밍이 가능한 SHAVE 코어가 내장되어 있지만, 인텔의 공식 소프트웨어 스택은 일반 개발자가 연산자(커널)를 직접 C 언어로 작성하는 기능을 제공하지 않고 오직 상위 레벨의 그래프 형태만 지원해 왔습니다.
이러한 한계를 우회해 개발자가 직접 C 언어로 커스텀 커널을 작성하고 인텔 NPU3720 하드웨어 위에서 실행할 수 있도록 연결해 주는 오픈소스 프로젝트 'npunlock'이 공개되었습니다. 이 프로젝트는 인텔의 기존 컴파일러와 드라이버 생태계를 유지하면서도, NPU 내부의 ACT-SHAVE 프로세서가 사용자 작성 머신 코드를 실행할 수 있도록 누락되었던 컴파일 및 런타임 경로를 재구성했습니다.
현재 윈도우 x64 환경과 메테오레이크 NPU3720에서 검증되었으며, 레거시 레노버 NPU 드라이버 패키지에 포함되어 있던 인텔/모비디우스(MoviTools) 툴체인을 추출해 C 코드를 컴파일하는 방식을 취하고 있습니다. 사용자는 Python 코드 내에 C 언어로 작성된 커널(예: GELU 활성화 함수)을 인라인으로 정의하고, 이를 인텔 NPU 그래프에 탑재해 NumPy 결과와 오차를 검증하는 방식으로 연산을 돌릴 수 있습니다.
지원 현황으로는 FP16 단항 및 2입력 커널, FP32 단항 연산, 비선형 수학 함수(tanhf 등) 연산이 가능하며, OpenVINO를 런타임 프론트엔드로 요구하지 않고 드라이버가 인식하는 IR 형식을 직접 생성합니다. 다만 아직은 정적 텐서 형태(static shape)만 지원되고 특정 캐리어에 의존하는 등 초기 실험 단계의 제한 사항들이 남아 있습니다.
Sponsored · 광고