ローカルLLMセットアップガイド(v40)
1. 概要および事前要件
ローカルLLM環境には、高いプライバシー保護、低いレイテンシ、そしてポリシーやインフラの制約を回避できるといった利点があります。このガイドでは、Linuxマシン上で最適化されたローカルLLMを設定するための実用的な方法を提供します。
事前要件:
-
OS: Ubuntu 20.04 以上 または Debian 11 以上
-
CPU: 最低 4コア、推奨 8コア以上
-
RAM: 最低 16GB、推奨 32GB以上
-
GPU: NVIDIA GTX 10xx 以上(CUDA 11.8 以上が必要)
-
Storage: 最低 50GB の空き容量(モデルファイルの容量は非常に大きいです)
# システム情報の確認
lscpu
free -h
nvidia-smi
2. フレームワーク比較
| フレームワーク |
特徴 |
利点 |
欠点 |
| llama.cpp |
C++で実装された最適化ランタイム |
高性能、依存関係が最小 |
コマンドラインベース |
| Ollama |
Dockerベースの管理ツール |
インストールが簡単、モデル管理が容易 |
リソース消費が大きく、モデルのロード速度が遅い |
| vLLM |
Pythonベースで高性能 |
高いトークン処理量 |
設定が複雑で、多くのメモリが必要 |
| LocalAI |
REST APIベースで、さまざまなエンジンをサポート |
モデル互換性が高い、APIベース |
複数エンジン対応による複雑さ |
推奨: llama.cppを使って自分で構築する
3. インストール手順(llama.cppベース)
3.1 リポジトリのクローンとビルド
# 必須パッケージのインストール
sudo apt update
sudo apt install git cmake build-essential python3-pip -y
# llama.cpp リポジトリのクローン
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
# ビルド
make clean
make
3.2 GPUサポートの有効化(NVIDIA)
# CUDA のインストール(必要な場合)
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get install cuda-toolkit-11-8 -y
# llama.cpp のビルド時に CUDA を有効化
make clean
CUDA=1 make
3.3 実行スクリプトの作成
# ~/llama_run.sh を作成
cat > ~/llama_run.sh << 'EOF'
#!/bin/bash
cd ~/llama.cpp
./main -m ./models/llama-2-7b-chat.Q4_K_M.gguf \
-p "Qwen: " \
-n 512 \
-ngl 35 \
--temp 0.7 \
--repeat-penalty 1.1
EOF
chmod +x ~/llama_run.sh
4. モデル選択ガイド
| モデル |
説明 |
推奨する使用ケース |
| Llama-2-7B |
ベースモデル、70億パラメータ |
一般的なチャットボット、文法分析 |
| Llama-2-13B |
より強力なベースモデル |
高い精度が必要な作業 |
| Mistral-7B |
最適化されたベースモデル |
高速推論、高い性能 |
| Qwen-7B |
アリババの中国語最適化モデル |
中国語コンテンツの処理 |
例:モデルのダウンロード
# モデル用ディレクトリの作成
mkdir -p ~/llama.cpp/models
# Qwen-7B モデルのダウンロード(例)
wget https://huggingface.co/Qwen/Qwen-7B-Chat-GGUF/resolve/main/qwen-7b-chat-q4_k_m.gguf -O ~/llama.cpp/models/qwen-7b-chat-q4_k_m.gguf
5. 量子化タイプの説明
| 量子化 |
説明 |
性能 |
| Q4_K_M |
4ビット量子化、最適化されたメモリ使用量 |
高性能、少ないメモリ |
| Q5_K_M |
5ビット量子化、中間性能 |
バランスの取れた性能 |
| Q8_0 |
8ビット量子化 |
最大精度、メモリ使用量の増加 |
| F16 |
半精度(FP16) |
最高精度、メモリ最大使用量 |
# モデル別の性能比較
./main -m ./models/llama-2-7b-chat.Q4_K_M.gguf -n 512 -ngl 35 --temp 0.7
./main -m ./models/llama-2-7b-chat.Q5_K_M.gguf -n 512 -ngl 35 --temp 0.7
6. API設定と既存ツールの統合
6.1 OpenAI互換APIサーバー
# APIサーバーの起動
./server -m ./models/llama-2-7b-chat.Q4_K_M.gguf \
-p "Qwen: " \
-n 512 \
-ngl 35 \
--host 0.0.0.0 \
--port 8080 \
--threads 8 \
--temp 0.7 \
--repeat-penalty 1.1
6.2 Pythonクライアントの例
# client.py
import openai
client = openai.OpenAI(
base_url="http://localhost:8080/v1",
api_key="EMPTY"
)
返却形式: {"translated": "翻訳されたHTML"}response = client.chat.completions.create(
model="llama2",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
]
)
print(response.choices[0].message.content)
7. Systemdサービス設定(24/7運用)
# サービスファイルの作成
sudo nano /etc/systemd/system/llama.service
# 内容を追加:
[Unit]
Description=Local LLM Server
After=network.target
[Service]
Type=simple
User=your_username
WorkingDirectory=/home/your_username/llama.cpp
ExecStart=/home/your_username/llama_run.sh
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
# サービスの有効化と起動
sudo systemctl daemon-reload
sudo systemctl enable llama.service
sudo systemctl start llama.service
sudo systemctl status llama.service
8. モニタリングとパフォーマンス最適化
8.1 パフォーマンスのモニタリング
# GPU使用量のモニタリング
nvidia-smi -l 1
# CPU使用量のモニタリング
htop
# ログの確認
journalctl -u llama.service -f
8.2 パフォーマンステスト
# 推論パフォーマンスのテスト
./main -m ./models/llama-2-7b-chat.Q4_K_M.gguf \
-p "Qwen: " \
-n 100 \
-ngl 35 \
--temp 0.7 \
--repeat-penalty 1.1 \
--timings
8.3 メモリ最適化
# GPUメモリの最適化
./main -m ./models/llama-2-7b-chat.Q4_K_M.gguf \
-n 512 \
-ngl 35 \
--temp 0.7 \
--repeat-penalty 1.1 \
--ctx-size 4096 \
--batch-size 512
9. 実際の使用例
9.1 チャットボット環境の構成
bash
---
**Gumroadの完全なガイドはこちら**: https://gumroad.com/l/auto ($7)