컨텐츠 바로가기

09.17 (화)

Arm에서의 다이렉트ML 경험 "설익은 시작"

댓글 첫 댓글을 작성해보세요
주소복사가 완료되었습니다
마이크로소프트가 윈도우 코파일럿 런타임의 1차 요소를 공개했다. 그러나 사용해본 결과 버그가 많고 지원되는 모델도 거의 없어 실망스러웠다.

많이 늦긴 했지만 어쨌든 마이크로소프트 윈도우 코파일럿 런타임이 다이렉트ML AI 툴의 ARM 빌드 개발자 프리뷰를 출시하면서 한 걸음 전진했다. 아직 프로덕션에 사용할 수 있는 수준은 아니지만 이제 코파일럿+ PC의 퀄컴 헥사곤 신경 처리 장치(NPU)를 사용해 로컬 AI 애플리케이션으로 실험을 시작할 수 있게 됐다.
ITWorld

ⓒ Getty Images Bank

<이미지를 클릭하시면 크게 보실 수 있습니다>



AI를 엣지로 가져오기 위해서는 가속기 하드웨어가 필요하다. ARM 기반 코파일럿+ PC는 내장된 45TOP의 AI 가속기와 함께 번들 AI 모델, 그리고 자체 모델을 실행하기 위한 툴을 제공한다. 마이크로소프트 파이 실리카(Phi Silica) 모델을 위한 Win App SDK API는 1.7 릴리즈로 넘어갔고, 약속된 파이토치 툴도 아직 없지만 1차로 제공되는 툴만 해도 일단 코딩을 시작하는 데 도움은 될 것이다.

NPU 드라이버

다이렉트ML ARM 릴리즈의 중심은 코파일럿+ PC의 NPU를 위한 새로운 드라이버다. 이 드라이버는 오픈 뉴럴 네트워크 익스체인지(Open Neural Network Exchange: ONNX) 런타임의 새로운 빌드와 연결돼 허깅 페이스의 여러 오픈소스 모델을 지원한다. 마이크로소프트는 새로운 런타임에 바로 사용할 수 있는, 퀄컴이 최적화한 다이렉트ML 지원 모델 리포지토리를 만들었다.

하지만 지나친 기대는 금물이다. 이번 첫 릴리즈에는 툴 사용을 거의 불가능하게 하는 심각한 버그가 있으며 지원되는 모델도 적어 빌드할 수 있는 애플리케이션이 제한되기 때문이다.

윈도우 코파일럿 런타임과 새로운 ARM 코파일럿+ PC를 위한 다이렉트ML 지원은 중요한 이정표다. 다이렉트ML은 다이렉트X API 모음의 일부로, GPU와 NPU 액세스를 통해 C++와 닷넷 코드에서 하드웨어 가속기를 활용할 수 있게 해준다. 코파일럿 런타임의 기초적인 구성요소로서 ONNX 형식의 모델에 액세스할 수 있게 하고 애플리케이션 패키징과 배포를 간소화한다.

새로운 퀄컴 드라이버는 퀄컴 포털에서 다운로드해서 수동으로 설치해야 한다. 계정이 필요하며 로그인 프로세스에 다소 시간이 걸릴 수 있다. 승인 후 로그인되면 zip 파일로 된 윈도우 ARM 드라이버를 다운로드한다. 리눅스와 맥OS 버전도 있으므로 정확한 버전을 다운로드해야 한다. 다운로드한 파일의 압축을 풀고 NPU 드라이버 설치 프로그램을 실행한다. 설치 후에는 재부팅이 필요하다.

마이크로소프트는 ARM64를 위한 새로운 ONNX 및 다이렉트ML 빌드를 제공한다. 코드의 전제 조건으로 최신 버전인 1.15.2 빌드(또는 그 이상)와 다이렉트ML ONNX 런타임 1.18을 사용한다.

C++ 윈도우 코파일럿 런타임 애플리케이션 구축하기

여기까지 완료하면 새로운 드라이버의 다이렉트ML 지원을 사용해서 첫 윈도우 코파일럿 런타임 애플리케이션 구축을 시작할 수 있다. 한 가지 중요한 점은 1차로 지원되는 모델 그룹은 주로 컴퓨터 비전 모델이라는 것이다. 초기의 AI PC 가속기는 이미지 및 비디오 처리에 초점을 맞췄다는 점을 감안하면 당연하다고 볼 수 있다. NPU 드라이버와 지원되는 모델, 그리고 다이렉트ML과 같은 추상화가 앞으로 어떻게 발전할지가 흥미롭다.

마이크로소프트의 기존 다이렉트ML 샘플은 비교적 간단한 작업을 통해 최신 드라이버 빌드를 지원할 수 있으므로 관심을 가져볼 만하다. ESRGAN 모델을 사용하는 이미지 업스케일링 애플리케이션이 가장 흥미롭다. 이 애플리케이션은 라이트룸(Lightroom) 같은 사진 처리 애플리케이션에 사용되는 GPU 기반 AI 이미지 처리 툴과 같이 NPU를 사진 업스케일링이나 노이즈 제거에 어떻게 사용할 수 있는지 보여준다.

그러나 샘플이 제대로 작동하지 않았다. 다이렉트ML 리포지토리 전체를 클론한 이후 모든 것이 잘 진행될 것처럼 보였지만 문제가 발생하기 시작했다.

먼저, 필요한 파일을 빌드하려면 비주얼 스튜디오 2022에 번들로 제공되는 버전이 아닌 cmake의 독립 실행 버전이 필요했다. 독립 실행 버전을 설치하면 비주얼 스튜디오에서 cmake를 사용할 수 있고 샘플의 자체 구성이 가능하다. 코파일럿+ PC NPU를 사용하려면 애플리케이션의 ARM64 빌드를 명시적으로 선택해야 한다.

비주얼 스튜디오에 자체 깃 구현이 포함돼 있음에도 불구하고 깃허브에서 필요한 모든 다이렉트ML 헤더를 가져오려면 cmake를 위한 PATH에 독립형 깃 인스턴스가 있어야 한다. 필자는 비주얼 스튜디오에서 잘 작동하는 GUI 및 명령줄 툴이 혼합된 윈도우용 깃을 설치했다.

기반 툴의 대부분이 아직 프리 알파 단계인 만큼 버그와 누락된 기능이 있을 것으로 예상해야 한다. 누락된 기능은 큰 문제는 아니지만 모든 필수 요구사항 목록이 문서에 포함돼 있다면 도움이 될 것 같다.

여기까지 하니 코드가 컴파일됐다. 컴파일하면 즉시 사용 가능한 ONNX 모델과 함께 ESRGAN 샘플 앱 빌드가 만들어진다. 샘플을 실행하려면 명령줄을 사용해서 명시적으로 NPU를 호출해야 한다. 이로 인해 비주얼 스튜디오 디버거를 사용하기가 어렵다.

잘 실행될까?

애플리케이션은 컴파일, 실행되고 NPU도 제대로 감지하지만 지금은 ONNX 모델을 로드하는 단계에서 작동을 멈춘다. CPU에서 다이렉트ML을 사용할 때는 잘 작동하므로 NPU 드라이버의 문제로 보인다. 앞으로 나올 빌드나 다른 모델은 어떤 결과를 제공할지 흥미롭다.

첫 윈도우 코파일럿 런타임 툴이 나오기까지의 오랜 기다림을 생각하면 결과는 실망스럽다. 특히 작동이 멈추면 NPU 앱만 멈추는 것이 아니라 작업 관리자와 같은 다른 툴도 영향을 받아서, 이 상태에서 빠져나오려면 PC를 재부팅하는 수밖에 없다. 물론 곧 업데이트된 드라이버가 나오겠지만 일단 당장은 막다른 길에 들어선 느낌이다.

데스크톱에서 웹NN까지

드라이버는 개발자의 자체 코드뿐만 아니라 웹NN도 지원하도록 만들어졌다. 웹NN은 브라우저에서 ONNX를 사용하기 위한 현재 개발 중인 표준으로, 원격 서버를 사용하지 않고 로컬에서 작은 모델을 실행할 수 있게 해준다. 마이크로소프트는 엣지 브라우저에 웹NN을 실험적으로 지원하고 있으며 개발 및 카나리아 인사이더 빌드에서 플래그 설정을 통해 제공한다.

마이크로소프트는 퀄컴 NPU를 위한 다이렉트ML 지원 발표에 웹NN과 함께 다이렉트ML을 사용하기 위한 지침을 포함했다. 이 부분도 현재로서는 다소 복잡해서, 누겟 패키지에서 다이렉트ML DLL을 추출하고 적절한 엣지 디렉터리에 수동으로 설치해야 한다.

참고로 명령줄에서 개발 또는 카나리아를 실행하는 경우 블로그 게시글의 웹NN 설정 지침에 유의해야 할 서식 관련 문제가 있다. 3개 매개변수 각각의 시작 부분에 있는 em 대시는 사실 두 개의 표준 대시다. 즉, 블로그에 나온 명령줄을 그대로 복사해서 붙여넣을 경우 엣지는 ONNX 드라이버를 제대로 로드하지 않는다.

아쉽게도 샘플 다이렉트ML 애플리케이션과 마찬가지로 웹NN 모델 역시 사용하는 브라우저 버전에 관계없이 로드 및 실행되지 않았다.

마이크로소프트는 2024년 5월에 윈도우 코파일럿 런타임을 발표했고 7월에는 첫 코드가 나올 예정이었다. 이번에 처음 선보인 드라이버에 결함이 많은 것은 매우 아쉬운 일이다. 수정된 버전이 빨리 나와서 50TOP NPU에서 AI 코드를 실행할 수 있게 되기를 바란다.

그때까지는 다이렉트ML의 CPU 지원을 통해 코드를 쓰고 테스트하면서 코드와 모델이 정상 작동할 때 NPU로 전환할 준비를 할 수 있다. 이 말은 퀄컴 NPU 드라이버의 프로덕션 릴리즈, 그리고 코파일럿+ 하드웨어에 맞게 자체 모델을 튜닝하기 위한 올리브(Olive)와 같은 필수적인 툴에 대한 지원까지는 상당 기간 기다려야 함을 의미한다. 현재로서는 특히 AMD가 첫 x64 코파일럿+ PC를 발표한 만큼 마이크로소프트와 퀄컴이 빠른 시일 내에 제대로 된 드라이버를 내놓기를 기대하는 수밖에 없다.
editor@itworld.co.kr

Simon Bisson editor@itworld.co.kr
저작권자 한국IDG & ITWorld, 무단 전재 및 재배포 금지
기사가 속한 카테고리는 언론사가 분류합니다.
언론사는 한 기사를 두 개 이상의 카테고리로 분류할 수 있습니다.