0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

古いパソコンにRTX2060を入れてAIサーバ化

0
Posted at

ローカルで生成AIを動かすために、RTX2060(VRAM12GB)を使っていた
が、VRAM欲しさにRTX2080Ti(VRAM22GB)を買った

それで、余ったRTX2060(VRAM12GB)を使っていない古いパソコンに入れて、生成AIを動かす専用サーバにしてみた

構成

使わずに眠っていたパソコンを再利用
CPUのXeonは2010年発売開始という化石のようなものだ
TPM 2.0にも対応できずWindows11にすることもできなかったので、OSはUbuntuServerの最小構成にした

  • CPU: Intel Xeon X5660 ×2

    • 6コア12スレッド ×2ソケット
    • 合計 12コア24スレッド
    • ベースクロック 2.80GHz
  • メモリー

    • DDR3 20GB RAM
  • GPU

    • NVIDIA GeForce RTX 2060
    • VRAM 約 12GB
  • ストレージ

    • SSD 80GB
  • OS

    • Ubuntu Server
    • x86_64
    • 最小構成でインストール

ping を使えるようにする

最小構成すぎて ping さえできなかったので iputils-ping を導入

sudo apt install iputils-ping

パッケージ候補が出るようにする

存在しないコマンドを実行したときに、必要なパッケージ候補を表示できるようにした

sudo apt install command-not-found

これを入れることにより、存在しないコマンドを実行したときに出る表示「-bash: foo: command not found」が以下のように変化して、何をインストールすれば良いかヒントをくれるようになります。

コマンド 'foo' が見つかりません。もしかして:
command 'fop' from deb fop (1:2.10+dfsg-2)
command 'goo' from deb goo (0.155+ds-6build1)
command 'fio' from deb fio (3.41-2)
command 'fox' from deb objcryst-fox (2022.1-2build1)
command 'foot' from deb foot (1.25.0-1)
次を試してみてください: sudo apt install

dialog による対話UI対応

一部のセットアップツールやシェルスクリプトで使われる、テキストベースのダイアログUIを利用できるようにする

sudo apt install dialog

これを入れていないと以下のようなエラーが出ることがあります

debconf: フロントエンドの初期化に失敗しました: Dialog debconf: (利用可能な dialog 系のプログラムがインストールされていないため、ダイアログ形式のフロントエンドは使用できません。

SSD 容量が半分しか使われていなかった

SSDの領域が妙にいっぱいだなと思ったら、全体が認識されていなかった。
Serverセットアップで、すべて自動にしていたことが原因で LVMの空きが未割り当てだった様子

未割り当て領域を root filesystem に追加した

sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

なお、オプションの意味は以下の通り

  • -l +100%FREE:VG の空き領域をすべて使用
  • resize2fs:ext4 filesystem を拡張

確認

df -h

Ubuntuの基本設定が終わったので、いよいよドライバと llama.cppのインストール

NVIDIA Driver と CUDA 開発環境の準備

llama.cpp を CUDA 付きでビルドするため、NVIDIA Driver と CUDA Toolkit を導入した

まず、以下でインストールするドライバの候補を確認する

ubuntu-drivers devices

結果の中から良さそうなものを選ぶ。
私はUbuntuServerを使っているので「server-open」で終わっている中で最もバージョン番号が大きい「nvidia-driver-595-server-open」を選んだ。

sudo apt install nvidia-driver-595-server-open
sudo apt install -y git build-essential cmake curl
sudo apt install -y nvidia-cuda-toolkit

なお、以下で GPU が認識されていることを確認した

nvidia-smi
nvcc --version

結果は以下のような感じ

nvidia-smi
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 595.58.03              Driver Version: 595.58.03      CUDA Version: 13.2     |
+-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 2060        Off |   00000000:08:00.0 Off |                  N/A |
| 43%   37C    P8             21W /  184W |       1MiB /  12288MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+

llama.cpp を取得する

CUDA 対応版をビルドするため、公式リポジトリを clone した

git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp

CUDA 有効で llama.cpp を構成する

RTX 2060 (Turing世代) に合わせて CUDA Architecture 75 を指定した

cmake -B build \
  -DGGML_CUDA=ON \
  -DCMAKE_CUDA_ARCHITECTURES=75

cmake --build build -j4

なお、オプションの意味は以下の通り

  • -DGGML_CUDA=ON:CUDA を有効化
  • -DCMAKE_CUDA_ARCHITECTURES=75:RTX 2060 向けに最適化

最初 -j4 を指定しないとメモリ不足で異常終了しました。-j[数字]を指定することで同時コンパイル数を指定してメモリ消費を抑えることができます。
なお、やり直すときは「rm -rf build」でbuildを消してからやり直すのがお勧めです。

ビルド成功を確認する

実行ファイルが生成されていることを確認
ファイルがたくさんあればOK

ls build/bin

llama.cppが準備できたので生成AIを動かせるようにする

GGUF モデルをダウンロードする

Hugging Face から wget でダウンロード

cd ~/llama.cpp/models

wget -O Qwen3.5-9B-Q8_0.gguf \
https://huggingface.co/unsloth/Qwen3.5-9B-GGUF/resolve/main/Qwen3.5-9B-Q8_0.gguf?download=true

なお、オプションの意味は以下の通り

  • -O:保存ファイル名を指定

llama-server を CUDA 付きで起動

Qwen3.5 9B を長文コンテキスト対応で起動した

./build/bin/llama-server \
  --host 0.0.0.0 \
  --port 1234 \
  --parallel 1 \
  --threads 12 \
  --jinja \
  --device CUDA0 \
  --flash-attn on \
  --cache-type-k q8_0 \
  --cache-type-v q8_0 \
  --ctx-size 128000 \
  --temp 0.6 \
  --top-p 0.95 \
  --top-k 20 \
  --repeat-penalty 1.1 \
  -m models/Qwen3.5-9B-UD-Q4_K_XL.gguf

なお、オプションの意味は以下の通り

  • --host 0.0.0.0:外部PCから接続可能にする
  • --port 1234:待受ポート
  • --parallel 1:同時アクセスを1に制限
  • --threads 12:CPU スレッド数
  • --jinja:chat template 有効化
  • --device CUDA0:GPU 使用
  • --flash-attn on:Flash Attention 有効化
  • --cache-type-k q8_0:KV cache の K を量子化
  • --cache-type-v q8_0:KV cache の V を量子化
  • --ctx-size 128000:128K コンテキスト
  • --temp 0.6:温度
  • --top-p 0.95:Top-p sampling
  • --top-k 20:Top-k sampling
  • --repeat-penalty 1.1:繰り返し抑制
  • -m:読み込む GGUF モデル

本当にGPUが使われているかは以下のコマンドで確認できます
llama-serverを実行しているのとは別のウィンドウで実行して、使用率が変化していればGPUが使われています(まぁ、トークン速度でCPU推論かGPU推論かはわかるけど)

watch -n1 nvidia-smi

モデルを色々と入れて実測

RTX2060はVRAMが12GBある。でも、CPUがめちゃ古(2010年発売開始のXeon X5660!)なので、VRAMにどれだけ載せられるかが勝負。

llama_serverを起動したときに、以下のログが出ていればVRAMに収まっていません

llama_model_loader: tensor overrides to CPU are used with mmap enabled - consider using --no-mmap for better performance

実測結果は以下
ただし、KVキャッシュなどの条件をそろえずに色々試行錯誤したので参考程度に。

モデル 実測速度
Qwen3.5-9B-UD-Q4_K_XL 約38.5 t/s
Qwen3.5-9B-Q6_K 約31.8 t/s
Qwen3.5-9B-Q8_0 約27.7 t/s
Qwen3-14B-Q4_K_M 約28.2 t/s
Ministral-3-14B 約29.7 t/s
Qwen3.6-35B IQ3_XXS 約19.2 t/s
Qwen3.6-35B IQ2_XXS 約55 t/s

CPUが古すぎてQwen3.6-35Bは厳しそうということで以下で運用

  • モデル:Qwen3.5-9B-UD-Q4_K_XL
  • ctx:128K
  • 約38.5 t/s(完全にGPUに乗っている様子)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?