knowrohit07's picture
Upload folder using huggingface_hub
c554192 verified
Raw History Blame Contribute Delete
2.67 kB
#!/usr/bin/env bash
# AXE-Diffusion KSL-XE — lifecycle for the GoedelMachines W4A16 diffusion
# server (Diffusion Studio UI + OpenAI-compatible API in one process).
#
# ./scripts/xe.sh up start + wait for /health (model load ~18 s)
# ./scripts/xe.sh down stop and remove the container
# ./scripts/xe.sh restart down + up
# ./scripts/xe.sh status container + GPU memory + health + /v1/models
# ./scripts/xe.sh logs docker logs -f
# ./scripts/xe.sh gpu xpu-smi snapshot
# ./scripts/xe.sh test python3 scripts/test_api.py (needs server up)
#
# Env overrides: AXE_PORT (default 8080), AXE_IMAGE, SERVED_MODEL_NAME.
# GPU pinning: the app binds xpu:0 (= level_zero device 0, the FIRST Intel GPU).
set -euo pipefail
cd "$(dirname "$0")/.."
IMAGE="${AXE_IMAGE:-local/gemma-w4-intel:triton38}"
BASE_IMAGE="${AXE_BASE_IMAGE:-local/gemma-w4-intel:tested}"
PORT="${AXE_PORT:-8080}"
NAME="axe-diffusion-ksl-xe"
ensure_image() {
if docker image inspect "$IMAGE" >/dev/null 2>&1; then
echo "== image $IMAGE present"
return
fi
echo "== building $IMAGE from $BASE_IMAGE (Triton 3.8.0 XPU upgrade)"
docker rm -f xe-imgbuild >/dev/null 2>&1 || true
docker run --name xe-imgbuild --entrypoint bash "$BASE_IMAGE" -c \
"pip install --no-cache-dir 'triton-xpu==3.8.0' --index-url https://download.pytorch.org/whl/xpu"
docker commit xe-imgbuild "$IMAGE"
docker rm xe-imgbuild >/dev/null
echo "== committed $IMAGE"
}
up() {
ensure_image
docker rm -f "$NAME" >/dev/null 2>&1 || true
docker compose up -d
./scripts/xe.sh wait
}
down() { docker compose down; }
status() {
echo "== container =="
docker ps -a --filter "name=$NAME" --format '{{.Names}}\t{{.Status}}\t{{.Ports}}'
echo "== health =="
curl -s -m 3 "http://127.0.0.1:${PORT}/health" || echo "unreachable"
echo
echo "== openai models =="
curl -s -m 3 "http://127.0.0.1:${PORT}/v1/models" || true
echo
./scripts/xe.sh gpu
}
logs() { docker logs -f "$NAME"; }
gpu() { xpu-smi 2>/dev/null | grep 'MiB /' | sed 's/^ *//'; }
wait() {
echo "== waiting for $NAME on :${PORT} =="
for _ in $(seq 1 60); do
curl -s -m 2 "http://127.0.0.1:${PORT}/health" 2>/dev/null | grep -q '"ready":true' && {
echo "READY"; return
}
sleep 5
done
echo "TIMEOUT waiting for $NAME" >&2
docker logs --tail 20 "$NAME" || true
exit 1
}
case "${1:-}" in
up) up ;;
down) down ;;
restart) down; up ;;
status) status ;;
logs) logs ;;
gpu) gpu ;;
wait) wait ;;
test) python3 scripts/test_api.py --base "http://127.0.0.1:${PORT}" ;;
*) echo "usage: $0 {up|down|restart|status|logs|wait|gpu|test}"; exit 2 ;;
esac