見出し画像

【中級者&上級者向け】(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」を変更します。

51行目以降を編集して、cudaを強制的に利用するようにします

※ アップデートすると無効化され、頻繁にコードの場所も変更されます。

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だと多くのモデルで不具合が出ました

Windowsのシステム環境変数の変更

まとめ

ローカルPCでAIを利用する場合は、3Dゲームと同じで、ハード限界まで性能を試してみたくなるものです。


いいなと思ったら応援しよう!