Foundry Localを実機で試してみた!インストールからCLI・Python SDK実行まで、エラー対処も全部まとめ

こんにちは!横浜情報機器株式会社のShahinです!
今回はMicrosoftの Foundry Local をWindows(Snapdragon X搭載PC)で実際に動かしてみた検証記事をご紹介します。
クラウド不要・Azureサブスクリプション不要でAIモデルがローカルで動くという点に注目し、実機で検証しました。
途中でサービス未起動やカタログエラーなど詰まりポイントもありましたが、トラブルシューティングも含めてすべてまとめています。ぜひ最後まで読んでみてください。

Foundry Localって何?

Foundry Local は、AIモデルをユーザーのデバイス上で完全に動かすための、MicrosoftのエンドツーエンドなローカルAIソリューションです。

SDKはC#・JavaScript・Python・Rustに対応しており、モデルの取得からハードウェアアクセラレーション、推論まで一括で処理できます。ランタイム本体のサイズが約20MBと軽量なため、アプリへの組み込みも現実的です。

ポイント:Azureサブスクリプション不要です。プロンプトもレスポンスもデバイス外に出ません。オフラインでも動作します。
クラウドAIとFoundry Localのアーキテクチャ比較図

クラウドAIとの違い

Foundry Local とクラウドAIの主な違いを以下の表で確認します。

項目クラウドAIFoundry Local(オンデバイス)
データの場所クラウドサーバーに送信デバイス外に出ない
オフライン動作❌ 不可✅ 可能
レイテンシネットワーク遅延ありゼロ(ローカル処理)
コストトークン従量課金無料(ハードウェアのみ)
Azureサブスクリプション必要不要

個人情報や機密データを扱うアプリ、ネット環境が不安定な現場で使うツール、リアルタイムに近い応答が必要なケースで特に有効です。

インストール手順(Windows / winget)

今回の検証環境はWindows + Snapdragon X(QNN/NPU搭載)のCopilot+ PCを使用します。

ステップ1:コマンドプロンプトを起動する

スタートメニューを開き、検索バーに「Terminal」または「コマンドプロンプト」と入力して起動します。

「アプリ、設定、ドキュメントの検索」と表示された検索バーに、検索するアプリケーション名を入力します。
アプリケーション検索と起動準備
「Terminal」の検索結果から、「コマンド プロンプト」をクリックして開きます。
コマンドプロンプトの検索と起動準備

ステップ2:wingetでインストールする

以下のコマンドを実行してFoundry Localをインストールします。

winget install Microsoft.FoundryLocal

インストールが開始されます。完了まで数分かかる場合があります。

`winget install Microsoft.FoundryLocal` コマンドを実行します。
Foundry Localのインストール
`winget install` コマンドによるFoundry Localのインストールが完了するまで待ちます。
Foundry Localのwingetによるインストール
`winget install Microsoft.FoundryLocal`コマンドを実行し、インストールを開始します。
Foundry Localのインストール開始
`winget install Microsoft.FoundryLocal`コマンドを実行し、Foundry Localをインストールします。
Foundry Localのインストール

ステップ3:インストールを確認する

インストール完了後、以下のコマンドでバージョンを確認します。

foundry --version
`foundry –version` コマンドを入力し、Foundry Localのバージョンを確認します。
Foundry Localのインストールとバージョン確認
`winget install` コマンドでFoundryをインストールし、確認します。
Foundry Localのインストールとバージョン確認

バージョン 0.8.119 が表示されればインストール成功です。

ステップ4:サービス状態を確認する

次のコマンドでFoundryのバックグラウンドサービスが起動しているか確認します。

foundry service status
Foundryサービスの現在の状態を確認するため、`foundry service status` コマンドを入力します。
CLIによるシステム情報確認

インストール直後のトラブルシューティング

インストール直後にいくつかエラーが発生しました。同じ状況になった場合の参考にしていただければ幸いです。

エラー①:サービスが起動していない場合

サービスが停止している場合は、以下のコマンドで再起動します。

モデル管理サービスを起動するため、`foundry service start` コマンドを実行します。
エラー発生(モデル管理サービス未起動)
原因と対処:インストール直後はFoundryのバックグラウンドサービスが自動起動していない場合があります。foundry service restart を実行して解決します。
foundry service restart
`foundry service restart`コマンドでFoundryサービスを再起動します。
Foundryサービスの停止状況確認と再起動の試み
`foundry service restart`コマンドでFoundry Localサービスを再起動します。
Foundry Localサービスの再起動

🟢 が表示されれば、サービスが http://127.0.0.1:62322/ で起動しています。次にモデル一覧を確認します。

`foundry service restart` コマンドで、停止しているモデル管理サービスを再起動します。
Foundryサービスの稼働確認と再起動

エラー②:model list でカタログ取得に失敗する場合

初回に foundry model list を実行したところ、QNNExecutionProviderのダウンロード・登録は成功したものの、モデル一覧の取得でエラーが発生しました。

`foundry model list` コマンドを実行し、Foundry Localの初回設定を行います。
モデル一覧表示と初回設定
Azure Foundryカタログとの連携設定またはモデルの登録状況を確認します。
モデル一覧表示中のエラー
対処法:カタログが取得できない場合でも、モデル名がわかれば foundry model download <alias> で直接ダウンロードできます。この現象はサーバー側の一時的な問題であることが多いため、時間をおいて再試行することも有効です。

CLIでモデルをダウンロード&実行する

モデルをダウンロードする

以下のコマンドでモデルをダウンロードします。エイリアス名を指定するだけで実行できます。

foundry model download qwen2.5-0.5b
`foundry model download qwen2.5-0.5b` コマンドでモデルをダウンロードします。
モデル一覧取得失敗とモデルダウンロードの試行
`foundry model download` コマンド実行後、エラーが表示されてもダウンロード完了を待ちます。
モデルダウンロード中のエラーと進行状況
`foundry model download qwen2.5-0.5b` コマンドでQwenモデルをダウンロードし、完了を確認します。
CLIによるモデルダウンロードと進行状況の確認

ダウンロードが完了します。Snapdragon X搭載PCの場合、Foundry LocalがQNNExecutionProvider(Qualcomm NPU向け)最適化モデル qwen2.5-0.5b-instruct-qnn-npu:1 を自動で選択します。ハードウェアの自動検出により、手動での設定は不要です。

モデルを実行する

以下のコマンドでモデルを起動し、対話モードに入ります。

foundry model run qwen2.5-0.5b
`foundry model run qwen2.5-0.5b` コマンドを実行し、モデルを起動します。
エラー発生とモデル実行試行
`foundry model run qwen2.5-0.5b` コマンドを実行します。
Foundry Local CLIでのモデル実行とロード
`foundry model run qwen2.5-0.5b`コマンド実行後、プロンプトを入力して対話を開始します。
CLI対話モードの開始

対話してみる

対話モードに入ったら、プロンプトに質問を入力します。

Why is the sky blue?
入力済みの最初のプロンプト「Why is the sky blue?」を送信するため、Enterキーを押します。
CLI対話開始
Foundry Localの対話モードで「Why is the sky blue?」と質問を入力します。
CLI対話:モデルへの質問と応答

クラウドに接続していない状態で、英語の質問に対して詳細な回答が返ってきます。これでオフライン動作を確認できました。

モデルとの対話を完了させるため、`/exit`コマンドを入力して終了します。
CLI対話(質問と回答)
CLI対話セッション終了
スクリーンショット 2026-06-13 213524.png

CLIで使用できる主なコマンドは以下のとおりです。

コマンド内容
foundry model list利用可能なモデル一覧を表示する
foundry model run <alias>モデルをダウンロード&対話実行する
foundry model download <alias>モデルをキャッシュにダウンロードする(実行なし)
foundry service statusローカルサービスの状態を確認する
foundry service restartサービスを再起動する
foundry cache listローカルキャッシュ内のモデル一覧を表示する

Python SDKで試してみる

CLIでの動作確認ができましたので、次はPython SDKから呼び出してみます。

SDKをインストールする

OSに合わせて以下のコマンドを実行します。

# Windows(WindowsML統合版・NPU/GPU アクセラレーション対応)
pip install foundry-local-sdk-winml openai

# macOS / Linux(クロスプラットフォーム版)
pip install foundry-local-sdk openai
`pip install foundry-local-sdk-winml openai` コマンドで、Foundry SDKとOpenAIライブラリをインストールします。
Foundry Local SDKのインストール
`pip install foundry-local-sdk-winml openai` コマンドで各ライブラリをインストールします。
Foundry Local Python SDKのインストールと初期エラー
`pip install` コマンドでFoundry Local関連パッケージのインストール完了を確認します。
Foundry Local関連パッケージのインストール
Foundry Localに必要なPythonパッケージのインストールが完了するのを待ちます。
Foundry Localと依存Pythonパッケージのインストール

プロジェクト構成を確認する

以下のファイル構成でプロジェクトを用意します。

VS Codeのファイルエクスプローラーから `app.py` ファイルを選択して開きます。
Pythonスクリプトの準備

サンプルコード(app.py)を作成する

以下のコードを app.py として保存します。

Pythonスクリプトでモデルをダウンロードし、ストリーミング推論を実行します。
Python SDKでのモデルのダウンロードとストリーミング推論
from foundry_local_sdk import Configuration, FoundryLocalManager

def main():
    # SDK を初期化
    config = Configuration(app_name="foundry_local_samples")
    FoundryLocalManager.initialize(config)
    manager = FoundryLocalManager.instance

    # 実行プロバイダーのダウンロードと登録
    print("実行プロバイダーを確認中...")
    manager.download_and_register_eps()

    # モデルをカタログから取得してダウンロード
    model = manager.catalog.get_model("qwen2.5-0.5b")
    model.download(lambda p: print(f"\rダウンロード中: {p:.2f}%", end="", flush=True))
    print()
    model.load()
    print("モデルの準備完了!")

    # ストリーミング推論
    client = model.get_chat_client()
    messages = [{"role": "user", "content": "黄金比とは何ですか?簡単に教えてください。"}]

    print("アシスタント: ", end="", flush=True)
    for chunk in client.complete_streaming_chat(messages):
        if not chunk.choices:   # 最終チャンクのガード
            continue
        content = chunk.choices[0].delta.content
        if content:
            print(content, end="", flush=True)
    print()

    model.unload()
    print("モデルをアンロードしました。")

if __name__ == "__main__":
    main()

実行する

python app.py

以下のコマンドでスクリプトを実行します。

`python` コマンドで `app.py` スクリプトを実行します。
Python SDKを使用したスクリプトの実行
`python app.py` コマンドで、Python SDKを利用したアプリケーションを実行します。
Python SDK実行
`python app.py` コマンドを実行し、Pythonアプリケーションを起動します。
Python SDK実行
AIアシスタントの対話とモデルのアンロードが完了したため、次の操作に進みます。
CLI対話

日本語の質問に対して、ストリーミング形式で回答が返ってきます。モデルのダウンロードから推論・アンロードまで、コード通りに動作することを確認できました。

よくあるエラーと対処

エラー対処
ModuleNotFoundError: No module named 'foundry_local_sdk' pip install foundry-local-sdk を再実行します
IndexError: list index out of range ストリーミング最終チャンクで choices が空になります。if not chunk.choices: continue でガードします
Request to local service failed foundry service restart を実行します
No models were returned from the Azure Foundry catalog. foundry model download <alias> で直接ダウンロードします

まとめ

今回は Foundry Local を実機で動かした全手順をまとめました。

実施内容結果
winget でインストールコマンド1行で完了。バージョン 0.8.119
サービス起動foundry service restart で解決
モデルダウンロードNPU向け qwen2.5-0.5b-instruct-qnn-npu:1 が自動選択
CLI対話「Why is the sky blue?」に英語で詳細回答
Python SDKapp.py で日本語ストリーミング推論が動作

サービス未起動やカタログエラーなどのトラブルが発生しましたが、すべて解決して実際に動作することを確認できました。
「Azureサブスクリプション不要」「データがデバイス外に出ない」「オフライン動作対応」の3点が揃っているため、セキュリティ要件の厳しいプロジェクトや現場ツールの開発において大きなメリットになります。
ご興味のある方はぜひ試してみてください。また新しい検証結果があれば記事にしていきます。

技術ブログ一覧に戻る