2026年8月6日木曜日

DGX Spark 1 台で DeepSeek V4 Flash 0731 を動かす(llama.cpp 版)

前回 は DwarfStar で DeepSeek V4 Flash 0731 を動かしたが、今回は llama.cpp 版で動かしてみる。

サーバーの安定性が DwarfStar よりも高いらしいので、llama.cpp 。

前提

  • マシン: ASUS Ascent GX10 GX10-GG0006BN 90MS0371-M00060 (1TB)
  • Ollama, DwarfStar のデーモンを止めた後から

前提パッケージのインストール

llama.cpp 版をビルドするために必要なパッケージをインストールする。

sudo apt update
sudo apt install -y git build-essential cmake

llama.cpp ソースコードのクローン

いつものように git clone する。

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

llama.cpp ビルド

DGX Spark なので、それ用の make コマンドを叩く。

cmake -B build-cuda -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=121 \
      -DCMAKE_BUILD_TYPE=Release -DLLAMA_CURL=ON
cmake --build build-cuda -j"$(nproc)" --target llama-server llama-cli llama-bench

ほんとうは llama-server だけで良いのだけど、参考にしたサイト通りに全部ビルドしちゃった。

モデルのダウンロード

前回 のモデルを使うのでダウンロードは省略。

サーバー起動

OpenAI API 互換サーバーを起動する。

./build-cuda/bin/llama-server --host 0.0.0.0 --port 11434 --no-mmap -m ~/project/ds4/gguf/DeepSeek-V4-Flash-IQ2XXS-w2Q2K-AProjQ8-SExpQ8-OutQ8-chat-v2-imatrix-0731.gguf

結構長い時間待つ感じ。成句すると以下のような出力がされる。

0.00.300.436 I srv    load_model: loading model '/home/mikoto/project/ds4/gguf/DeepSeek-V4-Flash-IQ2XXS-w2Q2K-AProjQ8-SExpQ8-OutQ8-chat-v2-imatrix-0731.gguf'
8.00.852.448 I srv    load_model: initializing, n_slots = 4, n_ctx_slot = 1048576, kv_unified = 'true'
8.00.861.742 I srv          init: chat template supports preserving reasoning, consider enabling it via --reasoning-preserve
8.00.861.881 I srv  llama_server: model loaded
8.00.861.884 I srv  llama_server: listening on http://0.0.0.0:11434

クライアント起動

OpenAI API 互換クライアントで接続確認。 OK.

> C:\Java\jdk-25\bin\java.exe -jar ..\project\rei\target\rei-0.0.1-SNAPSHOT.jar
WARNING: A restricted method in java.lang.System has been called
WARNING: java.lang.System::load has been called by org.sqlite.SQLiteJDBCLoader in an unnamed module (jar:nested:/F:/project/rei/target/rei-0.0.1-SNAPSHOT.jar/!BOOT-INF/lib/sqlite-jdbc-3.51.3.0.jar!/)
WARNING: Use --enable-native-access=ALL-UNNAMED to avoid a warning for callers in this module
WARNING: Restricted methods will be blocked in a future release unless native access is enabled

AI Shell
通常入力は chat として扱います。/exit で終了します。
複数行入力: 複数行ペースト対応。行末に \\ を付けるか、Ctrl+J でも改行できます。
/paste で確実な複数行入力モード(終了は単独行の . )
22:15 deepseek-v4-flash> こんにちは!!!!!

 User
こんにちは!!!!!


=== thinking ===
The user greeted me with "こんにちは!!!" (Hello!!!!!). This is a simple greeting. I should respond naturally in Japanese. Looking at the memory, there was a similar greeting earlier and the assistant responded with "こんにちは!? 何かお手伝いできることはありますか?"

I'll respond similarly. No tools needed.
=== answer(23.7 s) ===
こんにちは!? 今日もお手伝いできることがあれば、何でも言ってくださいね!

models には対応していなさそう。

llama-server の daemon 化

実行ユーザーの追加

llama というシステムユーザーを追加する。

sudo useradd \
  --system \
  --home-dir /opt/llama \
  --shell /usr/sbin/nologin \
  llama

llama-server の配置

llama 用のディレクトリを作成し、ビルドした llama-server を配置する。

sudo cp -a ~/project/llama.cpp/build-cuda /opt/llama
sudo chown -R llama:llama /opt/llama

systemd ユニットを作成

作成していく。

cat << 'EOF' | sudo tee /etc/systemd/system/llama-server.service
[Unit]
Description=llama.cpp OpenAI-compatible inference server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=llama
Group=llama
WorkingDirectory=/opt/llama/bin

ExecStart=/opt/llama/bin/llama-server \
  -m /opt/ds4/ds4flash.gguf \
  --gpu-layers all \
  --no-mmap \
  --host 0.0.0.0 \
  --port 11434

Restart=on-failure
RestartSec=5

TimeoutStartSec=0
TimeoutStopSec=120
KillSignal=SIGINT

StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF

設定反映

sudo systemctl daemon-reload
sudo systemctl enable llama-server
sudo systemctl start llama-server

以上。

参考資料

0 件のコメント:

コメントを投稿