LLM

Microsoft Foundry Local 완전 가이드 — 클라우드 없이 앱에 LLM 내장하는 법

cell-devlog 2026. 6. 4. 15:47
반응형

클라우드 없이 노트북에서 LLM 돌리는 것, 이제 개발자 혼자 삽질 안 해도 됩니다. Microsoft가 런타임·모델 관리·하드웨어 가속을 한 번에 묶어서 패키지로 줬습니다.


핵심 요약

→ Microsoft Foundry Local, 2026년 4월 GA — Windows·macOS(Apple Silicon)·Linux x64 지원
핵심 가치: 앱에 LLM 기능을 넣을 때 사용자에게 "Ollama 먼저 설치하세요" 없이 그냥 배포 가능
→ 약 20MB 네이티브 라이브러리 — 앱 패키지에 포함해서 배포, 추가 설치 없음
→ OpenAI 호환 API — 기존 openai.ChatCompletion 코드에서 base_url만 바꾸면 즉시 로컬 전환
→ 자동 하드웨어 가속: Intel NPU(OpenVINO)·AMD GPU·NVIDIA CUDA·Qualcomm QNN 자동 선택
→ 지원 모델: GPT OSS·Phi-4·Qwen·DeepSeek·Mistral·Whisper 등 큐레이티드 카탈로그
→ ONNX 기반 런타임 — llama.cpp 대비 평균 3.9배, 장문 시퀀스에서 최대 13.4배 빠름(Microsoft 주장)
→ 클라우드 추론 비용 없음 — 모델 다운로드 후 로컬 실행은 무료
한계: 멀티유저 서버 용도 아님, Foundry 카탈로그 외 커스텀 모델 사용 불가
→ Ollama·LM Studio와 달리 개발자가 앱에 임베드하는 용도에 특화


실전 1 — Foundry Local이 뭔지, 왜 Ollama와 다른가

로컬 LLM 실행 툴은 Ollama·LM Studio도 있는데 왜 Foundry Local이 필요할까요?

기존 문제:

개발자가 앱에 로컬 AI 기능을 넣고 싶을 때:

방법 A — Ollama 사용:
README에 "Ollama를 먼저 설치하세요" 작성
→ 사용자 이탈 발생
→ Ollama 버전 호환 문제

방법 B — llama.cpp 직접 링크:
ONNX Runtime·llama.cpp 직접 통합
GPU 드라이버별 코드 분기 작성
모델 다운로드·캐싱·업데이트 직접 구현
→ 수주 개발 공수

Foundry Local이 해결한 것:

패키지 설치 한 줄 → 앱에 LLM 내장 완료

사용자 입장: 설치 없이 AI 기능 바로 사용
개발자 입장: 하드웨어 분기·모델 관리·드라이버 호환 처리 불필요

Ollama vs LM Studio vs Foundry Local:

Ollama LM Studio Foundry Local

주요 용도 개인 로컬 AI 서버 GUI 기반 로컬 LLM 앱에 LLM 임베드
설치 방식 사용자 직접 설치 사용자 직접 설치 앱 패키지에 포함
커스텀 모델 ✅ GGUF 모두 가능 ✅ 모두 가능 ❌ 카탈로그 한정
멀티유저 서버
앱 임베드 △ (별도 설치 필요) ✅ 핵심 기능
하드웨어 자동 ✅ 자동 최적화
런타임 llama.cpp llama.cpp ONNX Runtime

실전 2 — 설치 및 시작하기

CLI 설치:

# Windows (PowerShell)
winget install Microsoft.FoundryLocal

# macOS (Apple Silicon)
brew install foundry-local

# Linux
curl -fsSL https://foundrylocal.ai/install.sh | sh

첫 모델 실행:

# 사용 가능한 모델 목록 확인
foundry model list

# 모델 다운로드 및 실행
foundry model run phi-4-mini
# → 첫 실행 시 자동 다운로드
# → 이후 실행은 캐시에서 즉시 로드

# 대화 시작
> 안녕하세요, 간단한 Python 코드 작성 도와줄 수 있어?

OpenAI 호환 서버 모드:

# 로컬 서버 시작 (포트 5272)
foundry service start

# 상태 확인
foundry service status

실전 3 — Python SDK로 앱에 임베드

기존 OpenAI SDK 코드를 거의 그대로 사용할 수 있습니다.

기존 OpenAI API 코드:

from openai import OpenAI

client = OpenAI(api_key="sk-...")

response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[{"role": "user", "content": "안녕"}]
)
print(response.choices[0].message.content)

Foundry Local로 전환 (변경 최소화):

from foundry_local import FoundryLocalManager
from openai import OpenAI

# 모델 초기화 (앱 시작 시 한 번)
manager = FoundryLocalManager.create(app_name="my-app")
model = manager.catalog.get_model("phi-4-mini")
model.download()  # 첫 실행 시만 다운로드
model.load()

# OpenAI SDK와 동일한 방식으로 사용
client = OpenAI(
    base_url=manager.endpoint,  # 이 줄만 추가
    api_key="local"             # 로컬이므로 아무 값
)

response = client.chat.completions.create(
    model=model.id,
    messages=[{"role": "user", "content": "안녕"}]
)
print(response.choices[0].message.content)

JavaScript/TypeScript 버전:

import { FoundryLocalManager } from 'foundry-local-sdk';
import OpenAI from 'openai';

const manager = FoundryLocalManager.create({ appName: 'my-app' });
const model = await manager.catalog.getModel('phi-4-mini');

// 하드웨어에 맞는 최적 variant 자동 선택
await model.download((progress) => {
  console.log(`다운로드: ${progress.percent}%`);
});
await model.load();

const client = new OpenAI({
  baseURL: manager.endpoint,
  apiKey: 'local'
});

const response = await client.chat.completions.create({
  model: model.id,
  messages: [{ role: 'user', content: '안녕' }]
});
console.log(response.choices[0].message.content);

실전 4 — 지원 모델 카탈로그

카탈로그는 채팅 완성용(GPT OSS, Qwen, DeepSeek, Mistral, Phi 등)과 오디오 전사용(Whisper 등) 모델을 포함합니다. 모든 모델은 소비자 하드웨어에서 최적 성능을 내도록 양자화·압축됩니다.

주요 지원 모델 (2026년 4월 기준):

모델 파라미터 특징 권장 RAM

Phi-4-mini 3.8B Microsoft 경량 모델, 코딩·추론 강함 8GB
Phi-4 14B 벤치마크 대비 성능 우수 16GB
Qwen2.5-0.5B 0.5B 초경량, 저사양 기기용 4GB
Qwen2.5-7B 7B 균형형 범용 모델 8GB
Mistral-7B 7B 범용 강세 8GB
DeepSeek-Coder 6.7B 코딩 특화 8GB
GPT OSS 20B 20B OpenAI 오픈소스, 추론 강함 16GB+
Whisper 다양 음성 → 텍스트 변환 4GB+

모델 선택 가이드:

노트북 (8GB RAM, NPU 없음):
→ Phi-4-mini 또는 Qwen2.5-0.5B

노트북 (16GB RAM, Apple Silicon M3+):
→ Phi-4 또는 Qwen2.5-7B

데스크톱 (NVIDIA GPU 8GB VRAM):
→ Mistral-7B 또는 DeepSeek-Coder

데스크톱 (NVIDIA GPU 16GB+ VRAM):
→ GPT OSS 20B

실전 5 — 하드웨어 자동 가속이 핵심

Foundry Local은 통합 런타임을 제공합니다. 앱이 캐시된 로컬 모델과 상호작용할 때 성능에 최적화되어 하드웨어 구성에 맞게 조정되며 Intel(OpenVINO), AMD, NVIDIA CUDA, Qualcomm QNN NPU 가속 등 적합한 실행 공급자를 선택합니다. 여러 SDK나 프레임워크를 관리할 필요가 없습니다.

실제로 어떻게 작동하나:

사용자 노트북에 앱 설치
    ↓
Foundry Local이 하드웨어 스캔
    ↓
Intel NPU 감지 → OpenVINO EP 선택
AMD GPU 감지 → AMD EP 선택
NVIDIA GPU 감지 → CUDA EP 선택
Qualcomm NPU 감지 → QNN EP 선택
CPU만 있음 → CPU 최적화 모드

→ 개발자는 분기 코드 없이 모든 하드웨어에서 최적 성능

ONNX vs llama.cpp 성능 비교 (Microsoft 공식 주장):

→ 평균 3.9배 빠름 (ONNX 최적화 모델 기준)
→ 장문 시퀀스에서 최대 13.4배 빠름
→ 단, GGUF 양자화 모델과의 직접 비교는 아님 — 조건이 다름


실전 6 — 음성 전사(Whisper) 통합

텍스트 뿐만 아니라 음성 전사도 동일 SDK로 처리할 수 있습니다.

from foundry_local import FoundryLocalManager
from openai import OpenAI

manager = FoundryLocalManager.create(app_name="voice-app")
whisper = manager.catalog.get_model("whisper-base")
await whisper.download()
await whisper.load()

client = OpenAI(
    base_url=manager.endpoint,
    api_key="local"
)

# 오디오 파일 전사
with open("meeting.mp3", "rb") as audio:
    transcript = client.audio.transcriptions.create(
        model=whisper.id,
        file=audio,
        language="ko"
    )
print(transcript.text)

→ 회의록 자동화·음성 메모 앱 등에서 클라우드 비용 없이 구현 가능


실전 7 — LangChain·LlamaIndex 연동

OpenAI 호환 서버 모드를 쓰면 기존 LangChain·LlamaIndex 코드도 그대로 사용 가능합니다.

# Foundry Local 서버 시작
# foundry service start (터미널에서)

from langchain_openai import ChatOpenAI

# LangChain에서 Foundry Local 사용
llm = ChatOpenAI(
    base_url="http://localhost:5272/v1",
    api_key="local",
    model="phi-4-mini"
)

response = llm.invoke("이 계약서의 핵심 조항을 요약해줘")
print(response.content)
# LlamaIndex 연동
from llama_index.llms.openai import OpenAI as LlamaOpenAI

llm = LlamaOpenAI(
    api_base="http://localhost:5272/v1",
    api_key="local",
    model="phi-4-mini"
)

실전 8 — Ollama와 함께 쓰는 조합 전략

Foundry Local이 맞는 경우:
✅ 앱에 LLM 임베드해서 배포할 때
✅ 사용자 설치 없이 AI 기능 제공할 때
✅ Windows 생태계 앱 개발 (.NET, WinUI)
✅ 엔터프라이즈 내부 도구 (데이터 로컬 보존)

Ollama가 더 나은 경우:
✅ 개발 중 개인 로컬 LLM 서버
✅ 카탈로그 외 커스텀·파인튜닝 모델 실행
✅ Docker 기반 멀티유저 환경
✅ GGUF 아무 모델이나 바로 쓰고 싶을 때

✅ 써야 하는 경우 / ❌ 한계 알고 가야 할 것

✅ ❌

Windows·macOS 앱에 AI 기능 내장할 때 멀티유저 서버 배포 — vLLM·Ollama 사용
데이터 외부 전송 없이 AI 기능 필요한 기업 앱 카탈로그 외 커스텀 파인튜닝 모델 실행
오프라인 환경(비행기·폐쇄망)에서 AI 필요 llama.cpp처럼 GGUF 모든 모델 자유롭게
클라우드 API 비용 없애고 싶은 고사용량 앱 대형 모델(70B+) 실행 — 소비자 하드웨어 한계

 

반응형