#!/usr/bin/env bash # Download pinned official weights, build the isolated worker and leave it stopped. set -Eeuo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" ENV_FILE=${STACK_ENV:-/etc/mike-ai/stack.env} MODEL_DIR=${QWEN_IMAGE_21_MODEL_DIR:-/data/models/Qwen-Image-2.1-ComfyUI} OUTPUT_DIR=${QWEN_IMAGE_21_OUTPUT_DIR:-/data/qwen-image-2.1-test-output} BASE=https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/ace0edeb3791a594ddfa36ed5f41a178a394e921 download() { local relative=$1 expected=$2 target="$MODEL_DIR/$1" install -d -m 0755 "$(dirname "$target")" if [[ -f $target ]] && echo "$expected $target" | sha256sum -c --status; then echo "OK: $relative" return fi curl -fL --retry 5 --retry-all-errors -C - -o "$target.part" "$BASE/$relative" echo "$expected $target.part" | sha256sum -c --status mv "$target.part" "$target" } download diffusion_models/qwen_image_2.1_int8_convrot.safetensors cb74113cb03faecd79611b01fd7fd642f0aa60d6f0b95086abee214d75eaa57d download text_encoders/qwen3vl_8b_int8_convrot.safetensors 8bfd0f6e12abf2d2d697ecc888e5e90b0d6741d6708f05799f53afa560452e8f download vae/qwen_image_2.1_vae_bf16.safetensors bb21f7473051e1ac368515dd3f2e15cd44d7a11748ee8823e1ddca3e4876b7c9 install -d -m 0755 "$OUTPUT_DIR" compose=(docker compose --env-file "$ENV_FILE" -f "$ROOT_DIR/compose.yaml" --profile qwen-image-test) "${compose[@]}" pull qwen-image-21-test-runner "${compose[@]}" build qwen-image-21-test "${compose[@]}" up -d --build --no-deps profile-controller "${compose[@]}" create qwen-image-21-test "${compose[@]}" stop qwen-image-21-test state=$(docker inspect -f '{{.State.Status}}' mike-ai-qwen-image-2.1-test) [[ $state == exited || $state == created ]] echo "Qwen-Image-2.1 test is prepared and stopped. No GPU model was loaded."