個人的なメモ

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

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 で動きました