<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>AMD on KnightLiブログ</title>
        <link>https://www.knightli.com/ja/tags/amd/</link>
        <description>Recent content in AMD on KnightLiブログ</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Fri, 24 Apr 2026 18:30:00 +0800</lastBuildDate><atom:link href="https://www.knightli.com/ja/tags/amd/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Ollama が GPU を使わず CPU で動いてしまう問題の対処法</title>
        <link>https://www.knightli.com/ja/2026/04/24/fix-ollama-using-cpu-instead-of-gpu/</link>
        <pubDate>Fri, 24 Apr 2026 18:30:00 +0800</pubDate>
        
        <guid>https://www.knightli.com/ja/2026/04/24/fix-ollama-using-cpu-instead-of-gpu/</guid>
        <description>&lt;p&gt;ローカルで大規模モデルを動かしているとき、かなり悩まされやすいのが「GPU があるのに &lt;code&gt;Ollama&lt;/code&gt; がほぼ &lt;code&gt;CPU&lt;/code&gt; しか使わず、速度も極端に遅い」という問題です。&lt;/p&gt;
&lt;p&gt;先に結論を言うと、この手の問題はたいてい単一の原因ではありません。よくある原因は次のとおりです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ollama&lt;/code&gt; が利用可能な GPU を認識できていない&lt;/li&gt;
&lt;li&gt;ドライバ、&lt;code&gt;ROCm&lt;/code&gt;、&lt;code&gt;CUDA&lt;/code&gt; の環境構築が正しくない&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ollama&lt;/code&gt; サービスが正しい環境変数を引き継がずに起動している&lt;/li&gt;
&lt;li&gt;モデルが大きすぎて &lt;code&gt;CPU&lt;/code&gt; もしくは &lt;code&gt;CPU/GPU&lt;/code&gt; の混在ロードに落ちている&lt;/li&gt;
&lt;li&gt;AMD 環境では、&lt;code&gt;ROCm&lt;/code&gt; のバージョン、&lt;code&gt;gfx&lt;/code&gt; 設定、デバイス可視性などの互換性問題が追加で発生している&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以下、時間を無駄にしにくい順番で切り分けていきます。&lt;/p&gt;
&lt;h2 id=&#34;1-まず本当に-gpu-を使えていないのか確認する&#34;&gt;1. まず本当に GPU を使えていないのか確認する
&lt;/h2&gt;&lt;p&gt;一番わかりやすい確認方法はこれです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama ps
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;見るべきなのは &lt;code&gt;PROCESSOR&lt;/code&gt; 列です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;100% GPU&lt;/code&gt;: モデルは完全に GPU 上で動いている&lt;/li&gt;
&lt;li&gt;&lt;code&gt;100% CPU&lt;/code&gt;: GPU はまったく使えていない&lt;/li&gt;
&lt;li&gt;&lt;code&gt;48%/52% CPU/GPU&lt;/code&gt; のような表示: 一部は VRAM に載り、一部はシステムメモリに落ちている&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;100% CPU&lt;/code&gt; なら、次は環境とサービス設定を重点的に確認すべきです。&lt;br&gt;
混在ロードの場合は、GPU が壊れているとは限らず、単純に VRAM が足りないだけのことも多いです。&lt;/p&gt;
&lt;h2 id=&#34;2-まず一番多い思い込みを外す-モデルが-vram-に収まっていない&#34;&gt;2. まず一番多い思い込みを外す: モデルが VRAM に収まっていない
&lt;/h2&gt;&lt;p&gt;GPU を積んでいれば &lt;code&gt;Ollama&lt;/code&gt; は常にフル GPU 推論になる、と考えている人は多いですが、実際はそうではありません。&lt;/p&gt;
&lt;p&gt;モデルが大きすぎる、コンテキストが長すぎる、あるいは別のモデルがすでに VRAM を使っている場合、&lt;code&gt;Ollama&lt;/code&gt; は次のような状態に落ちることがあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一部 GPU + 一部 CPU&lt;/li&gt;
&lt;li&gt;&lt;code&gt;100% CPU&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この場合、まずは次の 2 つを試すのがいちばん早いです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;より小さいモデルでテストする&lt;br&gt;
いきなり大きなモデルを試すのではなく、まずは &lt;code&gt;4B&lt;/code&gt; や &lt;code&gt;7B&lt;/code&gt; のような小さめのモデルで確認します。&lt;/li&gt;
&lt;li&gt;すでに読み込まれている他のモデルを外してから再確認する&lt;br&gt;
先に &lt;code&gt;ollama ps&lt;/code&gt; を見て、別のモデルが VRAM を占有していないか確認します。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;小さいモデルは GPU で動くのに、大きいモデルだけだめなら、原因はドライバではなく VRAM 容量であることがほとんどです。&lt;/p&gt;
&lt;h2 id=&#34;3-gpu-ドライバと下位ランタイムが正常か確認する&#34;&gt;3. GPU ドライバと下位ランタイムが正常か確認する
&lt;/h2&gt;&lt;p&gt;小さいモデルですら &lt;code&gt;CPU&lt;/code&gt; しか使わないなら、次は下位レイヤの確認です。&lt;/p&gt;
&lt;h3 id=&#34;nvidia-の場合&#34;&gt;NVIDIA の場合
&lt;/h3&gt;&lt;p&gt;まずはドライバが正常で、OS から GPU が見えているかを確認します。よく使う確認方法は次のとおりです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nvidia-smi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ここでエラーになるなら、&lt;code&gt;Ollama&lt;/code&gt; が GPU を正常に使える可能性はかなり低いです。&lt;/p&gt;
&lt;h3 id=&#34;amd--rocm-の場合&#34;&gt;AMD / ROCm の場合
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;AMD GPU&lt;/code&gt;、特に &lt;code&gt;ROCm&lt;/code&gt; 環境なら、まず次を確認します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rocminfo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rocm-smi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これらがデバイスを正常に列挙できないなら、問題はまだ &lt;code&gt;Ollama&lt;/code&gt; より下の層にあります。アプリ側をいじる前に、そこを直すべきです。&lt;/p&gt;
&lt;p&gt;AMD でよくあるのは、単純な「ドライバが入っているか」ではなく、次のような問題です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ROCm&lt;/code&gt; のバージョンと OS の組み合わせが合っていない&lt;/li&gt;
&lt;li&gt;対象 GPU アーキテクチャのサポートが不完全&lt;/li&gt;
&lt;li&gt;デバイス自体は存在するが、実行環境が &lt;code&gt;Ollama&lt;/code&gt; に正しく渡っていない&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;4-ターミナルではなく-ollama-サービス自体を再起動する&#34;&gt;4. ターミナルではなく Ollama サービス自体を再起動する
&lt;/h2&gt;&lt;p&gt;これはかなりよくある落とし穴です。&lt;/p&gt;
&lt;p&gt;ドライバを入れ直し、環境変数を変え、&lt;code&gt;ROCm&lt;/code&gt; を調整したあとで、単に新しいターミナルを開いて &lt;code&gt;ollama run&lt;/code&gt; を続けてしまうケースがあります。ですが &lt;code&gt;Ollama&lt;/code&gt; がバックグラウンドサービスとして動いているなら、古い環境のまま動作し続けている可能性があります。&lt;/p&gt;
&lt;p&gt;なので、より安全なのは次のやり方です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ollama&lt;/code&gt; サービスを完全に再起動する&lt;/li&gt;
&lt;li&gt;必要なら OS ごと再起動する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Linux でサービスとして動かしているなら、古いプロセスを再利用していないかも確認してください。&lt;/p&gt;
&lt;h2 id=&#34;5-環境変数が本当にサービスまで届いているか確認する&#34;&gt;5. 環境変数が本当にサービスまで届いているか確認する
&lt;/h2&gt;&lt;p&gt;これは特に &lt;code&gt;AMD ROCm&lt;/code&gt; 環境で重要です。&lt;/p&gt;
&lt;p&gt;シェル上で手動実行すると問題ないのに、&lt;code&gt;Ollama&lt;/code&gt; サービスにすると &lt;code&gt;CPU&lt;/code&gt; しか使わない、というケースがあります。多くの場合、原因はシェルで設定した変数がサービスプロセスに渡っていないことです。&lt;/p&gt;
&lt;p&gt;よく確認したい変数は次のあたりです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ROCR_VISIBLE_DEVICES
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;HSA_OVERRIDE_GFX_VERSION
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;それぞれの意味は次のとおりです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt;: &lt;code&gt;ROCm&lt;/code&gt; から見える GPU を制限または指定する&lt;/li&gt;
&lt;li&gt;&lt;code&gt;HSA_OVERRIDE_GFX_VERSION&lt;/code&gt;: 一部 AMD 環境で互換性確保のために使うことがある&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;現在のターミナルで一時的に &lt;code&gt;export&lt;/code&gt; しただけでは、systemd、デスクトップのバックグラウンドサービス、その他のデーモン経由で起動された &lt;code&gt;Ollama&lt;/code&gt; には反映されないことがあります。&lt;/p&gt;
&lt;p&gt;つまり、ターミナルで「設定済みに見える」ことと、&lt;code&gt;Ollama&lt;/code&gt; が実際にその設定を使っていることは別です。&lt;/p&gt;
&lt;h2 id=&#34;6-amd-環境では-rocm-の互換性を重点的に見る&#34;&gt;6. AMD 環境では ROCm の互換性を重点的に見る
&lt;/h2&gt;&lt;p&gt;公開ページの情報を見る限り、この話題の元動画は &lt;code&gt;AMD Max+ 395&lt;/code&gt;、&lt;code&gt;strix halo&lt;/code&gt;、&lt;code&gt;AMD ROCm&lt;/code&gt; の文脈にあります。&lt;br&gt;
この種の環境では、&lt;code&gt;Ollama&lt;/code&gt; が GPU を使えない原因は、NVIDIA よりもバージョン整合性に左右されやすい傾向があります。&lt;/p&gt;
&lt;p&gt;優先的に見るべき点は次のとおりです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;現在の OS と GPU に対して &lt;code&gt;ROCm&lt;/code&gt; のバージョンが適切か&lt;/li&gt;
&lt;li&gt;その GPU が &lt;code&gt;ROCm&lt;/code&gt; で比較的安定して動くアーキテクチャか&lt;/li&gt;
&lt;li&gt;&lt;code&gt;HSA_OVERRIDE_GFX_VERSION&lt;/code&gt; の指定が必要か&lt;/li&gt;
&lt;li&gt;古い &lt;code&gt;Ollama&lt;/code&gt; や古い推論ランタイムが互換性の問題を起こしていないか&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;rocminfo&lt;/code&gt; は正常で GPU も OS から見えているのに、&lt;code&gt;Ollama&lt;/code&gt; だけが &lt;code&gt;CPU&lt;/code&gt; しか使わないなら、モデルパラメータをいじるより、まずバージョンの組み合わせを疑うべきです。&lt;/p&gt;
&lt;h2 id=&#34;7-dockerwslリモート環境ではデバイスマッピングも確認する&#34;&gt;7. Docker、WSL、リモート環境ではデバイスマッピングも確認する
&lt;/h2&gt;&lt;p&gt;もしベアメタルではなく、次のような環境で動かしているなら:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;WSL&lt;/li&gt;
&lt;li&gt;リモートコンテナ&lt;/li&gt;
&lt;li&gt;仮想化環境&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;もう一段下を見て、「GPU デバイスが本当にその環境に渡っているか」を確認する必要があります。&lt;/p&gt;
&lt;p&gt;典型的には次のような状態になります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ホスト側では GPU が見えている&lt;/li&gt;
&lt;li&gt;しかしコンテナやサブシステム内の &lt;code&gt;Ollama&lt;/code&gt; は &lt;code&gt;CPU&lt;/code&gt; しか使わない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この場合、問題は &lt;code&gt;Ollama&lt;/code&gt; 自体ではなく、コンテナやサブシステムに GPU アクセス権限が渡っていない可能性があります。&lt;/p&gt;
&lt;h2 id=&#34;8-最後にログを見るやみくもに再インストールしない&#34;&gt;8. 最後にログを見る。やみくもに再インストールしない
&lt;/h2&gt;&lt;p&gt;ここまで確認したなら、次に有効なのは何度も再インストールすることではなく、&lt;code&gt;Ollama&lt;/code&gt; の起動ログと実行ログを直接見ることです。&lt;/p&gt;
&lt;p&gt;見るべきポイントは大きく 2 つです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GPU を認識できているか&lt;/li&gt;
&lt;li&gt;ドライバ、ライブラリ読込、デバイス初期化失敗などのエラーが出ていないか&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ログに「互換 GPU が見つからない」や「ROCm/CUDA の初期化に失敗した」といった内容が出ていれば、切り分けの方向はかなり明確になります。&lt;/p&gt;
&lt;h2 id=&#34;切り分け順序&#34;&gt;切り分け順序
&lt;/h2&gt;&lt;p&gt;最短ルートだけ覚えたいなら、次の順番で確認すると効率的です。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;ollama ps&lt;/code&gt; で &lt;code&gt;GPU&lt;/code&gt;、&lt;code&gt;CPU&lt;/code&gt;、混在ロードのどれかを確認する&lt;/li&gt;
&lt;li&gt;小さいモデルで試し、VRAM 不足を切り分ける&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nvidia-smi&lt;/code&gt;、&lt;code&gt;rocminfo&lt;/code&gt;、&lt;code&gt;rocm-smi&lt;/code&gt; で下位環境が正常か先に確認する&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ollama&lt;/code&gt; サービスを完全に再起動する&lt;/li&gt;
&lt;li&gt;特に AMD では &lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt; と &lt;code&gt;HSA_OVERRIDE_GFX_VERSION&lt;/code&gt; を確認する&lt;/li&gt;
&lt;li&gt;Docker / WSL ならデバイスマッピングを確認する&lt;/li&gt;
&lt;li&gt;最後にログを見て、具体的なエラーを特定する&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Ollama&lt;/code&gt; が &lt;code&gt;GPU&lt;/code&gt; ではなく &lt;code&gt;CPU&lt;/code&gt; を使ってしまう問題は、だいたい次の 3 パターンのどれかです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GPU がそもそも認識されていない&lt;/li&gt;
&lt;li&gt;GPU は見えているが、実行環境が &lt;code&gt;Ollama&lt;/code&gt; に届いていない&lt;/li&gt;
&lt;li&gt;GPU は動いているが、モデルが大きすぎて &lt;code&gt;CPU&lt;/code&gt; または混在メモリに落ちている&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この 3 つをまず分けて考えるだけで、切り分けはかなり速くなります。&lt;br&gt;
AMD 環境では特に、&lt;code&gt;ROCm&lt;/code&gt; のバージョン整合性、デバイス可視性、互換性用の環境変数を重視して確認するのがポイントです。&lt;/p&gt;
&lt;p&gt;元動画：&lt;a class=&#34;link&#34; href=&#34;https://www.bilibili.com/video/BV1cHoYBqE8k/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.bilibili.com/video/BV1cHoYBqE8k/&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
