Files

63 righe
2.1 KiB
Bash
Executable File

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
set -e
TOOLBOX_NAME="vllm"
IMAGE="docker.io/kyuz0/vllm-therock-gfx1151:latest"
# Base options
OPTIONS="--device /dev/dri --device /dev/kfd --group-add video --group-add render --security-opt seccomp=unconfined"
# Check for InfiniBand devices
if [ -d "/dev/infiniband" ]; then
echo "🔎 InfiniBand devices detected! Adding RDMA support..."
OPTIONS="$OPTIONS --device /dev/infiniband --group-add rdma --ulimit memlock=-1"
else
echo "️ No InfiniBand devices detected."
fi
# Check dependencies
for cmd in podman toolbox; do
command -v "$cmd" > /dev/null || { echo "Error: '$cmd' is not installed." >&2; exit 1; }
done
echo "🔄 Refreshing $TOOLBOX_NAME (image: $IMAGE)"
# Remove the toolbox if it exists
if toolbox list 2>/dev/null | grep -q "$TOOLBOX_NAME"; then
echo "🧹 Removing existing toolbox: $TOOLBOX_NAME"
toolbox rm -f "$TOOLBOX_NAME"
fi
echo "⬇️ Pulling latest image: $IMAGE"
podman pull "$IMAGE"
# Identify current image ID/digest for this tag
new_id="$(podman image inspect --format '{{.Id}}' "$IMAGE" 2>/dev/null || true)"
new_digest="$(podman image inspect --format '{{.Digest}}' "$IMAGE" 2>/dev/null || true)"
echo "📦 Recreating toolbox: $TOOLBOX_NAME"
echo " Options: $OPTIONS"
# Note: toolbox create passes arguments after '--' to podman create
toolbox create "$TOOLBOX_NAME" --image "$IMAGE" -- $OPTIONS
# --- Cleanup: keep only the most recent image for this tag ---
repo="${IMAGE%:*}"
# Remove any other local images still carrying this exact tag but not the newest digest
while read -r id ref dig; do
if [[ "$id" != "$new_id" ]]; then
podman image rm -f "$id" >/dev/null 2>&1 || true
fi
done < <(podman images --digests --format '{{.ID}} {{.Repository}}:{{.Tag}} {{.Digest}}' \
| awk -v ref="$IMAGE" -v ndig="$new_digest" '$2==ref && $3!=ndig')
# Remove dangling images from this repository (typically prior pulls of this tag)
while read -r id; do
podman image rm -f "$id" >/dev/null 2>&1 || true
done < <(podman images --format '{{.ID}} {{.Repository}}:{{.Tag}}' \
| awk -v r="$repo" '$2==r":<none>" {print $1}')
# --- end cleanup ---
echo "$TOOLBOX_NAME refreshed"