Ollama + Qwen3 セットアップ(Ubuntu上)
1. Ollamaの説明
Ollamaは、LLM(大規模言語モデル)をローカルで実行するためのオープンソースツールである。ユーザーはクラウドに依存せず、Qwen、Llama、Mistralなどの様々なAIモデルを実行できる。
主な特徴
- ローカル実行: インターネット接続なしでモデルを実行可能
- GPU高速化: NVIDIA・AMD GPUに対応し、CPUのみの実行と比較して高速化
- 多様なモデル対応: Qwen3、Llama 3.2、Mistral、Gemmaなど様々なオープンソースモデルをサポート
- マルチプラットフォーム: Windows、macOS、Linuxに対応
- API提供: RESTful APIを通じて簡単に統合可能
- カスタマイズ: Modelfileを使用してモデルの設定やパラメータをカスタマイズ可能
実行方法
- モデルのダウンロード
ollama pull qwen3:14b
- モデルの実行
ollama run qwen3:14b
APIの活用
Ollamaは11434ポートでAPIサーバーを実行する。そして、APIを提供する。
curl http://localhost:11434/api/chat -d '{
"model": "qwen3:14b",
"messages": [{"role": "user", "content": "こんにちは"}]
}'
2. 概要
ここで説明するスクリプトは、Ubuntu上にOllamaをインストールし、systemdによる起動管理のもと、大規模言語モデル(Qwen3:14Bなど)をNVIDIA GPU対応で稼働させるための環境を構築する。
3. 前提条件
ハードウェア:
- NVIDIA GPU搭載マシン(CUDA対応)
OS・環境:
- Ubuntu 20.04または22.04または24.04(systemd, ufw対応)
- sudo権限を持つユーザアカウント
ネットワーク:
- ポート11434が開放できる環境
- GitHubとOllamaの公式サーバに接続可能なネットワーク
4. 実行方法
スクリプトの準備:
末尾のスクリプトをsetup_ollama.shに保存
chmod +x setup_ollama.sh
スクリプトの実行:
./setup_ollama.sh
実行完了後の確認事項:
systemctl status ollama.service
が"active (running)"と表示されているかcurl http://localhost:11434
によってポートが開いているかnvidia-smi
でGPUが正しく認識されているか
5. カスタマイズ可能なパラメータ
スクリプト先頭で定義されている以下の変数を必要に応じて編集することで構成を変更できる:
OLLAMA_VERSION
: Ollamaのインストールバージョン(例: "v0.1.29")MODEL_NAME
: 使用するLLM名(例: "qwen3:14b")OLLAMA_PORT
: 外部公開するポート番号(例: 11434)- ファイアウォール設定(必要に応じて
ufw allow from ...
によるIP制限を追加)
6. トラブルシューティング
- nvidia-smiが動作しない
- 原因例: GPUが認識されていない、NVIDIAドライバが未インストール
- 対策: BIOS設定でGPUを有効にする、または
sudo ubuntu-drivers install
を再実行
- Ollamaサービスが起動しない
- 原因例: 使用ポート11434が他のプロセスで使用中/ollamaユーザに実行権限がない
- 対策:
journalctl -u ollama.service
でログを確認し、ポート重複や権限をチェック
- モデル(例:qwen3:14b)のダウンロードが失敗する
- 原因例: ネットワーク制限(プロキシ環境、ファイアウォール、DNS設定など)
- 対策:
ping ollama.com
やcurl
でネットワーク疎通を確認
- curl http://localhost:11434が失敗する
- 原因例: サービスが未起動/ファイアウォールによりブロックされている
- 対策:
systemctl status ollama.service
で稼働状態を確認/ufwの設定を見直す
- GPUが使用されていない(CPUで処理されてしまう)
- 原因例: NVIDIAドライバは入っているが、CUDA対応が不完全
- 対策:
nvidia-smi
でGPU使用状況を確認/ollama run
でGPU使用ログを確認
7. セキュリティ上の注意
- 公開ポート(11434)にはIP制限をかけること(
ufw allow from ...
を推奨) - ollamaユーザは
--no-create-home
および--nologin
によってログイン不可に設定 - サービスはsystemdによって自動起動・再起動が有効化されている
8. アンインストール手順(オプション)
以下のコマンドによりOllama関連の設定をすべて削除できます:
sudo systemctl stop ollama.service
sudo systemctl disable ollama.service
sudo rm /etc/systemd/system/ollama.service
sudo systemctl daemon-reload
sudo deluser --system ollama
sudo rm /usr/local/bin/ollama
9. Ollama + Qwen3 セットアップを行うスクリプト(Ubuntu上)
#!/bin/bash
###############################################################################
# Ollama 自動セットアップスクリプト(Ubuntu用)
#
# このスクリプトは以下を一括で行います:
# 1. OllamaバイナリのGitHubからの安全なインストール
# 2. ollama専用ユーザの作成(セキュリティ向上)
# 3. systemdサービスユニットの構成と有効化
# 4. GPUドライバのインストール確認
# 5. モデル(qwen3:14b)のダウンロード
# 6. UFWによるファイアウォール設定
#
# 🔧 必須条件:
# - Ubuntu 20.04 または 22.04
# - NVIDIA GPU(CUDA対応)
# - sudo 権限
#
# 注意事項:
# - 公開ポート11434は必要に応じてIP制限を追加してください
# - ollamaユーザはログイン不可に設定しています
# - モデルのダウンロードにはインターネット接続が必要です
#
# 実行方法:
# chmod +x setup_ollama.sh
# ./setup_ollama.sh
#
###############################################################################
set -e
### 設定
OLLAMA_VERSION="v0.1.29"
OLLAMA_PORT="11434"
OLLAMA_USER="ollama"
MODEL_NAME="qwen3:14b"
echo "=== 1. Ollama バイナリのインストール ==="
wget -q https://github.com/ollama/ollama/releases/download/${OLLAMA_VERSION}/ollama-linux-amd64 -O ollama
chmod +x ollama
sudo mv ollama /usr/local/bin/ollama
echo "→ インストール完了: $(ollama --version)"
echo "=== 2. ユーザ作成(存在しない場合のみ) ==="
if ! id "$OLLAMA_USER" &>/dev/null; then
sudo useradd --system --no-create-home --shell /usr/sbin/nologin "$OLLAMA_USER"
echo "→ ユーザ $OLLAMA_USER 作成済"
else
echo "→ ユーザ $OLLAMA_USER は既に存在"
fi
echo "=== 3. systemd ユニット作成 ==="
sudo mkdir -p /var/lib/ollama
sudo chown ollama:ollama /var/lib/ollama
sudo tee /etc/systemd/system/ollama.service > /dev/null <<EOF
[Unit]
Description=Ollama AI Server
After=network.target
[Service]
User=${OLLAMA_USER}
Group=${OLLAMA_USER}
ExecStart=/usr/local/bin/ollama serve
Environment="OLLAMA_HOST=0.0.0.0:${OLLAMA_PORT}"
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
WorkingDirectory=/var/lib/ollama
[Install]
WantedBy=multi-user.target
EOF
echo "→ systemd ユニット作成完了"
echo "=== 4. systemd 起動と有効化 ==="
sudo systemctl daemon-reload
sudo systemctl enable ollama.service
sudo systemctl start ollama.service
sleep 2
sudo systemctl status ollama.service --no-pager
echo "=== 5. GPU ドライバインストール ==="
sudo ubuntu-drivers install -y || echo "→ ドライバ既にインストール済?"
nvidia-smi || echo "NVIDIA GPU"
echo "=== 6. モデルダウンロード(${MODEL_NAME})==="
ollama pull ${MODEL_NAME}
# モデルキャッシュを $HOME/.ollama に保持します。
echo "=== 7. UFW ファイアウォール設定 ==="
sudo apt update
sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow ${OLLAMA_PORT}/tcp
# 必要なら制限付きアクセス(例:ローカルネットのみ)
# sudo ufw allow from 192.168.1.0/24 to any port ${OLLAMA_PORT} proto tcp
sudo ufw --force enable
sudo ufw status numbered
echo "完了! Ollama はポート ${OLLAMA_PORT} で稼働中です"