Ollamaで会話して、AivisSpeechで声を出す。そんな自作のAIチャットを、ComfyUIの画像・動画生成と同じPC(VRAM 8GBのRTX 2080 SUPER)で動かしていると、すぐにVRAMが足りなくなる。
調べてみると、何もしていないときでもOllamaのモデルが約3.1GB、GPUで動くAivisSpeechが約1.1GB、VRAMをつかんだままだった。8GBのうち半分以上だ。
結論から書くと、画像・動画生成の前にollama stopでOllamaのモデルを外し、AivisSpeechはGPUを使わない(CPUの)起動にしておくのがおすすめだ。Ollamaは0.2秒ほどで約3.1GBが空き、次に話しかけたときの読み込みは約3秒で済む。AivisSpeechはCPUにしても短い文の声の速さはほとんど変わらなかった。
先に結果:どれだけ空いたか
PC全体のVRAM使用量をnvidia-smiで測った結果だ(2026年11月、RTX 2080 SUPER 8GB、Windows 11)。
| 状態 | VRAM使用量 |
|---|---|
| Ollamaのモデルなし | 792MiB |
| Ollamaでqwen3:4b(4bit)を読み込んだ後 | 3949MiB(約3.1GB増) |
ollama stopの後 |
792MiB(0.23秒で戻った) |
AivisSpeechは、GPUで起動したときとCPUで起動したときを比べて約1.1GBの差があった。
Ollamaのモデルを外す方法
1. 読み込まれているモデルを確認する
PowerShell(またはコマンドプロンプト)で次を実行する。
ollama ps
読み込まれているモデルがあると、NAME(モデル名)、SIZE、PROCESSOR、UNTILなどが表示される。私の環境では「3.2 GB」「100% GPU」「4 minutes from now」だった。100% GPUはモデルが丸ごとVRAMに載っているという意味で、UNTILは自動で外れるまでの残り時間だ。
2. ollama stopで外す(おすすめ)
ollama psで出たNAMEを指定して実行する。
ollama stop qwen3:4b-instruct-2507-q4_K_M
成功しても何も表示されない。もう一度ollama psを実行して、一覧が空になっていればOKだ。実測ではコマンドが0.13秒で戻り、0.23秒後にはVRAMが792MiBに戻っていた。
外したモデルは消えるわけではない。次に話しかけると自動で読み込み直される。かかった時間はこうだった。
| 状態 | 返答が終わるまで |
|---|---|
| 外した後に話しかけた | 3.34秒(うち読み込み3.00秒) |
| 読み込み済みで話しかけた | 0.19秒 |
3秒待つだけなので、画像・動画生成の前に毎回外しても困らない。
3. 何もしなくても5分で外れる
Ollamaは、最後に使ってから5分たつとモデルを自動で外す(公式FAQに書かれている初期設定)。実際に放置すると、300.8秒後にVRAMが792MiBに戻った。5分待てるなら、何もしなくてもいい。
自作アプリから外したいとき(keep_alive)
自作のスクリプトやアプリからOllamaを使っているなら、APIにkeep_aliveの0を送るとすぐに外れる。PowerShellならこう書く(11434はOllamaの標準のポート番号)。
Invoke-RestMethod http://localhost:11434/api/generate -Method Post -Body '{"model":"qwen3:4b-instruct-2507-q4_K_M","keep_alive":0}'
Windows PowerShell 5.1で、-ContentTypeを付けなくても動いた。0.10秒で外れ、返ってくる結果のdone_reasonはunloadになる。curlを使う場合はこうだ。
curl.exe http://localhost:11434/api/generate -d "{\"model\":\"qwen3:4b-instruct-2507-q4_K_M\",\"keep_alive\":0}"
会話のたびにkeep_aliveを付けて送れば、返答が終わった時点で毎回外れる。ただし毎回約3秒の読み込みが入るので、会話が続く間は付けないほうが快適だ。コマンドで1回だけ話しかけて、終わったらすぐ外したいときは--keepalive 0を付ける。
ollama run qwen3:4b-instruct-2507-q4_K_M --keepalive 0 "こんにちは"
5分という時間そのものを変えたいときは、環境変数OLLAMA_KEEP_ALIVEで変えられると公式FAQに書かれている(Windowsではユーザーの環境変数として設定する)。この記事では試していない。なお、APIで送ったkeep_aliveのほうが、環境変数より優先される。
AivisSpeechをCPUで動かす方法
AivisSpeech Engine(音声合成のエンジン本体、run.exe)は、--use_gpuを付けて起動したときだけGPUを使う。Windowsの場合、GPUはDirectMLで使われる(公式READMEより)。つまり--use_gpuを付けずに起動すればCPUで動き、VRAMを使わない。
AivisSpeech Engineのフォルダ(run.exeがある場所)をPowerShellで開いて、次のように起動する。10101はAivisSpeech Engineの標準のポート番号だ。
.\run.exe --host 127.0.0.1 --port 10101
GPUに戻したいときは、最後に--use_gpuを足すだけだ。
.\run.exe --host 127.0.0.1 --port 10101 --use_gpu
すでにGPUで動いているエンジンがある場合は、先にそれを閉じてから起動し直す(同じポートでは2つ起動できない)。
AivisSpeechのアプリ(エディター)からエンジンを起動している場合、私のPCではGPUを使うかどうかが%APPDATA%\AivisSpeech\config.jsonのuseGpuに保存されていた(falseならCPU)。アプリの設定画面での切り替え方は、この記事では確認していない。
CPUにすると声は遅くなる?
同じPC(Core i9-9900K)で、GPU起動とCPU起動の声の生成時間を比べた。
| 読ませた文 | GPU | CPU |
|---|---|---|
| 短い文(7文字) | 約0.9秒 | 約0.6秒 |
| 中くらい(28文字) | 約1.0秒 | 約1.4秒 |
| 長い文(43文字) | 約1.0秒 | 約2.2秒 |
| VRAM | CPUのほうが約1.1GB少ない | |
短い文はCPUのほうが速く、長い文は倍くらいかかる。私のチャットでは1文ずつ声にしているので、しゃべり始めまでの待ち時間はほとんど変わらなかった。ComfyUIの画像生成の速さも、AivisSpeechをCPUにしても変わらなかった(1枚 約6.4秒→約6.3秒)。
長い文章を一気に読ませる使い方なら、GPUのままのほうがいい。会話のように短い文を読ませるなら、CPUにしてVRAMを空けたほうが得だ。
VRAMの空き具合を確かめるコマンド
NVIDIAのグラボなら、PC全体のVRAM使用量を次のコマンドで見られる。外す前と後で比べると、どれだけ空いたか分かる。
nvidia-smi --query-gpu=memory.used,memory.total --format=csv
まとめ
- 画像・動画生成の前に
ollama stop モデル名。約3.1GB(4Bの4bitモデル)が0.2秒で空く。次に話しかけると約3秒で戻る - 放っておいてもOllamaは5分で外れる
- AivisSpeech Engineは
--use_gpuを付けずに起動するとCPUで動き、約1.1GB空く。短い文なら声の速さはほぼ同じ
空いたVRAMで動画を作る設定はこちらにまとめている。
参考
- FAQ - Ollama(How do I keep a model loaded in memory or make it unload immediately? / How can I tell if my model was loaded onto the GPU?)
- Aivis-Project/AivisSpeech-Engine - GitHub(--use_gpu、ポート番号10101)
計測環境:RTX 2080 SUPER(VRAM 8GB)、Core i9-9900K、Windows 11、Ollama 0.34.0、モデル qwen3:4b-instruct-2507-q4_K_M。2026年11月11日に計測。

コメント