
【개략적 정리】DirectML이란 무엇인가? Windows의 AI 관련 관점에서 바라보기
요약
DirectML은 Windows 환경에서 DirectX 12 호환 하드웨어를 활용해 머신러닝 추론을 가속화하는 저수준 API입니다. 모델 전체를 관리하기보다 레이어 단위의 연산을 GPU에서 효율적으로 실행할 수 있도록 돕는 역할을 합니다.
핵심 포인트
- DirectX 12 기반의 하드웨어 가속을 지원하는 저수준 머신러닝 API
- GPU 및 NPU 등 다양한 하드웨어 리소스를 추상화하여 활용 가능
- 모델의 연산 프리미티브(Operator)를 직접 제어하여 고성능 구현 가능
- 게임 엔진이나 실시간 렌더링 파이프라인 내 AI 통합에 적합
Windows의 AI 관련 내용을 조사하다 보면, DirectML, Windows ML, ONNX Runtime, NPU, GPU 등의 용어가 근처에서 자주 등장합니다.
이 기사에서는 그중에서도 DirectML이란 무엇인가를 개략적으로 정리합니다.
먼저 한마디로 말하자면, DirectML은 Windows 상의 머신러닝 (Machine Learning) 처리를 DirectX 12 호환 하드웨어에서 고속으로 실행하기 위한 저수준 API (Low-level API) 입니다.
참고로, 2026년 6월 시점에서는 Microsoft Learn에서도 DirectML은 "sustained engineering", 즉 지원은 계속되지만 신기능 개발의 중심은 Windows ML로 옮겨가고 있다는 위치로 설명되어 있습니다. 이 기사도 그 전제를 바탕으로 정리합니다.
DirectML은 정식 명칭으로 Direct Machine Learning의 약자입니다.
Microsoft의 설명에 따르면, DirectML은 머신러닝을 위한 저수준 API이며, DirectX 12 스타일의 C++ API로 제공됩니다. 특징은 DirectX 12 호환 하드웨어 상에서 머신러닝 연산을 하드웨어 가속 (Hardware Acceleration) 할 수 있다는 점입니다.
개략적으로 말하면 다음과 같은 역할을 합니다.
- Windows 앱에서 머신러닝 추론 (Inference) 처리를 실행
- GPU 등 DirectX 12 호환 하드웨어를 사용하여 고속화
- 특정 벤더 전용 API가 아니라, Windows/DirectX의 추상화를 통해 다룸
- Direct3D 12의 리소스 (Resource), 커맨드 큐 (Command Queue), 커맨드 리스트 (Command List)와 유사한 개념으로 다룰 수 있음
포인트는 DirectML이 "학습된 모델을 알아서 전부 관리해 주는 고수준 AI SDK"라기보다, 추론 연산을 Windows의 GPU 실행 기반으로 흘려보내기 위한 저수준 부품이라는 점입니다.
DirectML은 머신러닝 모델을 구성하는 각 레이어 (Layer)의 처리를 operator라고 불리는 연산 프리미티브 (Primitive)로서 실행합니다.
예를 들어, 공식 문서에서는 다음과 같은 연산자 카테고리를 들고 있습니다.
- ReLU, sigmoid, tanh 등의 Activation
- add, max, min 등의 Element-wise 연산
- 2D/3D Convolution
- Pooling
- GEMM, GRU, LSTM, RNN 등의 뉴럴 네트워크 (Neural Network) 계열 연산
즉, DirectML은 모델 전체를 "마법의 상자"로 다루기보다는, 모델을 구성하는 연산을 GPU 상에서 효율적으로 실행하기 위한 레이어입니다.
그만큼 DirectML을 직접 사용할 경우에는 개발자 측의 책임도 커집니다. 모델의 해석과 DirectML의 operator/그래프 (Graph)로의 변환, 가중치 (Weight) 로드, 리소스 할당, 바인딩 (Binding), 메모리 관리, 동기화 (Synchronization), 배리어 (Barrier) 등은 상당히 Direct3D 12에 가까운 입도로 생각해야 합니다.
레이어 단위로 실행할 경우에는 operator의 실행 순서나 스케줄링 (Scheduling) 도 개발자가 제어합니다. 반면, 그래프로서 실행할 경우에는 개별 operator의 순서 결정이나 기록을 DirectML에 맡길 수 있습니다.
DirectML을 직접 사용하는 것이 적합한 경우는 상당히 저수준으로 제어하고 싶은 상황입니다.
예를 들어, 게임 엔진이나 실시간 렌더링 (Real-time Rendering) 파이프라인 안에 추론 처리를 포함시키고 싶은 경우입니다. 이미지 업스케일링 (Upscaling), 노이즈 제거 (Denoising), 안티앨리어싱 (Anti-aliasing), 스타일 변환 (Style Transfer)과 같은 처리를 기존의 Direct3D 12 렌더링 처리와 유사한 위치에서 구동하고 싶을 때는 DirectML의 저수준성이 빛을 발합니다.
반면, 일반적인 애플리케이션에서 "ONNX 모델을 불러와서 추론하고 싶다"는 목적이라면, DirectML을 직접 호출하기보다 ONNX Runtime이나 Windows ML을 경유하여 사용하는 것이 더 자연스러운 경우가 많습니다.
DirectML은 ONNX Runtime의 Execution Provider로도 사용할 수 있습니다.
ONNX Runtime에는 추론 실행 대상을 전환하는 메커니즘이 있습니다. CPU, CUDA, TensorRT, DirectML 등이 Execution Provider로 준비되어 있으며, DirectML Execution Provider를 사용하면 ONNX 모델의 추론을 Windows 상의 DirectML을 통해 GPU로 실행할 수 있습니다.
이 경우, 앱 측에서는 DirectML의 저수준 API를 직접 다루지 않고, ONNX Runtime의 API를 통해 DirectML을 사용하는 형태가 됩니다.
이미지로는 다음과 같은 관계입니다.
DirectML을 「Windows GPU를 위한 실행 기반」으로 사용하고, ONNX Runtime을 「모델을 불러와 추론하기 위한 런타임 (Runtime)」으로 사용한다고 생각하면 이해하기 쉽습니다.
이 부분이 조금 까다로운 지점입니다.
현재 Microsoft의 Windows AI 관련 문서에서는, Windows용 ONNX Runtime 배포 (Deployment)의 신기능 개발은 Windows ML 쪽으로 옮겨갔다고 설명되어 있습니다.
Windows ML은 ONNX Runtime을 기반으로 한 Windows용 로컬 AI 추론 프레임워크입니다. NPU, GPU, CPU와 같은 실행 대상을 Windows가 관리하는 실행 제공자 (Execution Provider, EP)를 통해 사용할 수 있도록 하는 방향의 메커니즘입니다.
특히 Windows 11 version 24H2 이후로는, NPU나 특정 GPU를 위한 하드웨어 최적화 실행 제공자 (Execution Provider)도 Windows ML 측에서 다루는 흐름이 되고 있습니다.
따라서 2026년 시점에서 대략적으로 구분한다면, 다음과 같이 보는 것이 좋습니다.
- DirectML: DirectX 12에 가까운 저수준 (Low-level) 머신러닝 가속 API
- ONNX Runtime + DirectML EP: ONNX 모델을 DirectML을 경유하여 GPU로 실행하는 방법
- Windows ML: Windows용 ONNX 추론 앱에서 CPU/GPU/NPU 등의 실행 대상을 다루는 입구
Windows의 AI 관련 분야에서는 NPU에 대한 이야기도 많기 때문에, DirectML을 현재의 NPU용 API로 생각하고 싶어질지도 모릅니다.
DirectML은 공식적으로 DirectX 12 호환 GPU 상에서 머신러닝 워크로드 (Workload)를 실행하는 저수준 하드웨어 추상화 계층 (Hardware Abstraction Layer)으로 설명됩니다.
공식 개요에는 사용 가능한 경우 AI 가속 코어 위에서도 모델의 각 레이어 (Layer)를 실행한다고 기재되어 있습니다. 다만, 이것이 DirectML이 현재 Windows에서의 범용적인 NPU용 API라는 의미는 아닙니다.
실무상으로는 DirectML을 DirectX 12를 통해 GPU 가속을 이용하는 저수준 API로 파악하고, NPU를 포함한 여러 실행 대상을 다루는 경우에는 Windows ML과 벤더 최적화 실행 제공자 (Execution Provider)를 확인하는 것이 안전합니다.
현재의 Windows ML에는 CPU와 DirectML 실행 제공자 (Execution Provider)가 내장되어 있을 뿐만 아니라, 대응하는 환경에서는 NPU나 특정 GPU를 위한 벤더 최적화 실행 제공자를 취득하여 이용할 수 있습니다.
Windows AI 전체의 흐름으로 보면, NPU를 포함한 여러 실행 대상으로 ONNX 모델을 전개하고 싶다면 Windows ML을 확인하고, DirectX 12와 밀접하게 연계된 저수준 제어가 필요하다면 DirectML을 본다는 식으로 정리하는 것이 이해하기 쉬울 것입니다.
목적별로 상당히 거칠게 나누면 다음과 같습니다.
| 하고 싶은 것 | 먼저 볼 것 |
|---|---|
| Windows 앱에서 ONNX 모델을 GPU·NPU·CPU로 전개하고 싶다 | Windows ML |
| ... |
DirectML은 중요한 토대이지만, 지금부터 Windows용 ONNX 추론 앱을 만든다면 「DirectML을 직접 사용할 것인가」보다 「Windows ML이나 ONNX Runtime을 경유하는 것으로 충분한가」를 먼저 생각하는 것이 좋을 것 같습니다.
DirectML에 대해 대략적으로 정리하면 다음과 같습니다.
- DirectML은 Windows 상의 머신러닝 추론을 DirectX 12 호환 하드웨어로 가속하는 저수준 API
- Direct3D 12에 가까운 개념으로, 리소스나 실행 제어를 세밀하게 다룰 수 있음
- ONNX Runtime의 DirectML 실행 제공자 (Execution Provider)를 통해 DirectML을 간접적으로 사용할 수도 있음
- 2026년 시점에서는 DirectML은 지원이 계속되지만, 신기능 개발의 중심은 Windows ML로 옮겨가 있음
- 신규 Windows용 ONNX 추론 앱에서는 우선 Windows ML을 확인하고, 필요에 따라 ONNX Runtime + DirectML EP나 DirectML의 직접 이용을 검토하는 것이 좋을 것 같음
개인적으로는 DirectML을 「Windows AI의 겉으로 드러나는 기능」이라기보다, Windows에서 하드웨어 가속된 AI 추론을 성립시키기 위한 저수준의 발판이라고 생각하면 이해하기 쉽다고 느꼈습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기