본문 바로가기

AI 소식

DirectML 2.0 + WSL 3 완전 가이드 — Windows가 드디어 ML 개발 환경으로 쓸 만해진 이유

반응형

Windows에서 AI 개발하는 개발자들의 공통 불만이 있었어요.

"PyTorch가 WSL에서 느려서 결국 리눅스 듀얼부팅 쓴다." "NPU가 있어도 Intel이냐 AMD냐 Qualcomm이냐에 따라 코드가 달라진다."

Build 2026에서 Microsoft가 이 두 문제를 동시에 해결했어요. DirectML 2.0으로 NPU 파편화를 없애고, WSL 3으로 Linux ML 워크로드 성능 패널티를 거의 제거했어요.


🔑 핵심 요약

DirectML 2.0 + WSL 3이란? → DirectML 2.0: Intel·AMD·Qualcomm NPU 단일 추상화 레이어 → WSL 3: Linux 커널을 경량 VM으로 재아키텍처, GPU/NPU 패스스루 → WSL 3 성능: 베어메탈 Linux 대비 3~5% 느린 수준 (WSL 2 대비 대폭 개선) → 목표: Windows에서 PyTorch/JAX/CUDA 워크로드 리눅스 머신 없이 실행 → ONNX Runtime + DirectML + Copilot Runtime → 단일 NuGet 패키지 통합 예정 → Copilot+ PC NPU (40+ TOPS) 대부분 앱에서 실제로 활용 안 됐던 문제 해결


실전 1 — DirectML 2.0이 해결하는 문제

지금까지 Windows 온디바이스 AI의 가장 큰 문제는 NPU 파편화였어요.

현재 Copilot+ PC 시장 NPU 현황:
→ Qualcomm Snapdragon X Elite : Hexagon NPU, 45 TOPS
→ Intel Core Ultra (Lunar Lake): Intel NPU, 40+ TOPS  
→ AMD Ryzen AI 300: XDNA 2, 50 TOPS

문제: 각 NPU마다 다른 SDK, 다른 드라이버, 다른 코드패스 필요
→ Intel용 코드 ≠ Qualcomm용 코드 ≠ AMD용 코드

DirectML 2.0은 이걸 하나의 API로 통합해요.

# DirectML 2.0 이전 — NPU별 분기 처리 필요
import platform

if cpu_vendor == "qualcomm":
    from qnn_sdk import inference
elif cpu_vendor == "intel":
    from openvino import inference  
elif cpu_vendor == "amd":
    from ryzen_ai_sdk import inference

# DirectML 2.0 이후 — 단일 코드패스
import onnxruntime as ort

# execution_provider="DML" 하나로 모든 NPU/GPU 타겟
session = ort.InferenceSession(
    "model.onnx",
    providers=["DmlExecutionProvider"]  # → 런타임이 알아서 최적 NPU 선택
)
result = session.run(None, {"input": data})

DmlExecutionProvider: ONNX Runtime의 DirectML 백엔드예요. DirectML 2.0에서는 이 한 줄로 Intel/AMD/Qualcomm NPU를 자동 선택하고, NPU가 없으면 GPU, GPU도 없으면 CPU로 폴백해요. 앱 코드를 수정하지 않아도 돼요.

DirectML 2.0으로 온디바이스 실행 가능한 워크로드:

✅ Whisper 수준 음성 인식/전사
✅ Stable Diffusion 수준 이미지 생성
✅ 경량 LLM 추론 (Phi-3, Phi Silica 등)
✅ 실시간 객체 감지, 배경 제거
✅ 번역, 요약 등 NLP 파이프라인

→ 클라우드 API 호출 없이, 네트워크 레이턴시 없이
→ 프라이버시 민감 데이터도 온디바이스에서 처리 가능

실전 2 — WSL 3 : 무엇이 바뀌었나

WSL 2와 WSL 3의 핵심 차이는 가상화 방식이에요.

WSL 2 구조:
Windows Host
    └── Hyper-V VM (전체 Linux 커널)
         └── GPU 접근: 간접 경로 → 레이턴시 발생

WSL 3 구조:
Windows Host
    └── 경량 파라가상화 VM (Linux 커널)
         └── GPU/NPU: 파라가상화 패스스루 → near-native 접근

파라가상화(paravirtualization): VM이 하드웨어를 직접 제어하는 게 아니라, 호스트 OS와 협력해서 하드웨어 리소스를 공유하는 방식이에요. 전체 가상화보다 오버헤드가 훨씬 적어요.

실제 성능 차이:

PyTorch 모델 학습 속도 비교 (WSL 내부 기준):

WSL 2 (GPU passthrough)  : 베어메탈 대비 15~25% 느림
WSL 3 (파라가상화 NPU)   : 베어메탈 대비 3~5% 느림  ← Build 2026 발표 수치

→ 이 차이면 실무 ML 워크로드에서 별도 Linux 머신 없이 Windows로 통합 가능

WSL 3 실전 세팅:

# WSL 3로 업그레이드 (Build 2026 이후 Windows 11 기준)
wsl --update
wsl --set-default-version 3

# PyTorch with DirectML — WSL 3 환경에서 설치
pip install torch-directml

# GPU/NPU 사용 확인
python -c "
import torch_directml
device = torch_directml.device()
print(f'DirectML device: {device}')  # → DML:0 출력되면 NPU/GPU 활성화
"
# WSL 3 + PyTorch + DirectML 실제 추론 예시
import torch
import torch_directml

device = torch_directml.device()  # NPU 또는 GPU 자동 선택

model = YourModel().to(device)
input_tensor = torch.randn(1, 3, 224, 224).to(device)

with torch.no_grad():
    output = model(input_tensor)
    # → 클라우드 없이 온디바이스 추론 완료

실전 3 — Windows AI 개발 환경 실전 구성

DirectML 2.0 + WSL 3를 합치면 Windows 단일 머신에서 전체 AI 개발 파이프라인이 돌아요.

권장 Windows AI 개발 환경 구성:

1. OS: Windows 11 24H2 이상
2. 하드웨어: Copilot+ PC (Snapdragon X / Intel Lunar Lake / AMD Ryzen AI)
3. 환경: WSL 3 + Ubuntu 22.04 LTS
4. ML 프레임워크: PyTorch + torch-directml
5. 추론 런타임: ONNX Runtime (DmlExecutionProvider)
6. 온디바이스 모델: Phi Silica (MS 공식 지원), Whisper, Stable Diffusion

개발 플로우:
① WSL 3 Ubuntu에서 Python 개발 + PyTorch 학습
② ONNX Export → DirectML 2.0으로 Windows 앱에 임베드
③ Copilot+ PC 배포 → 앱 사용자 NPU 자동 활용

기존 환경 대비 변화:

이전:
→ ML 개발: 별도 Linux 머신 또는 WSL 2 (성능 페널티)
→ Windows 앱에 AI 넣기: 클라우드 API 의존 or NPU별 코드 분기

이후 (DirectML 2.0 + WSL 3):
→ ML 개발: WSL 3에서 베어메탈 대비 3~5% 페널티만으로 실행
→ Windows 앱 AI: DmlExecutionProvider 한 줄로 모든 NPU 커버
→ 듀얼부팅 / 별도 Linux 머신 필요성 대폭 감소

✅ 결론

WSL 3는 Windows ML 개발의 실질적 전환점이에요. 베어메탈 대비 3~5% 페널티는 실무에서 무시할 수 있는 수준이에요. 리눅스 듀얼부팅이나 별도 머신을 쓰던 이유가 하나 사라졌어요.

DirectML 2.0은 온디바이스 AI 앱의 배포 장벽을 낮춰요. Intel/AMD/Qualcomm NPU 분기 코드 없이 DmlExecutionProvider 하나로 Copilot+ PC 전체를 타겟할 수 있어요.

CUDA 생태계 의존도가 높은 팀은 여전히 한계가 있어요. DirectML은 DirectX 12 기반이라 NVIDIA CUDA 전용 라이브러리 (RAPIDS, cuDNN 특화 연산 등)는 그대로 Linux/CUDA 환경이 필요해요.

WSL 3 성능 수치는 아직 Build 발표 기준이에요. 3~5% 페널티는 Microsoft 발표 수치이고, 워크로드 유형·하드웨어별 실측 결과는 출시 후 커뮤니티 검증이 필요해요.

 

반응형