Initial import: bare-metal stacks, Server UI, GPU fan, tutorials.
Infrastructure configs for GMKtec K11 (Docker, vLLM, LocalAI, ComfyUI, control-plane, gpu-fan agent, Server UI with CLI/file explorer/GPU fan curve). Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Executable
+88
@@ -0,0 +1,88 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
STACK_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
||||
|
||||
# shellcheck disable=SC1091
|
||||
source "${SCRIPT_DIR}/catalog-lib.sh"
|
||||
|
||||
cd "${STACK_DIR}"
|
||||
|
||||
PROFILE_ARG="${1:-}"
|
||||
|
||||
if [[ -n "${PROFILE_ARG}" ]]; then
|
||||
PROFILE_FILE="${STACK_DIR}/profiles/${PROFILE_ARG}.env"
|
||||
if [[ ! -f "${PROFILE_FILE}" ]]; then
|
||||
echo "ERROR: Profile not found: ${PROFILE_ARG}"
|
||||
echo " Available:"
|
||||
ls -1 "${STACK_DIR}/profiles/"*.env 2>/dev/null | xargs -n1 basename | sed 's/\.env$//' | sed 's/^/ /'
|
||||
exit 1
|
||||
fi
|
||||
cp "${PROFILE_FILE}" .env
|
||||
echo "Applied profile: ${PROFILE_ARG}"
|
||||
fi
|
||||
|
||||
if [[ ! -f .env ]]; then
|
||||
echo "ERROR: .env not found. Run: cp .env.example .env"
|
||||
echo " Or use a profile: ./scripts/start.sh qwen3.6-27b-awq-128k"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set -a
|
||||
# shellcheck disable=SC1091
|
||||
source .env
|
||||
set +a
|
||||
|
||||
DATA_ROOT="${DATA_ROOT:-/data}"
|
||||
|
||||
if [[ -z "${VLLM_MODEL:-}" ]]; then
|
||||
echo "ERROR: VLLM_MODEL is empty in .env"
|
||||
echo " Set a model, use a profile, or run:"
|
||||
echo " ./scripts/download-model.sh qwen3.6-27b-awq-vllm"
|
||||
echo " ./scripts/switch-model.sh qwen3.6-27b-awq-128k"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${VLLM_MODEL}" == *".gguf"* ]]; then
|
||||
echo "ERROR: VLLM_MODEL points to a .gguf file — standard vLLM cannot load GGUF."
|
||||
echo " GGUF models are in models.catalog.yaml for future llama.cpp (stacks/llamacpp/)."
|
||||
echo " For vLLM use AWQ from Hugging Face, e.g.:"
|
||||
echo " ./scripts/download-model.sh qwen3.6-27b-awq-vllm"
|
||||
echo " ./scripts/switch-model.sh qwen3.6-27b-awq-128k"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! mountpoint -q "${DATA_ROOT}" 2>/dev/null; then
|
||||
echo "ERROR: ${DATA_ROOT} is not mounted"
|
||||
echo " Complete disk setup (tutorial 04 part A) first"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
catalog_ensure_dirs "${DATA_ROOT}"
|
||||
|
||||
if ! docker info &>/dev/null; then
|
||||
echo "ERROR: Docker is not running"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
chmod +x "${SCRIPT_DIR}/vllm-entrypoint.sh" 2>/dev/null || true
|
||||
|
||||
echo "=== vLLM stack ==="
|
||||
echo "Model: ${VLLM_MODEL}"
|
||||
echo "Served as: ${SERVED_MODEL_NAME:-qwen3.6-27b}"
|
||||
echo "Context: ${MAX_MODEL_LEN:-131072} tokens"
|
||||
echo "KV cache: ${KV_CACHE_DTYPE:-fp8}"
|
||||
echo "Quantize: ${QUANTIZATION:-(none)}"
|
||||
echo "Data root: ${DATA_ROOT}"
|
||||
echo ""
|
||||
|
||||
docker compose --profile vllm pull
|
||||
docker compose --profile vllm up -d
|
||||
|
||||
echo ""
|
||||
echo "Started. Follow logs:"
|
||||
echo " docker compose --profile vllm logs -f vllm"
|
||||
echo ""
|
||||
echo "Test when ready:"
|
||||
echo " curl -s http://localhost:${VLLM_PORT:-8000}/v1/models | jq ."
|
||||
Reference in New Issue
Block a user