Ubuntu × GeForce RTX 3090 でローカルLLMを動かす ― Ollama + gpt‑oss:20b + OpenWebUI
Ubuntu 22.04 LTS × GeForce RTX 3090 でローカルLLMを動かす ― Ollama + gpt‑oss:20b + OpenWebUI
はじめに
近年、LLM(大規模言語モデル)をローカルで動かすニーズが高まっています。 本記事では、Ubuntu 22.04 LTS と GeForce RTX 3090 を使い、 Ollama で gpt‑oss:20b を管理し、OpenWebUI でブラウザベースのチャット UI を構築する手順を紹介します。 GPU アクセラレーションを最大限に活かす設定や、トラブルシューティングのポイントもまとめています。
Ubuntu 環境の準備
2‑1. 基本セットアップ
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential git curl wget
2‑2. NVIDIA ドライバと CUDA Toolkit
# 1. ドライバインストール
sudo ubuntu-drivers autoinstall
# 2. CUDA 12.x インストール
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
sudo sh cuda_12.1.0_530.30.02_linux.run
`/usr/local/cuda-12.1/bin` を PATH に追加し、`nvcc --version` で確認。
2‑3. cuDNN のインストール
公式サイトから cuDNN 8.x をダウンロードし、`/usr/local/cuda-12.1/` に展開。 `LD_LIBRARY_PATH` に `lib64` を追加。
Ollama のインストールと設定
3‑1. バイナリ取得
curl -fsSL https://ollama.com/install.sh | sh
`/usr/local/bin/ollama` が PATH に入ります。
3‑2. GPU 検出確認
ollama version
# 例: Ollama 0.3.0 (GPU: NVIDIA RTX 3090)
3‑3. デフォルトモデル一覧
ollama list
必要に応じて `ollama pull` でモデルを追加。
gpt‑oss:20b のダウンロードと登録
4‑1. モデル取得
ollama pull gpt-oss:20b
ダウンロード時に SHA256 チェックサムが表示されるので、公式サイトと照合してください。
4‑2. モデル登録
Ollama は自動で登録しますが、手動で確認したい場合は `ollama show gpt-oss:20b` で詳細情報を確認。
OpenWebUI の導入
5‑1. Docker Compose で起動
git clone https://github.com/open-webui/open-webui.git
cd open-webui
cp .env.example .env
# .env で OLLAMA_HOST=http://host.docker.internal:11434 に設定
docker compose up -d
ブラウザで http://localhost:8080
にアクセスすると UI が表示されます。
5‑2. API トークン設定
OpenWebUI から Ollama へ接続する際にトークンが必要な場合は
`.env` に OLLAMA_API_KEY=YOUR_TOKEN
を追加。
Ollama 側で ollama serve --api-key YOUR_TOKEN
を起動しておくと安全です。
GeForce RTX 3090 で推論を高速化
6‑1. CUDA バージョン確認
nvidia-smi
GPU の温度・使用率・メモリ使用量をリアルタイムで確認できます。
6‑2. バッチサイズ調整
gpt‑oss:20b は 20 B パラメータでメモリを多く消費します。
OLLAMA_MAX_BATCH_SIZE
を 8〜16 に設定すると、GPU メモリを効率的に使えます。
export OLLAMA_MAX_BATCH_SIZE=12
6‑3. メモリ管理のベストプラクティス
--max-memory
オプションで GPU メモリ上限を設定(例:--max-memory 24GB
)。--gpu-memory
で GPU メモリの割り当てを細かく制御。--cpu
オプションを使って CPU での推論に切り替えるケースも検討。
6‑4. サンプルスクリプト
import ollama
def chat(prompt):
response = ollama.chat(
model="gpt-oss:20b",
messages=[{"role":"user","content":prompt}],
stream=True
)
for chunk in response:
print(chunk["content"], end="", flush=True)
if __name__ == "__main__":
chat("こんにちは、今日の天気は?")
実行時に GPU 使用率が 80% 以上になることが多いです。
ローカルLLMの動作確認
- OpenWebUI で質問を入力。
- レスポンス時間を測定(ブラウザの開発者ツール → Network)。
- CPU/GPU 負荷を
htop
/nvidia-smi
で確認。 - トークン生成量は
ollama logs
で確認可能。
トラブルシューティング
兆候 | 原因 | 対処 |
---|---|---|
CUDA エラー | ドライバ/CUDA バージョン不一致 | sudo apt install nvidia-driver-535 などで再インストール |
モデルダウンロード失敗 | ネットワーク不安定 | curl -L で再試行、または --retry オプション |
OpenWebUI 接続不可 | ポート競合 | docker compose down → docker compose up で再起動 |
GPU 使用率 0% | Ollama が CPU で動作 | OLLAMA_GPU=1 を設定、または --gpu オプションを確認 |
まとめ
Ubuntu 22.04 + RTX 3090 + Ollama + gpt‑oss:20b + OpenWebUI の環境構築が完了しました。 GPU アクセラレーションを活かした高速推論と、UI での簡易操作が実現できました。ぜひ、実際の業務や研究に活かしてみてください。
コメント
コメントを投稿