![見出し画像](https://assets.st-note.com/production/uploads/images/165224501/rectangle_large_type_2_143c6a92f18f1c1492b30d59677e6696.jpeg?width=1200)
【中級者&上級者向け】(Ollama)Open WebUIの高速化【ローカルLLM】
はじめに
ローカルでLLMを実用的に利用できるOllama + Open WebUIですが、高度な設定変更や工夫を行うとより高速に利用できます。※ ただし、ソースをいじる事になるため、回復不可能な破壊を引き起こす事もあるのでご注意ください
※ 一般的な利用法は下記事で紹介しています。
① GPU(CUDA)を強制利用する
もちろんOllamaが管理するLLMはGPUで動作しています。
しかし、それ以外のGUIインターフェースその他を受け持つOpen WebUIは、(GPUありのDockerイメージでも)CPUまたは一部GPUでの動作になります。それらを強制的にGPU利用にする事で高速化をはかります。
Open WebUIでGPUが利用可能な機能は以下になります。
RAG(知識機能)利用時のEmbedding処理(※ 非Ollama利用時)
RAG(知識機能)利用時のReranker処理
音声入力時のローカルSTT(音声認識)
一般的な環境では、これらの処理はCPUで動作しますが、GPUで動作させる事で数倍〜10倍程度高速化できます。しかしデメリットとして、大量のGPUメモリ(VRAM)を常時専有してしまいます。貴重なGPUメモリを使い回す必要のあるローカル環境では、このデメリットは致命的です。
従って、GPU利用の利点が得られるのは、次の特殊な環境に限られます。
PCに複数のGPUを搭載していて、Ollama以外の処理に割り当てられる
GPU搭載の複数のPCがある
気にする事がないほどの大量のGPUメモリがある。またはSLMしか利用しないので、利用メモリを削っても構わない場合
筆者の場合は、複数のPCがあり、WindowsをAI専用サーバーにしています。そのため、デスクトップとしてのLinuxに搭載しているGPUをOpen WebUIに専有させる事ができます。
pip版のインストール
Open WebUIはDocker版が推奨されていますが、ソースを変更する場合は、pip版または、自ビルド版が必要になります。この記事ではpip版を利用します。
# pip版は3.11限定です
conda create -n open-webui python=3.11
pip install -U open-webui
ソースの変更
問答無用でGPUを利用する設定に変更します。「~/anaconda3/envs/open-webui/lib/python3.11/site-packages/open_webui/env.py」を変更します。
![](https://assets.st-note.com/img/1733822637-bJSkzf0ungHAUlYrREBda1yj.png)
※ アップデートすると無効化され、頻繁にコードの場所も変更されます。
pip版Open WebUIの起動方法(Linux or wsl)
※ WSLの場合は、あらかじめWSLでGPU(CUDA)を利用可能にしておく必要があります。
# Anaconda仮想環境に入る
. ~/anaconda3/etc/profile.d/conda.sh
conda activate open-webui
# 必要な場合は、faster-whisper音声入力のcuda問題対応(Linux)
export LD_LIBRARY_PATH=`python -c 'import os; import nvidia.cublas.lib; import nvidia.cudnn.lib; print(os.path.dirname(nvidia.cublas.lib.__file__) + ":" + os.path.dirname(nvidia.cudnn.lib.__file__))'`
# 起動
open-webui serve
② 実験的な新機能を利用してコンテキスト・メモリを削減する
Ollamaバージョン0.5.0より、num_ctxのGPUメモリ利用量を大幅に減らす事ができます。従来の2倍のnum_ctxが利用可能になります。
※ コンテキストサイズとは、LLMが利用するメモリ空間で、より多くの文字数を扱う事が可能になります。モデルによって上限がありますが、通常はモデル上限よりも物理的なGPUメモリ上限の方が先に限界に達します。
環境変数を設定します。
OLLAMA_FLASH_ATTENTION=1
OLLAMA_KV_CACHE_TYPE=q8_0
※ q4_0とq8_0を選べますが、q4_0だと多くのモデルで不具合が出ました
![](https://assets.st-note.com/img/1733823609-QBDtYKArw9ev8aCf0zZo5VmL.png?width=1200)
まとめ
ローカルPCでAIを利用する場合は、3Dゲームと同じで、ハード限界まで性能を試してみたくなるものです。