#!/usr/bin/env bash # moss-image-base-dmd2-gb10 entrypoint. Runs inside the container; takes no arguments. # Port of gx10 ~/code/vlmtest/machines/gx10/start_moss_image.sh: the same server # (vlmtest/moss_image_server.py, copied unchanged) with the same env, on pinned weights mounted # read-only at /weights/moss-image-base. start_moss_image.sh is the shared body gx10's MOSS-Image scripts exec; this variant's LoRA is its own repo (data-archetype/moss_image_base_dmd2), mounted at MOSS_LORA_DIR. set -eu export HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1 export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True export MODEL_DIR="/weights/moss-image-base" export MOSS_LORA="base-dmd2" export MOSS_LORA_DIR="/weights/moss-base-dmd2" export SERVED_MODEL_ID="moss-image-base-dmd2" export PORT="$M64_PORT" echo '{"phase":"loading","detail":"loading MOSS-Image-Base + DMD2 8-step"}' >> "$M64_STATUS" # The server loads its model before it listens (or answers /health with "loading"): # report ready once /health says "ok". python3 - <<'PY' & import json, os, time, urllib.request t0 = time.time() url = "http://127.0.0.1:%s/health" % os.environ["M64_PORT"] opener = urllib.request.build_opener(urllib.request.ProxyHandler({})) while True: try: r = opener.open(url, timeout=3) if r.status == 200 and json.loads(r.read() or b"{}").get("status", "ok") == "ok": break except Exception: pass time.sleep(5) with open(os.environ["M64_STATUS"], "a") as f: f.write(json.dumps({"phase": "ready", "detail": "loaded in %d s" % (time.time() - t0)}) + "\n") PY exec python3 -u /capsule/moss_image_server.py