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?

llama.cpp serverでモデルを切り替える.sh

Last updated at Posted at 2025-10-25

こんにちは、色違いモノです。

docker composeで動作しているllama-serverで
モデルを切り替えるためのシェルスクリプトをChatGPTに書いてもらいました。

処理としては以下を実施しているだけのようです。

  1. モデル選択
  2. .envを書き換え
  3. docker compose down
  4. docker compose up -d
#!/bin/bash
# === 設定 ===
COMPOSE_DIR="/home/user/llamacpp-work"   # compose.yaml のある場所に変更
ENV_FILE="$COMPOSE_DIR/.env"

cd ${COMPOSE_DIR}

# === モデル一覧 ===
declare -A MODELS=(
  ["gpt-oss:120b"]="/app/models/ggml-org_gpt-oss-120b-GGUF_gpt-oss-120b-mxfp4-00001-of-00003.gguf"
  ["Qwen3-Coder"]="/app/models/Qwen3-Coder-30B-A3B-Instruct-Q4_K_M.gguf"
)

# === モデル選択 ===
echo "利用可能なモデル:"
select key in "${!MODELS[@]}"; do
  [ -n "$key" ] && break
done

MODEL="${MODELS[$key]}"
echo "選択されたモデル: $key$MODEL"

# .env ファイル更新
cat > "$ENV_FILE" <<EOF
LLAMA_MODEL=$MODEL
LLAMA_MODEL_ALIAS=$key
LLAMA_CTX_SIZE=128000
EOF

# === 再起動 ===
cd "$COMPOSE_DIR"
echo "🛑 llama.cpp server を停止中..."
docker compose down

echo "🚀 新しいモデル [$key] で起動中..."
docker compose up -d

echo "✅ 起動完了: モデル = $key"

ちなみにcompose.yamlは下記にしています。
が、モデルによって引数は調整した方がいいはず……
なのでいつか調べてまとめます。

services:
  llama-cpp-gpu:
    image: ghcr.io/ggml-org/llama.cpp:server-vulkan
    ports:
      - "10000:10000"
    volumes:
      - ./models:/app/models
      - llama-cache:/app/cache
    environment:
      - LLAMA_MODEL=${LLAMA_MODEL}
      - LLAMA_CTX_SIZE=${LLAMA_CTX_SIZE:-128000}
      - LLAMA_N_GPU_LAYERS=${LLAMA_N_GPU_LAYERS:-99}
      - LLAMA_BATCH_SIZE=${LLAMA_BATCH_SIZE:-2048}
      - LLAMA_UBATCH_SIZE=${LLAMA_UBATCH_SIZE:-1024}
      - LLAMA_THREADS=${LLAMA_THREADS:-16}
      - LLAMA_N_PARALLEL=${LLAMA_N_PARALLEL:-8}
      - LLAMA_TEMP=${LLAMA_TEMP:-0.8}
      - LLAMA_TOP_K=${LLAMA_TOP_K:-40}
      - LLAMA_TOP_P=${LLAMA_TOP_P:-0.95}
      - LLAMA_MIN_P=${LLAMA_MIN_P:-0.05}
      - LLAMA_REPEAT_PENALTY=${LLAMA_REPEAT_PENALTY:-1.1}
      - LLAMA_CACHE=/app/cache
    command: >
      --model ${LLAMA_MODEL}
      --alias ${LLAMA_MODEL_ALIAS}
      --host 0.0.0.0
      --port 10000
      --ctx-size ${LLAMA_CTX_SIZE:-128000}
      --n-gpu-layers ${LLAMA_N_GPU_LAYERS:-99}
      --batch-size ${LLAMA_BATCH_SIZE:-1024}
      --ubatch-size ${LLAMA_UBATCH_SIZE:-512}
      --threads ${LLAMA_THREADS:-16}
      --threads-batch ${LLAMA_THREADS:-16}
      --parallel ${LLAMA_N_PARALLEL:-8}
      --temp ${LLAMA_TEMP:-0.8}
      --top-k ${LLAMA_TOP_K:-40}
      --top-p ${LLAMA_TOP_P:-0.95}
      --min-p ${LLAMA_MIN_P:-0.05}
      --repeat-penalty ${LLAMA_REPEAT_PENALTY:-1.1}
      --cont-batching
      --log-verbose
      --mlock
      --jinja
      --reasoning-format auto
    restart: unless-stopped
    devices:
      - /dev/kfd:/dev/kfd
      - /dev/dri:/dev/dri
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
volumes:
  llama-cache:

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?