#!/usr/bin/bash
set -e
LLAMA_DIR="/home/brassaikao/llama.cpp"
PROCESS_NAME="llama-server"
echo "------------------------------------------------"
echo "🤖 [1/4] 檢查服務狀態..."
echo "------------------------------------------------"
if pgrep -x "$PROCESS_NAME" > /dev/null; then
echo "⚠️ 偵測到 $PROCESS_NAME 正在執行中,正在自動優雅關閉..."
# 發送 SIGINT (Ctrl+C 訊號) 讓 llama-server 釋放 VRAM 並正常關閉
pkill -2 -x "$PROCESS_NAME" || true
# 最多等待 15 秒,確保程序完全釋放
WAIT_COUNT=0
while pgrep -x "$PROCESS_NAME" > /dev/null; do
sleep 1
WAIT_COUNT=$((WAIT_COUNT+1))
if [ $WAIT_COUNT -ge 15 ]; then
echo "⚡ 等待超時,強制終止程序 (SIGKILL)..."
pkill -9 -x "$PROCESS_NAME" || true
break
fi
done
echo "✅ 舊服務已順利關閉,VRAM 已釋放!"
else
echo "ℹ️ $PROCESS_NAME 目前未執行。"
fi
cd "$LLAMA_DIR"
echo ""
echo "------------------------------------------------"
echo "🔍 [2/4] 比對 GitHub 遠端版本..."
echo "------------------------------------------------"
git fetch origin
LOCAL_HASH=$(git rev-parse HEAD)
REMOTE_HASH=$(git rev-parse @{u})
NEED_BUILD=0
if [ "$LOCAL_HASH" != "$REMOTE_HASH" ]; then
echo "🚀 發現新版本!"
echo " 本地 Hash: ${LOCAL_HASH:0:7}"
echo " 遠端 Hash: ${REMOTE_HASH:0:7}"
echo "正在拉取最新原始碼..."
git pull
NEED_BUILD=1
else
echo "✅ 當前已是最新版本 (${LOCAL_HASH:0:7}),無需重新編譯!"
fi
echo ""
echo "------------------------------------------------"
echo "⚙️ [3/4] 編譯階段..."
echo "------------------------------------------------"
if [ $NEED_BUILD -eq 1 ]; then
echo "正在進行本機 CUDA (AMD 5600G, RTX 3050) 極致原生編譯..."
export PATH=/opt/cuda/bin:$PATH
export CUDA_PATH=/opt/cuda
export CC=gcc
export CXX=g++
cmake -B build \
-DGGML_CUDA=ON \
-DGGML_NATIVE=ON \
-DGGML_CUDA_FA_ALL_QUANTS=ON \
-DCMAKE_CUDA_ARCHITECTURES=86 \
-DCUDAToolkit_ROOT=/opt/cuda \
-DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j $(nproc)
echo "🎉 編譯成功!"
else
echo "⏩ 跳過編譯,直接使用現有極致優化二進制檔。"
fi
echo ""
echo "------------------------------------------------"
echo "🚀 [4/4] 啟動最新版 llama-server..."
echo "------------------------------------------------"
./build/bin/llama-server \
-m /home/brassaikao/ai-models/Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-IQ4_NL.gguf \
--mmproj /home/brassaikao/ai-models/mmproj-Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-f16.gguf \
--alias Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-IQ4_NL \
-np 1 -t 6 -tb 6 \
--flash-attn on \
--image-min-tokens 1024 \
--load-mode none \
--port 8080 \
--host 172.17.0.1 \
--kv-unified \
-c 131072 \
--jinja \
--cont-batching \
--reasoning-preserve
Leave a comment