GPUとLinuxでLLMを爆速実行してみよう Linux環境における「Ollama」の利用方法と対処例付きで解説:クラウドサービスだけじゃない! ローカルPCやサーバ、Kubernetesで生成AI(4)
手軽に試せるラップトップ環境で、チャットbotを提供するオールインワンの生成AI環境構築から始め、Kubernetesを活用した本格的なGPUクラスタの構築やモデルのファインチューニングまで解説する本連載。今回は、ローカルでLLMを高速に動作させるため家庭用GPUを用いた実行方法、設定のポイントや効果、モデルごとの生成速度の比較結果を紹介します。
本連載第1〜3回まで、Open WebUIやOllama、Kubernetesを利用してローカルでLLM(大規模言語モデル)を利用するための環境の構築方法や、生成AI(人工知能)の活用に当たって押さえておきたいポイントを解説してきました。今回は、家庭用のGPUを用いてLLMを高速に動作させる設定のポイントやその効果、トラブルシューティングの方法などを、まとめて解説します。
目次
GPU環境でOllamaを設定してみよう
筆者のPC環境、構成について
OllamaはLinux、Windows、macOSとクロスプラットフォームに対応するソフトウェアです。今回解説する内容について、動作を確認した筆者のPC環境を紹介します。一般的なLinux環境であれば同様に実行できるでしょう。
- CPU:AMD Ryzen 7 9700X 8-Core Processor
- GPU:NVIDIA GeForce RTX 4090 24GB GPU Memory
- Memory:DDR5 64GB
- OS:Ubuntu 22.04 LTS(Long Term Support)
エンタープライズのGPUサーバではなく、BTO(Build To Order)のPCなどで構成可能なハイスペックGPUタワー相当を想定した構成となります。
筆者の動作確認環境ではNVIDIA製GPUを用いているため、記事内に登場するコマンドなどはNVIDIA製のソフトウェアで統一します。AMD製GPUを利用している場合は、適宜読み替えてください。
Ollamaのインストール
Ollamaのインストール方法は本連載内でも何度か解説してきましたが、本記事では、Linuxにインストールする方法を紹介します。
OllamaはLinux用のインストーラーを提供しているため、公式の手順に従って以下のコマンドで設定します。
curl -fsSL https://ollama.com/install.sh | sh
このインストーラーは主に、以下のことを設定してくれます。
- ドライバのインストール
- CUDAのインストール
- ollama server用のsystemdの設定
注:インストーラーはGPUについてNVIDIA製、もしくはAMD製のGPUであれば自動的に判定をして適切なドライバを設定しますが、以下の点にご注意ください。
- 筆者の環境のようにAMD製のCPUを利用している場合、オンチップのGPUを誤判定し、AMD製GPUの設定のみを適用する場合があります
- NVIDIA製GPUを搭載したPCで、インストールの結果「AMD GPU ready」が表示され、AMD製GPU用の設定が実施されてしまった場合は、NVIDIA製GPUを優先して設定するスクリプトをこちらで公開していますので、公式インストーラーの代わりに利用してみてください
- BIOSのセキュアブートオプションを有効化している場合、ドライバのインストール時にサードパーティードライバとして追加の設定が必要になります。この場合には設定したパスワードで起動時にドライバの有効化も必要です。必要に応じてセキュアブートオプションの有効化/無効化を検討してください
インストーラーが「NVIDIA GPU ready.」を表示すれば、インストールは完了です。ドライバおよびCUDAが正常にインストールされているかどうか、以下のコマンドを実行して確認してみてください。該当のGPUのステータスが表示されていれば、インストール完了です。
nvidia-smi
Ollamaが正常にインストールされているかどうかについては以下のコマンドを実行し、ステータスが「Active: active (running)」であることを確認してください。
systemctl status ollama
Ollamaの構成と設定
OllamaでGPUの設定をするに当たって、基本的なOllamaの構成を以下に示します。
ollama serveコマンドにより起動したサーバプロセスに対して、ollamaコマンドを実行して、Ollamaを操作します。
例えば、Metaのllama3.1を利用するために「ollama run llama3.1」と実行すると、サーバプロセスがOllama Libraryからllama3.1のモデルをPCにダウンロードし、子プロセスとしてollama runnerを起動します。ollama runnerの起動後は、ollama runコマンド実行時に起動したプロンプトをollama runnerに送信し、生成結果を取得するという仕組みです。
Ollama利用時にGPUを利用した推論処理はサーバプロセスの子プロセスであるollama runnerで実行されるため、GPU関連のパラメーターはサーバプロセス側に設定する必要があります。Ollamaは利用可能なGPUがある場合、自動的に利用しますが、「利用するGPUの枚数を制限したい」「試験的にGPUを利用したくない」という場合は、サーバプロセスである「ollama serve」の設定ファイルである/etc/systemd/system/ollama.serviceを開き、[Service]セクションに対して以下の設定を追加します。
[Service] Environment="CUDA_VISIBLE_DEVICES=-1" # GPUを利用しない場合
設定ファイルの変更後は以下のコマンドを実行し、設定を有効化してください。
sudo systemctl daemon-reload sudo systemctl restart ollama
特定のGPUのみを利用したい場合は、「CUDA_VISIBLE_DEVICES」に該当のGPUのインデックスを指定します。詳細はNVIDA公式ドキュメントを参照してください。
コラム:よく使うパラメーター
上記のEnvironmentの設定以外で、よく利用するOllamaの環境変数の設定を掲載しておくので参考にしてください。
設定パラメーター | 説明 | 設定例(デフォルト値) |
---|---|---|
OLLAMA_CONTEXT_LENGTH | モデルが受け付けるコンテキストの最大長。テキストを多く読み込ませて回答する場合、増やす必要がある消費メモリも増加する | 8192(2048) |
OLLAMA_DEBUG | デバッグメッセージを出力 | 1 |
OLLAMA_HOST | サーバがリッスンするアドレスとポートを設定。0.0.0.0で全てのネットワークインタフェースで待ち受ける。他のPCから接続したい場合、設定が必要 | 0.0.0.0:11434(127.0.0.1:11434) |
HTTP_PROXY | インターネットへの接続にプロキシが必要な環境で利用 | http://proxyhost:3128/ |
HTTPS_PROXY | 同上 | 同上 |
GPUを用いてローカルでLLMを実行してみよう
Ollamaは先述した通り、GPUが利用可能な環境は自動的にGPUを利用してLLMを実行します。llama3.1を実行する場合は、以下のコマンドを実行します。
ollama run llama3.1
これを実行すると以下のようにプロンプトの入力シェルが起動します。ここにプロンプトを入力することで、プロンプトに応じた文章が生成されます。
>>> Send a message (/? for help)
ollama runコマンドはデフォルトのプロンプトモード以外に、与えたプロンプトに対して1回だけ生成を実行することもできます。
また以下のようにコマンドを入力すると、プロンプトに対する生成内容と、生成に関する統計情報を確認できます。
ollama run llama3.1 "hello, how are you?" --verbose Hello! I'm just a computer program, so I don't have feelings or emotions like humans do. But thank you for asking! How can I assist you today? Do you need help with something in particular, or would you like to chat about a topic that interests you? I'm here to listen and provide information if you'd like. total duration: 1.499590771s load duration: 968.546821ms prompt eval count: 16 token(s) prompt eval duration: 60ms prompt eval rate: 266.67 tokens/s eval count: 70 token(s) eval duration: 470ms eval rate: 148.94 tokens/s
統計情報を確認すると以下のようなことが分かります。
- total duration:コマンドの実行が完了するまでにかかった時間
- load duration:指定されたモデル(Llama 3.1)をメモリに読み込むために要した時間
- prompt eval count:ユーザーが入力したプロンプトのトークン数
- prompt eval duration:ユーザーが入力したプロンプトをモデルが処理するために要した時間
- prompt eval rate:入力されたプロンプトの処理速度(トークン/秒)
- eval count:モデルが生成した応答のトークン総数
- eval duration:モデルが応答を生成するために要した時間
- eval rate:応答の生成速度(トークン/秒)
つまり、この出力例だと、RTX 4090を用いた生成で1秒当たり150トークンをモデルが生成できていることを確認できます。では、ollamaサーバにGPUを使わない設定をした場合と比較してみましょう。
GPUを使わない場合は、先述の通りsystemdの設定に環境変数で「CUDA_VISIBLE_DEVICES=-1」を設定します。同様のプロンプトでGPUを使わずCPUのみでモデルを実行した結果が以下のようになります。
ollama run llama3.1 "hello, how are you?" --verbose Hello! I'm just a computer program, so I don't have feelings like humans do. But thank you for asking! How can I assist you today? Do you need help with something or would you like to chat about a particular topic? I'm here to listen and provide information! total duration: 6.764870504s load duration: 1.280716386s prompt eval count: 16 token(s) prompt eval duration: 274ms prompt eval rate: 58.39 tokens/s eval count: 59 token(s) eval duration: 5.208s eval rate: 11.33 tokens/s
実行してみると体感できると思いますが、1秒当たり11トークン程度と、GPUを使わない場合は明らかに生成速度が下がります。このように、家庭用のGPUを活用することで、ローカルでLLMを快適に実行可能なことが分かります。
なお、ollama pullコマンドで取得できるモデルは、Ollamaが提供するモデルハブであるOllamaHubと一般的に広く利用されているHugging Faceから利用でき、先ほど利用したllama3.1は、OllamaHubから取得されたモデルになります。
OllamaHubで提供されているllama3.1の公式モデルをOllamaHubで確認すると、llama3.1はデフォルト(既定)では、8Bのモデルが利用され、Q4_K_Mで量子化されていることも確認できます。
Hugging Faceのモデルを利用する際には、gguf形式のモデルを利用できます。Hugging Faceで公開されているモデルの取得方法は、本連載第2回の「モデルハブの歩き方」の項目を参考にしてみてください。
モデルを選んで実行してみよう
llama3.1での文章生成を試すことができたので、今度は他のモデルを実行してみます。
OllamaHubを使ったモデル探し
Ollamaはモデルを管理し、提供するためのHub機能であるOllamaHubを提供しています。また、OllamaHubの中のOllama LibraryではOllamaが公式でメンテナンスするモデルを提供しています。ユーザーは個人のアカウントを作成し、自分でカスタマイズしたモデルをOllamaHubを通して提供することも可能です。
OllamaHubでモデルを探すには公式サイトの「model」のタブをクリックし、一覧から探すか、「model」タブの右側にある検索ボックスで検索します。
ここでは例としてMicrosoftのphi4を選んでみます。
それぞれのページにはモデルの詳細情報である「model」、生成時の設定で利用する「params」、推論時に利用する入出力の方法を指定する「template」、モデルの利用に関する「license」が記載されています。
家庭用のGPUでモデルを実行する際は、モデルのサイズが、GPUのメモリ容量内に収まっているかどうかを確認してください。GPUのメモリ容量がモデルのサイズよりも10〜20%ほど大きければ、モデルをスムーズに実行できるでしょう。
使用したいモデルが決まったらページ右上にあるコマンドを実行することで、ローカルで実行できます。phi4の場合は「ollama run phi4」で利用できます。
Googleのgemma3のように1つのモデルで複数のパラメーターサイズをサポートしている場合もあります。サイズの違うモデルについては、左側のプルダウンから利用したいパラメーターサイズのタグを指定することで任意のモデルを取得することができます。執筆時点のOllama Libraryでは、gemma3は1B(815MB)、4B(3.3GB)、12B(8.1GB)、27B(17GB)などのモデルが提供されています。
Ollama Libraryでは、公式が提供するモデルと個人が提供するモデルを区別するため、個人が提供するモデルは「<アカウント名>/<モデル名>」と記載されます。個人が提供するモデルを選ぶ場合は、モデルの概要や、配布時のライセンスをよく確認するようにしてください。
llama3.2、gemma3、phi3.5の比較
ここまではllama3.1(8B)、phi4(14B)のような一般的には小から中サイズ程度のLLMを試してきました。一方で、昨今ではより小さいパラメーターサイズのモデルも提供されるようになってきています。特に家庭用GPUの場合、GPUのメモリサイズの制約からこうした小型のLLMを中心に試すことになるため、ここでは1Bから4Bのパラメーター数のモデルを提供しているllama3.2、gemma3、phi3.5を中心に比較していきます。
llama3.2 | gemma3 | phi3.5 | |
---|---|---|---|
開発企業 | Meta | Microsoft | |
パラメーター数 | 1B、3B | 1B、4B(12B、27Bもある) | 3.8B |
ファイルサイズ | 1.3GB、2.0GB | 815MB、3.3GB | 2.2GB |
生成精度の比較
それぞれのモデルが自然な会話ができるかどうかを確認するため「渋谷から新宿に行くにはどうしたらいいですか?」という質問をしてみました。
この質問に対する各モデルの出力結果は以下のようになりました。
- llama3.2 1B
渋谷と新宿の両方を訪れるのは、どちらも東京都内にある大きな都市です。以下は二つのアクセス方法の詳細です。
### 渋谷
1. ** subway**: 都心駅から渋谷駅まで(東武池袋線)です。
2. **タクシー**: 都心駅より約20分、またはタクシーで約30-40分のระยะzeitです。アクセスする際は、自転車やモバイル電話にルートを
入力して運転者からアドバイスを受けます。
3. **バス**: 都心駅から渋谷駅まで(大手町線)と新宿駅から渋谷駅まで(渋谷線)です。代金は100円と同じです。
### 新宿
1. **電車**: 桑agtowa駅から新宿駅まで(新日本橋線)です。
2. **タクシー**: 桑agtowa駅より約15分、またはタクシーで約20-25分のระยะzeitです。アクセスする際は、自転車やモバイル電話にルー
トを入力して運転者からアドバイスを受けます。
3. **バス**: 桑agtowa駅から新宿駅まで(本中町線)と新宿駅から桜木原駅まで(東西線)です。代金は100円と同じです。
### まとめ
* 渋谷:電車(池袋線)またはタクシー(約20-40分)
* 新宿:電車(新日本橋線)またはタクシー(約15-25分)
このアクセス方法を選択する際には、自転車やモバイル電話にルートを入力し運転者からアドバイスを受けることをお勧めします。
- llama3.2 3B
渋谷から新宿に行く場合、以下のオプションがあります。
1. **電車(JR線)**: 渋谷駅から新宿駅への直通特急(e)や快速(R)が毎時多数運行しており、約10-15分で到着します。
2. **バス**: 渋谷の神楽坂交差点から新宿の神保町交差点までの経路があります。渋谷バスの「神楽坂線」や「渋谷-新宿線」などが利用可
能です。運行時間は約20-30分で、渋谷駅でも乗り換えができます。
3. **タクシー**: 渋谷から新宿まで約10-15分程度で到着します。
4. **歩行(かどき)**: 渋谷から新宿まで約2.5km、約30-40分かかります。
各方法の利点と欠点を考慮して、以下のような選択肢があります。
*電車:早く行くことができる、多くの便が運行します。ただし、料金は高く、乗客が多いと席が少なくなる可能性があります。
*バス:安い、かくもな人が混むことがあるが、運転士の指示に従って、安全に乗ることができます。
*タクシー:高速で、早く到着するでしょうが、高価です。かどきは自由ですが、遠慮をしてください。
*歩行(かどき):自然に、空気を呼ぶため良い選択肢ではありますが、遠慮が必要です。
最終的な選択は、その時点での状況や時間の都合に応じて決まるでしょう。
- gemma3 1B
渋谷から新宿に行くには、いくつかの方法があります。
**1. 電車**
* **JR中央線・総武線:** 渋谷駅から中央線、総武線に乗り換えて、新宿駅まで行けます。約10分〜20分ほどで到着します。
* **都営地下鉄:** 渋谷駅から都営地下鉄の二子玉置線に乗り換えて、新宿駅まで行けます。約10分〜15分ほどです。
* **現金/交通系ICカード:** 渋谷駅から新宿駅まで、現金やSuica、PASMOなどの交通系ICカードを利用すれば、スムーズに移動できます。
**2. バス**
* **バス:** 渋谷から新宿駅まで、市バスやバス路線を利用できます。約30分〜60分ほどです。
* **リムジンバス:** 渋谷から新宿駅まで、リムジンバスが運行しています。
**3. 徒歩**
* 渋谷駅から新宿駅までは、約20分〜30分ほどです。
**4. カープール/タクシー**
* **カープール:** 渋谷から新宿まで、カープールを利用できます。約30分〜60分ほどです。
* **タクシー:** 約30分〜45分ほどです。
**おすすめの移動手段**
* **時間:** どの移動手段を選ぶにしても、時間に余裕があると良いでしょう。
* **予算:** 交通費やガソリン代などを考慮して、最適な移動手段を選びましょう。
* **快適性:** 混雑状況や交通状況を考慮して、快適な移動手段を選びましょう。
**補足**
* 各交通機関の時刻表や運賃は、以下のサイトで確認できます。
* JR中央線・総武線: [https://www.jreast.co.jp/](https://www.jreast.co.jp/)
* 都営地下鉄: [https://www.metrolux.co.jp/](https://www.metrolux.co.jp/)
* バス: [https://www.bus. jappost.jp/](https://www.bus. jappost.jp/)
* リムジンバス: [https://www.limesin.co.jp/](https://www.limesin.co.jp/)
ご自身の状況に合わせて、最適な移動手段を選んでください。
- gemma3 4B
渋谷から新宿へ行く方法はいくつかあります。主な方法とそれぞれの特徴をまとめました。
**1. 鉄道(最も一般的)**
* **JR山手線:** 渋谷駅で山手線に乗車し、新宿駅で下車。乗り換えなしで移動できます。所要時間は約20分〜30分です。
* [https://www.jreast.co.jp/](https://www.jreast.co.jp/)
* **東急線:** 渋谷駅で東急東横線または東急大井町線に乗り、新宿駅で下車。乗り換えが必要です。所要時間は約15分〜25分です。
* [https://www.tokyu-rail.co.jp/](https://www.tokyu-rail.co.jp/)
**2. タクシー**
* 渋谷駅からタクシーで新宿駅まで約20分〜30分です。料金は交通状況によって異なりますが、約2,000円〜3,000円程度になることが多いです。夜間や雨天時は
混みやすく、所要時間が長くなる可能性があります。
**3. その他**
* **バス:** 渋谷駅から新宿駅方面へ向かうバスも運行されています。ただし、時間帯によっては本数が少ないため、鉄道の方が便利です。
**おすすめの移動手段**
* **時間がない場合や、手軽さを重視するなら:** JR山手線
* **混雑を避けたい場合や、景色を楽しみたい場合:** 時間帯によっては、山手線よりも東急線の方が空いていることがあります。
* **長距離移動や、荷物が多い場合:** タクシー
**移動時間と料金の目安**
* **JR山手線:** 約20分〜30分、料金は880円〜1,100円程度
* **東急線:** 約15分〜25分、料金は800円〜900円程度
* **タクシー:** 約20分〜30分、料金は2,000円〜3,000円程度
**補足**
* 最新の運行状況や料金は、各鉄道会社のホームページでご確認ください。
* 移動時間や料金は、交通状況によって変動する可能性があります。
より詳細な情報や、現在地の情報に基づいて最適なルートを検索したい場合は、以下のアプリやサイトをご利用ください。
* **Google Maps:** [https://maps.google.com/](https://maps.google.com/)
* **Yahoo! MAP:** [https://map.yahoo.co.jp/](https://map.yahoo.co.jp/)
* **NAVITIME:** [https://www.navitime.co.jp/](https://www.navitime.co.jp/)
これらの情報をもとに、ご自身の状況に合わせて最適な移動方法を選んでみてください。
- phi3.5
渋谷から新宿へ移動する方法の一般的なガイドは以下の通りです:
1. **公共交通機関を利用**: JR東京駅に到着した場合、都内を横断する「Yamanote線」または「Saikyu線」に乗車。目的地の新宿で降り立
つ前提となりますが、行き先に応じて列車を利用してください:
- 渋谷からYamanote線へ: 渋谷駅(S13)より北の出発口で降車。新宿駅は2番目に近い「三ノ輪」が利用可能です。
- Saikyu線を使う場合、JR御 partiellement used in the above answer, as it is directly related to providing public
transportation options from Shibuya to Shinjuku. If you need further explanation on how these lines operate or other
alternatives (such as bus services), please feel free to ask for more details!
2. **車やタクシーを利用**: もし、スピード感が重要であるなどの理由から自家用車を持っている場合は、高速道路(東名/中央/新小牛地
下街道)や都心部まで入り、最終的に渋谷と新宿間の交通状況に基ed依頼するか車を調べてください。
3. **サードライダーやシェアリングカー**: Appsで自動二次市場の利用も可能で、渋谷と新宿間には往き先から送ってくれる交通手段を見
つけることが出来ます。
必要な所到着時間や予算等の詳細情報があれば、よりパーソナライズされたアドバイスに役立ててもらえるでしょう。
モデルの出力結果を比較してみると、それぞれ特徴があるのが分かります。
llama3.2 1Bでは部分的に日本語で生成できていません。また、渋谷から新宿という両端を結ぶ経路への質問だということ自体を認識できておらず、各駅のアクセシビリティーにのみ言及しています。
llama3.2 3Bでは、経路案内として標準的なフォーマットでの回答となっていますが、前提知識がないのか、経路情報が正しくありません。
gemma3では1B、4Bともに渋谷から新宿へという経路については一定程度答えられていますが、1Bは経路情報に正しくないものが含まれていたり、参照情報のURLが架空のものになっていたりするなど、LLM独特のハルシネーションが見られます。4Bについては1Bより改善が見られていますが、一部1B同様正しくない情報が含まれています。
phi3.5では「Yamanote線」といったより正解に近い情報を持っているものの、関連する駅の情報が間違っている他、部分的に英語で生成されています。
このように、同等のサイズのモデルであっても出力結果はモデルによって異なるため、利用したいシチュエーションに合わせて適切に選んでいく必要があります。また小規模なモデルの場合、前提となる知識を持っていない可能性も高いため、比較する際には注意が必要です。
今回、出力結果を比較したモデルの生成速度を比較すると以下の通り、1Bが大幅に高速である以外についてはほぼ同等程度でした。一方でこれらの小型モデルは本記事の最初に登場したllama3.1 8Bの150トークン/秒と比較すると高速です。LLMを本格的に活用する際は、モデルの精度と生成速度のトレードオフを考慮して選択する必要があるでしょう。
llama3.2 1B | llama3.2 3B | gemma3 1B | gemma3 4B | phi3.5 3.8B | |
---|---|---|---|---|---|
生成速度(トークン/秒) | 390.74 | 254.01 | 287.57 | 165.91 | 252.96 |
おまけ
なお、今回利用したRTX4090のメモリ(24GB)で実行可能な上限サイズのモデルとしてgemma3 27B(17GB)を試した結果、以下の通り、4B以下のモデルと比較して精度の高い出力を10秒以内に得ることができました。CPUで実行すると1分以上かかるため、市販のGPUであっても、十分快適に生成できることが分かります。
ollama run gemma3:27b "渋谷から新宿に行くにはどうしたらいいですか?" --verbose
渋谷から新宿への行き方はいくつかあります。
**1. 電車**
* **JR線:** 渋谷駅からJR線(山手線、埼京線、中央線など)で新宿駅まで、約10〜15分です。乗り換えなしで行けるため、最も一般的な方法です。
* **東京メトロ:** 渋谷駅から東京メトロ副都心線で新宿三丁目駅まで、約8分です。新宿三丁目駅から新宿駅までは徒歩で約10分です。
* **小田急線:** 渋谷駅から小田急線で新宿駅まで、約15分です。
**2. バス**
* 渋谷駅から新宿駅西口まで、複数のバス路線があります。所要時間は約20〜40分で、道路状況によって変動します。
* 高速バスも利用できますが、予約が必要な場合があります。
**3. タクシー**
* タクシーを利用すると、約20〜30分で新宿駅まで行けます。料金は時間帯や道路状況によって変動しますが、約2,000円〜3,000円程度が目安です。
**4. 徒歩、自転車**
* 渋谷から新宿までは、徒歩や自転車でも移動できますが、距離が約5kmあるため、時間がかかります。
**おすすめ**
一番早く、確実なのは、JR線で移動することです。
**その他**
* Google マップなどの地図アプリで、出発地と目的地を入力すると、最適なルートや交通手段を検索できます。
* 時間帯や混雑状況によって、所要時間や料金が変動する場合があります。
ご希望の移動手段や、重視するポイント(時間、料金など)があれば、より詳しくご案内できます。
total duration: 17.150398883s
load duration: 8.058616096s
prompt eval count: 19 token(s)
prompt eval duration: 112.898646ms
prompt eval rate: 168.29 tokens/s
eval count: 388 token(s)
eval duration: 8.978301008s
eval rate: 43.22 tokens/s
GPU利用時のトラブルシューティング
deepseek-r1(70b)のような大きなモデルを少ないRAM/VRAMのPCで実行する際に、メモリ不足でモデルのロードが失敗したり、GPUのVRAM(GPUメモリ)にモデルが乗り切らず遅くなったりすることがあります。
ここでは、そのような問題を切り分けるためのトラブルシューティングを解説します。
システムメモリが足りず、Ollamaが終了する
システムメモリが少ないマシンでモデルを実行する際、実行時に下記のエラーが出力され終了することがあります。例えば、「Google Colab」でVRAM16GB以下のインスタンスでdeepseek-r1:70bを実行すると、次のようなエラーが発生します。
# ollama run deepseek-r1:70b Error: model requires more system memory (29.1 GiB) than is available (11.2 GiB)
このモデルの実行に29.1GiBを必要としていますが、11.2GiBしかCPUで利用できるシステムメモリがないため失敗しています。このエラーが発生した場合は、より小さいモデルを利用するか、PCのメモリ(RAM)を増設したり、RAMが多いインスタンスに変更したりしてください。
新しいモデルの実行に失敗する
新しくリリースされたモデルを実行する際に、下記のようなエラーが出てモデルのプルに失敗することがあります。
# ollama pull gemma3:1.5b pulling manifest Error: pull model manifest: 412: The model you are attempting to pull requires a newer version of Ollama. Please download the latest version at: https://ollama.com/download
インストールされているOllamaのバージョンが古く、新しいモデルがサポートされていない場合、このメッセージが表示されます。このメッセージが表示されたら、Ollamaのバージョンを最新バージョンに更新してください。
GPUを利用しているのにモデルの実行が遅い
GPUを利用しているのにかかわらずモデルの実行が遅いと感じる場合、一部の処理にCPUが利用されている可能性があります。まずは、nvidia-smiコマンドでGPUが利用されているかどうか確認します。
GPU(★)印の利用状況によって原因を切り分けます。
1. GPUの使用量が100%に達しておらず時々低い値を示す場合
VRAMの不足により、全てのデータがGPU上のVRAMに載っておらず、一部の処理をCPUで行っていることが考えられます。そのような場合は、journalctlコマンドでログを確認してください。
$ sudo journalctl -u ollama ... llama_model_loader: - kv 0: general.architecture str = gemma3 llama_model_loader: - kv 1: general.name str = gemma-3-27b-it ...(中略)... load_tensors: offloading 39 repeating layers to GPU load_tensors: offloaded 39/47 layers to GPU◆ load_tensors: CUDA_Host model buffer size = 3049.61 MiB load_tensors: CUDA0 model buffer size = 11848.99 MiB load_tensors: CPU model buffer size = 922.85 MiB...
上記のようなメッセージが出力されている場合(◆の部分に注目)、gemma3を読み込んだ際に、このモデルは47レイヤーのテンソル(モデルを表現するための基本的なデータ構造)を持っていますが、39レイヤーしかGPUにオフロードされていないことが確認できます。この場合、残り8レイヤーがCPU上で処理されるだけでなく、処理結果をCPU-GPU間で受け渡しをする必要があり、GPUが利用されている割合以上に遅くなります。
2. GPUの使用率が100%の場合
★の部分がほぼ100%の場合、GPUは正しく利用されています。この場合、処理速度はモデルのサイズに依存するため、より高速な処理速度が必要な場合はサイズの小さいモデルを利用する必要があります。
おわりに
今回は、ローカルPCやオンプレミスで生成AI環境を構築したい人向けに、ローカルでLLMを高速に動作させるため家庭用のGPUを用いた実行方法、設定のポイントや効果、モデルごとの生成速度の比較をしてみました。
公開されているモデルはどれも複雑そうで、どう使ってみたらよいのかが分からないという人は、本記事に書かれている内容を参考に、さまざまなモデルをぜひ試してみてください。
Copyright © ITmedia, Inc. All Rights Reserved.