| #!/usr/bin/env bash |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| set -euo pipefail |
|
|
| GGUF_DEFAULT="/home/$(whoami)/phi4-deploy/phi4-mm-Q4_K_M.gguf" |
| GGUF_PATH="${1:-$GGUF_DEFAULT}" |
| MODELFILE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" |
| MODEL_NAME="phi4-mm-nuc" |
|
|
| echo "============================================================" |
| echo " Phi-4 Multimodal NUC Deployment" |
| echo "============================================================" |
| echo " GGUF : $GGUF_PATH" |
| echo " Model : $MODEL_NAME" |
| echo " Host : $(hostname)" |
| echo "============================================================" |
|
|
| |
| if [[ ! -f "$GGUF_PATH" ]]; then |
| echo "ERROR: GGUF not found at $GGUF_PATH" |
| echo "Transfer it first: scp <build-host>:~/models/phi4-mm-Q4_K_M.gguf $GGUF_PATH" |
| exit 1 |
| fi |
|
|
| |
| if ! command -v ollama &>/dev/null; then |
| echo "" |
| echo ">>> Installing Ollama..." |
| curl -fsSL https://ollama.com/install.sh | sh |
| echo ">>> Ollama installed." |
| else |
| echo ">>> Ollama already installed: $(ollama --version)" |
| fi |
|
|
| |
| if ! pgrep -x ollama &>/dev/null; then |
| echo ">>> Starting Ollama daemon..." |
| ollama serve &>/dev/null & |
| sleep 3 |
| fi |
|
|
| |
| MODELFILE_TMP="$(mktemp)" |
| sed "s|FROM ./phi4-mm-Q4_K_M.gguf|FROM ${GGUF_PATH}|" \ |
| "${MODELFILE_DIR}/Modelfile" > "$MODELFILE_TMP" |
|
|
| |
| echo "" |
| echo ">>> Creating Ollama model: $MODEL_NAME" |
| ollama create "$MODEL_NAME" -f "$MODELFILE_TMP" |
| rm "$MODELFILE_TMP" |
| echo ">>> Model registered." |
|
|
| |
| echo "" |
| echo ">>> Running smoke test (one token)..." |
| RESPONSE=$(ollama run "$MODEL_NAME" "Reply with exactly: OK" --nowordwrap 2>&1 | head -5) |
| echo " Response: $RESPONSE" |
|
|
| |
| if command -v systemctl &>/dev/null && systemctl --user status ollama.service &>/dev/null 2>&1; then |
| echo ">>> Ollama systemd service already configured." |
| else |
| echo "" |
| echo ">>> To keep Ollama running at startup, enable the service:" |
| echo " sudo systemctl enable --now ollama" |
| fi |
|
|
| |
| echo "" |
| echo "============================================================" |
| echo " DONE. Model is ready." |
| echo "" |
| echo " Test: ollama run $MODEL_NAME" |
| echo " API endpoint: http://localhost:11434/v1" |
| echo " OpenClaw model: ollama/$MODEL_NAME" |
| echo "============================================================" |
|
|