AI 개발

Windows Foundry 실전 — 온디바이스 AI 추론을 NPU에서 돌리는 방법

cell-devlog 2026. 6. 5. 13:10
반응형

클라우드 API 없이, 내 노트북 NPU에서 직접 LLM을 실행합니다. 비용도 없고, 데이터도 안 나갑니다.


✅ 핵심 요약

Foundry Local은 NPU/GPU/CPU에서 온디바이스 AI 추론을 실행하는 Microsoft의 로컬 런타임입니다 → ONNX Runtime 기반 — 하드웨어를 자동 감지해 NPU 우선, GPU 차선, CPU 폴백으로 실행합니다 → OpenAI 호환 API를 로컬에서 노출 — 클라우드 API와 코드 한 줄 차이로 전환 가능합니다 → 모델 카탈로그 11,000개 이상 — Phi-4, Qwen, DeepSeek, Mistral, Whisper 등 포함 → 모델 alias만 넘기면 하드웨어에 맞는 최적화 변형(NPU variant, CUDA variant)을 자동 선택합니다 → 데이터가 디바이스 밖으로 나가지 않아 민감 데이터 워크플로우에 적합합니다 → Build 2026에서 Aion 1.0(14B, 32K context, tool-calling 내장 SLM) + WSL 3 NPU 패스스루 발표 → Copilot+ PC 기준 최소 40 TOPS NPU 필요 — 미달 시 GPU/CPU 폴백


왜 온디바이스인가

클라우드 LLM API 호출에는 세 가지 비용이 따릅니다. 토큰 비용, 네트워크 레이턴시, 데이터 유출 리스크입니다.

Foundry Local이 해결하는 상황:

상황 클라우드 API Foundry Local

사내 코드베이스 분석 코드가 외부로 전송됨 로컬에서만 처리
고빈도 반복 추론 (CI 파이프라인 등) 토큰 비용 누적 무제한 무료
오프라인/에어갭 환경 사용 불가 완전 동작
레이턴시 민감한 앱 네트워크 왕복 50~200ms 로컬 수 ms

아키텍처

┌──────────────────────────────┐
│     앱 (Python/JS/C#/Rust)   │  OpenAI 호환 API
├──────────────────────────────┤
│      Foundry Local SDK       │  모델 관리, 서비스 생명주기
├──────────────────────────────┤
│       ONNX Runtime           │  하드웨어 추상화 레이어
├──────────┬───────────────────┤
│ QNN(NPU) │ CUDA/DirectML(GPU)│ CPU fallback
└──────────┴───────────────────┘
         ↑
  Foundry Model Catalog
  (하드웨어별 최적화 variant 자동 선택)

하드웨어별 실행 경로

하드웨어 실행 Provider 비고

Qualcomm Snapdragon NPU QNN execution provider Copilot+ PC 기준
Intel NPU OpenVINO / WinML 드라이버 별도 설치 필요
AMD NPU (Ryzen AI) Vitis AI / WinML AMD NPU 드라이버 필요
NVIDIA GPU CUDA execution provider RTX 시리즈
Apple Silicon WebGPU → Metal macOS 지원
CPU (폴백) CPU execution provider 항상 사용 가능, 느림

설치

# Windows (NPU/GPU 하드웨어 가속 포함, 권장)
pip install foundry-local-sdk-winml

# macOS / Linux, 또는 Windows 하드웨어 가속 제외
pip install foundry-local-sdk

# CLI 설치 (winget)
winget install Microsoft.FoundryLocal

⚠️ foundry-local-sdk-winml과 foundry-local-sdk는 동시 설치 금지 — onnxruntime-core 의존성 충돌 발생


기본 사용법 — Python

1분 안에 모델 실행

from foundry_local import FoundryLocalManager
from openai import OpenAI

# 모델 로드 (alias 사용 — 하드웨어에 맞는 variant 자동 선택)
manager = FoundryLocalManager()
model_info = manager.get_model("phi-4")  # NPU가 있으면 NPU variant 자동 선택

# OpenAI 호환 클라이언트로 바로 연결
client = OpenAI(
    base_url=manager.endpoint,
    api_key="local",
)

response = client.chat.completions.create(
    model=model_info.id,
    messages=[
        {"role": "system", "content": "한국어로 답변하는 코딩 어시스턴트입니다."},
        {"role": "user", "content": "FastAPI 헬스체크 엔드포인트 만들어줘"}
    ],
)
print(response.choices[0].message.content)

스트리밍

stream = client.chat.completions.create(
    model=model_info.id,
    messages=[{"role": "user", "content": "피보나치 수열 Python 코드 짜줘"}],
    stream=True,
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

CLI 사용법

# 모델 카탈로그 조회
foundry model list

# 모델 정보 확인
foundry model info phi-4

# 모델 다운로드 + 인터랙티브 채팅
foundry model run phi-4

# AMD NPU 전용 variant 명시 실행
foundry model run phi-4-mini-instruct-vitis-npu:2

# 캐시된 모델 삭제
foundry model remove phi-4

주요 모델 카탈로그

Alias 크기 특화 NPU 지원

phi-4 ~8GB 범용 추론·코딩
phi-4-mini ~3GB 경량 빠른 응답
phi-3.5-mini ~2GB 경량 채팅
qwen2.5-7b ~5GB 범용
qwen2.5-coder ~0.52GB 코딩 특화
deepseek-r1-7b ~5GB 추론·수학 GPU
whisper ~1.5GB 음성 인식

💡 모델 alias를 쓰는 이유 phi-4처럼 alias를 넘기면 Foundry Local이 실행 환경을 감지해 자동으로 최적 variant를 선택합니다. Qualcomm NPU면 QNN variant, NVIDIA면 CUDA variant, 그 외엔 CPU variant를 받아옵니다. 하드웨어마다 코드를 다르게 쓸 필요가 없습니다.


Build 2026 신규 발표 — Aion 1.0

Build 2026에서 Microsoft가 공개한 온디바이스 전용 SLM입니다.

항목 내용

파라미터 14B
컨텍스트 윈도우 32K tokens
기능 Tool calling 네이티브 지원
배포 방식 Copilot+ PC 호환 기기에 OS와 함께 내장
출시 수 개월 내
최소 요구 40 TOPS NPU

에이전트 워크플로우에서 tool calling이 필요한 온디바이스 태스크를 클라우드 없이 처리할 수 있게 됩니다.


WSL 3 NPU 패스스루

Build 2026에서 WSL 3에 NPU 패스스루가 추가됐습니다. Linux 환경에서 Windows NPU를 그대로 사용할 수 있습니다.

# WSL 3에서 NPU 사용 확인
wsl --version  # WSL 3 확인

# WSL 안에서 Foundry Local CLI 실행
foundry model run phi-4-mini

현재 지원 하드웨어:

  • Qualcomm Snapdragon X Elite ✅
  • Intel Meteor Lake / Lunar Lake ✅
  • AMD Ryzen AI — 추후 지원 예정

클라우드 ↔ 온디바이스 하이브리드 패턴

Foundry Local의 핵심 가치는 OpenAI 호환 API입니다. 클라우드와 로컬을 같은 코드로 전환할 수 있습니다.

import os
from openai import OpenAI

def get_client(use_local: bool = False):
    if use_local:
        # 온디바이스 — 데이터 안 나감, 무료
        from foundry_local import FoundryLocalManager
        manager = FoundryLocalManager()
        model_info = manager.get_model("phi-4")
        return OpenAI(base_url=manager.endpoint, api_key="local"), model_info.id
    else:
        # 클라우드 — 더 강력한 모델
        return OpenAI(api_key=os.environ["OPENAI_API_KEY"]), "gpt-4o"

# 민감 데이터 → 로컬
client, model = get_client(use_local=True)

# 복잡한 추론 → 클라우드
# client, model = get_client(use_local=False)

response = client.chat.completions.create(
    model=model,
    messages=[{"role": "user", "content": "이 코드 리뷰해줘: ..."}],
)

하드웨어 요구사항

등급 NPU TOPS 가능한 것

Copilot+ PC 기준 40 TOPS 이상 Aion 1.0, 전체 온디바이스 기능
중간급 AI PC 20~39 TOPS 소형 모델, 일부 기능 제한
GPU 있는 일반 PC GPU CUDA variant로 대부분 동작
GPU 없는 구형 PC CPU만 가능하나 매우 느림

💡 내 PC가 해당되는지 확인 Windows 작업 관리자 → 성능 탭 → GPU 항목에서 NPU 표시 여부 확인. 표시되면 온디바이스 가속 사용 가능.


관련 글

 

반응형