個人的なメモ

Tomohiro Suzuki @hiro128_777 のブログです。Microsoft MVP for Developer Technologies 2017- 本ブログと所属組織の公式見解は関係ございません。

C# と ローカル SLM で Edge AI を試してみた(目次)

Phi3, Phi3.5, Phi4 関連

C# を使ってローカル PC の CPU か NPU かでお手軽にエッジ AI を始める方法

記事はこちらです。
hiro128.hatenablog.jp
 

C# を使って CPU で Edge AI を試してみよう(1)Phi モデルの概要

記事はこちらです。
hiro128.hatenablog.jp
 

C# を使って CPU で Edge AI を試してみよう(2)簡単なアプリを作成してみる

記事はこちらです。
hiro128.hatenablog.jp
 

C# を使って CPU で Edge AI を試してみよう(3)日本語で精度を高めるために、英語に翻訳してプロンプトを投げる

記事はこちらです。
hiro128.hatenablog.jp
 

C# を使って CPU で Edge AI を試してみよう(4)日本語の精度を高めるために、さらに RAG を導入してみる

記事はこちらです。
hiro128.hatenablog.jp

Phi モデルをローカルで検証できるサンプルアプリ

記事はこちらです。
hiro128.hatenablog.jp
 

Phi Silica 関連

待ちに待った Phi Silica がようやくやってきたので Text Completion を試してみた

記事はこちらです。
hiro128.hatenablog.jp
 

Phi Silica をコンソールアプリで動かしたらエラー発生、そして解決

記事はこちらです。
hiro128.hatenablog.jp
 

Phi Silica (Language Model)で日本語の実用性があるか試してみた。

記事はこちらです。
hiro128.hatenablog.jp
 

Phi Silica の Language Model を検証できるコンソールアプリ

記事はこちらです。
hiro128.hatenablog.jp
 

2026年3月に Windows で ローカル LLM を用いて GitHub Copilot を使うには

ローカル LLM を用いて GitHub Copilot を使いたいと思い、試してみました。

環境

CPU:Core Ultra 155H
RAM:64GB
IDE:Visual Studio Code Insiders  
 

検証結果

FoundryLocal

GitHub Copilot のモデルピッカーに表示させるのは簡単です。 表示させたいモデルの目のアイコンをクリックして斜線がない状態にすればいいだけです。

実行するとクライアントパラメーターのエラーになります
 
 

LM Studio

実行すると LM Stusdio で処理は動いているが、Visual Studio コードにレスポンスが戻りません。

Ollama

正常にレスポンスが返りましたが、10分以上待たされるので実用は厳しいです。  
 

結論

FoundryLocal LM Studio Ollama
モデルピッカーのサポート
Visual Studio Code
モデルピッカーのサポート
Visual Studio Code Insiders
利用モデル qwen2.5-coder-7b qwen3.5-9B qwen3.5-9B
Agent Mode で正常に使えるか クライアントパラメータのエラーで
正常動作せず
LM Stusdio で処理は動いているが、
Visual Studio Code にレスポンスが戻らない
正常動作する
速度 - - 恐ろしく遅い
(1プロンプト処理に10分以上)

 
 
今のところ、Ollama を使うのがベストですが、Windows だと Intel Arc (OpenVINO)のアクセラレートが効きません。よって CPU での推論になり、恐ろしく遅いです。
Mac であれば、GPU のアクセラレートが効きます。その他の要素を鑑みても一番ベストなのは、MacBook Pro M5 Max 128GB で Ollama を使うことと言えます。検証したいのですが、100万近い MacBook Pro M5 を買う勇気も費用もありませんがいつか試してみたいです。

GitHub Copilot のモデルピッカーで LM Studio のローカルモデルを使用する

GitHub Copilot で LM Studio のローカルモデルを使用するには、Visual Studio Code - Insiders を使用する必要があります。 code.visualstudio.com

LM Studio 側の準備

例えば今話題の Qwen3.5-9B を使いたいときには、まず LM Studio でモデルを DL します。

モデルをロードし、エンドポイントと、Status が Running になっていることを確認しておきます。

また、Server Settings の 「ローカルネットワークで提供」も ON にします。

curl でアクセスできればOKです。コマンドが通らなければ、エンドポイントと「ローカルネットワークで提供」の設定を確認してください

Visual Studio Code - GitHub Copilot の準備

モデル名の右の下向きのアローをクリックして、Search Models の右端の設定アイコンをクリックします

モデルの一覧が表示されるので、[+モデルを追加]をクリック

OpenAICompatibleを選択

LM Srudio などわかりやすい名前を入力

LM Srudio は API Key 不要なので、dammy などダミーの文字列を入力

%USERPROFILE%\AppData\Roaming\Code - Insiders\User\chatLanguageModels.json が自動で開きます。開かないときは、自分で開きます。

[
    {
        "name": "LM Studio",
        "vendor": "customoai",
        "apiKey": "${input:chat.lm.secret.-12345678}",
        "models": [
            {
                "id": "qwen/qwen3.5-9b",
                "name": "Qwen3.5-9B",
                "url": "http://localhost:1234/v1/chat/completions",
                "toolCalling": true,
                "vision": true,
                "maxInputTokens": 206000,
                "maxOutputTokens": 32000
            }
        ]
    }
]

目のアイコンを斜線なしに変更する。

モデルピッカーに表示され、選択できるようになります。

試しに質問してみます。

VS Code 側でタスクが始まり、

LM Studio 側でも処理が始まります。

処理が終わりました。

LM Studio の Model を Visual Studio Code の AI Toolkit に Bring Your Own Model (BYOM) として登録する

Visual Studio Code の AI Toolkit で選択できないローカル LLM を利用したいとき、現状では LM Studio の Model を Bring Your Own Model (BYOM) として登録してしまうのが最も手っ取り早いです。

LM Studio 側の準備

例えば今話題の Qwen3.5-9B を使いたいときには、まず LM Studio でモデルを DL します。

モデルをロードし、エンドポイントと、Status が Running になっていること、OpenAI 互換のエンドポイントになっていることを確認しておきます。

また、Server Settings の 「ローカルネットワークで提供」も ON にします。

curl でアクセスできればOKです。コマンドが通らなければ、エンドポイントと「ローカルネットワークで提供」の設定を確認してください

Visual Studio Code の AI Toolkit 側の準備

MODEL TOOLS > Model Catarog > +Add Your Own Model

Chat completion のエンドポイントを入力します

以下のコマンドで確認できる正式なモデル名を入力します。

curl http://192.168.1.14:1234/v1/models
{
  "data": [
    {
      "id": "qwen/qwen3.5-9b",
      "object": "model",
      "owned_by": "organization_owner"
    },

AI Toolkit での表示用のデル名を入力します

API Key を入力します。LM Studio は API Key 不要なので lm-studio などダミーの文字列を入力します。

登録されました。

Playground で動作確認します。

LM Studio にプロンプトが投げられていれば、 LM Studio の log が出力されます。出力されない場合は、curl でモデル一覧が表示されていることが確認できていれば、AI Toolkit に設定したエンドポイントが間違っている可能性が高いです。

無事動作しました。

設定は以下のフォルダに保存されています

%USERPROFILE%\.aitk\models

my-models.yaml を直接書き換えてもOKです。

# yaml-language-server: $schema=

version: v0.1
providers:
  - name: ONNX
  - name: Ollama
  - name: Custom
    models:
      - name: Qwen3.5-9B
        chat_completion_url: http://localhost:1234/v1/chat/completions
        headers:
          Authorization: '{"i":"xxxxxxxxxxxxxxxxxxxxx","c":"xxxxxxxxxxxxxxxxxxxxxx","t":"xxxxxxxxxxxxxxxxxxxxxxx","author":"AI
            Toolkit"}'
        api_model_name: qwen/qwen3.5-9b
  - name: Foundry Local
    models:
      []

Foundry Local で 標準対応外の onnx モデルを実行する

Foundry Local でいろいろなモデルを利用したのですが、あいにく対応モデルの種類は多くありません。

仕様としては onnx 対応のモデルが公開されていれば Foundry Local で動かせますので(なんでも動くわけではない)、実際に動かしてみます。 ただし、いくつか制限があります。 - (VRAMのサイズに依存するかもしれないが)20B 以上のモデルは動かない可能性が高い - 最新のモデルは Olive が対応しておらずうまく変換できないため、onnx バージョンが提供されていないことが多い

今回は Gemma-3 vision の GPU 対応モデル 12B を動かしてみます。 huggingface.co

モデルのダウンロード

コマンドでモデルをダウンロードするフォルダに移動する。

Hugging Face からモデルをダウンロード --max-workers 1 オプションをつけた方がダウンロードは安定します

huggingface-cli download onnxruntime/Gemma-3-ONNX --include gemma-3-12b-it/gpu/gpu-fp16-io-int4-rtn-block-32/* --local-dir . --local-dir-use-symlinks False  --max-workers 1

Foundry Local のキャッシュフォルダに配置

本当は foundry.modelinfo.json を編集した方が、model list などに表示されるので良いのですが、とりあえず使う分にはキャッシュフォルダに配置すれば使えるので配置します。 C:\Users\<ユーザー名>.foundry\cache\models\Microsoft に gemma-3-12b-it のようなフォルダを作成し、ダウンロードしたファイルをすべて配置します。

genai_config.json を書き換え

そのまま実行すると CPU で実行されるので、genai_config.json を書き換えて GPU で実行されるようにします。

具体的には、provider_options を webgpu に書き換えます

変更前

{
    "model": {
        "bos_token_id": 2,
        "context_length": 131072,
        "decoder": {
            "session_options": {
                "log_id": "onnxruntime-genai",
                "provider_options": []
            },

変更後

{
    "model": {
        "bos_token_id": 2,
        "context_length": 131072,
        "decoder": {
            "session_options": {
                "log_id": "onnxruntime-genai",
                "provider_options": [
                    {
                        "webgpu": {}
                    }
                ]
            },

動かしてみる

PS C:\Users\username> foundry model run gemma-3-12b-it     

無事 GPU で動きました