Unlimited-OCR-RDNA4 / scripts /validate-smoke.sh
dougvk's picture
Publish Unlimited-OCR RDNA 4 runtime v0.1.0
f340984 verified
Raw
History Blame Contribute Delete
3.35 kB
#!/usr/bin/env bash
set -euo pipefail
ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
CLI=${CLI:-$ROOT/.venv/bin/unlimited-ocr-rdna4}
PYTHON=${PYTHON:-$ROOT/.venv/bin/python}
DEVICE=${UNLIMITED_OCR_DEVICE:-0}
MODEL_DIR=${UNLIMITED_OCR_MODEL_DIR:-}
AMD_SMI_GPU=${AMD_SMI_GPU:-}
NETWORK_ISOLATED=${VALIDATION_NETWORK_ISOLATED:-0}
EXPECTED_IMAGE_SHA256=${EXPECTED_IMAGE_SHA256:-13df40051aceb3bd14f75622697dda1f2a96515bb95c0483e0920cd4d41cbc01}
EXPECTED_PDF_SHA256=${EXPECTED_PDF_SHA256:-fb17a6396c3e73a025e388a09f73357960ca0bf95124e38179e06a2e64442438}
EVIDENCE_OUTPUT=${VALIDATION_EVIDENCE_OUTPUT:-}
CACHE_BASE=${XDG_CACHE_HOME:-${HOME}/.cache}/unlimited-ocr-rdna4
FIXTURE_IMAGE="$ROOT/tests/fixtures/rdna4-smoke.png"
FIXTURE_PDF="$ROOT/tests/fixtures/rdna4-smoke.pdf"
mkdir -p "$CACHE_BASE"
WORK_DIR=$(mktemp -d "$CACHE_BASE/validation.XXXXXX")
trap 'rm -rf -- "$WORK_DIR"' EXIT
printf '%s %s\n' \
'f5099e17be868abfb4213dbdab220deac82a2db93ba87ab22f03219178246972' "$FIXTURE_IMAGE" \
'cdd2b484d0ac90bd98b489dd97565a65eb17246f713359524cddd41d78cc10cb' "$FIXTURE_PDF" |
sha256sum --check --status
MODEL_ARGS=()
if [[ -n $MODEL_DIR ]]; then
MODEL_ARGS=(--model-dir "$MODEL_DIR")
fi
run_isolated() {
sudo -n systemd-run \
--quiet --wait --pipe --collect \
-p PrivateNetwork=yes \
-p "User=$(id -un)" \
-p "WorkingDirectory=$ROOT" \
-p "Environment=HOME=$HOME" \
-- "$@"
}
run_ocr() {
if [[ $NETWORK_ISOLATED == 1 ]]; then
run_isolated "$@"
else
"$@"
fi
}
if [[ $NETWORK_ISOLATED == 1 ]]; then
if run_isolated /usr/bin/python3 -c \
'import socket; socket.create_connection(("1.1.1.1", 80), timeout=0.25)' \
>"$WORK_DIR/network-probe.out" 2>"$WORK_DIR/network-probe.err"; then
printf 'error: PrivateNetwork validation probe unexpectedly reached the network\n' >&2
exit 5
fi
fi
"$CLI" doctor --device "$DEVICE" --require-model --json "${MODEL_ARGS[@]}" >"$WORK_DIR/doctor.json"
run_ocr "$CLI" run \
--input "$FIXTURE_IMAGE" \
--output "$WORK_DIR/smoke-image-1.md" \
--device "$DEVICE" \
--json \
"${MODEL_ARGS[@]}" >"$WORK_DIR/image-1.json"
run_ocr "$CLI" run \
--input "$FIXTURE_IMAGE" \
--output "$WORK_DIR/smoke-image-2.md" \
--device "$DEVICE" \
--json \
"${MODEL_ARGS[@]}" >"$WORK_DIR/image-2.json"
run_ocr "$CLI" run \
--input "$FIXTURE_PDF" \
--output "$WORK_DIR/smoke-pdf.md" \
--device "$DEVICE" \
--dpi 150 \
--max-pages 1 \
--json \
"${MODEL_ARGS[@]}" >"$WORK_DIR/pdf.json"
if [[ -n $AMD_SMI_GPU ]]; then
amd-smi process -g "$AMD_SMI_GPU" --json >"$WORK_DIR/gpu-processes.json"
fi
CHECK_ARGS=(
--doctor "$WORK_DIR/doctor.json"
--image-run "$WORK_DIR/image-1.json"
--image-run "$WORK_DIR/image-2.json"
--pdf-run "$WORK_DIR/pdf.json"
--image-output "$WORK_DIR/smoke-image-1.md"
--image-output "$WORK_DIR/smoke-image-2.md"
--pdf-output "$WORK_DIR/smoke-pdf.md"
)
CHECK_ARGS+=(--expected-image-sha256 "$EXPECTED_IMAGE_SHA256")
CHECK_ARGS+=(--expected-pdf-sha256 "$EXPECTED_PDF_SHA256")
if [[ $NETWORK_ISOLATED == 1 ]]; then
CHECK_ARGS+=(--network-isolated)
fi
if [[ -n $AMD_SMI_GPU ]]; then
CHECK_ARGS+=(--gpu-processes "$WORK_DIR/gpu-processes.json")
fi
if [[ -n $EVIDENCE_OUTPUT ]]; then
CHECK_ARGS+=(--evidence-output "$EVIDENCE_OUTPUT")
fi
"$PYTHON" "$ROOT/scripts/check-validation.py" "${CHECK_ARGS[@]}"