Files
wehub-resource-sync 542cfa195c
CI / Frontend build (push) Failing after 9m6s
CI / Plugin validate (push) Failing after 9m27s
CI / Python lint (push) Failing after 16m1s
CI / Tests (push) Successful in 18m0s
Deploy / deploy (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:33:27 +08:00

81 lines
2.3 KiB
Bash
Executable File
Raw Permalink Blame History

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.
#!/bin/bash
# Batch runner for generate_query_pairs.py
#
# Divides the page pool into non-overlapping batches and runs one at a time,
# skipping any batch whose output file already exists.
#
# Usage:
# bash run_generate_batches.sh <tiles_dir> <start> <end> [model] [extra args...]
#
# Examples:
# # Generate batches 099 with default Gemini Pro:
# bash run_generate_batches.sh /opt/dlami/nvme/kiwix_tiles 0 99
#
# # Use Flash Lite for cheaper/faster generation:
# bash run_generate_batches.sh /opt/dlami/nvme/kiwix_tiles 0 99 gemini-3.1-flash-lite-preview
#
# # Filter by page chunk count:
# bash run_generate_batches.sh /opt/dlami/nvme/kiwix_tiles 0 50 gemini-3.1-flash-lite-preview \
# --postfilter-min-page-chunks 21 --postfilter-max-page-chunks 50
set -euo pipefail
TILES_DIR=${1:?Usage: run_generate_batches.sh <tiles_dir> <start> <end> [model] [extra args...]}
START=${2:-0}
END=${3:-9}
MODEL=${4:-gemini-3.1-pro-preview}
if [ "$#" -ge 4 ]; then
shift 4
else
shift "$#"
fi
EXTRA_ARGS=("$@")
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
OUTPUT_DIR="$SCRIPT_DIR/batches"
mkdir -p "$OUTPUT_DIR"
TOTAL_BATCHES=1000
PAGES_PER_BATCH=2000
echo "Tiles dir: $TILES_DIR"
echo "Batches: $START to $END (of $TOTAL_BATCHES total)"
echo "Model: $MODEL"
echo "Extra args: ${EXTRA_ARGS[*]:-none}"
echo "Output dir: $OUTPUT_DIR"
echo "Started: $(date)"
echo ""
for i in $(seq "$START" "$END"); do
BATCH=$(printf "%03d" "$i")
OUT="$OUTPUT_DIR/batch_${BATCH}.jsonl"
LOG="$OUTPUT_DIR/batch_${BATCH}.log"
if [ -f "$OUT" ]; then
echo "[$BATCH] exists ($(wc -l < "$OUT") pairs), skipping."
continue
fi
echo "[$BATCH] start $(date)"
uv run python "$SCRIPT_DIR/generate_query_pairs.py" \
--tiles-dir "$TILES_DIR" \
--batch-index "$i" \
--total-batches "$TOTAL_BATCHES" \
--num-pages "$PAGES_PER_BATCH" \
--output "$OUT" \
--seed "$i" \
--model "$MODEL" \
"${EXTRA_ARGS[@]}" \
2>&1 | tee "$LOG"
echo "[$BATCH] done $(wc -l < "$OUT" 2>/dev/null || echo 0) pairs | $(date)"
echo ""
done
echo "All done | $(date)"
# Merge all batch files
MERGED="$OUTPUT_DIR/all_pairs.jsonl"
cat "$OUTPUT_DIR"/batch_*.jsonl > "$MERGED" 2>/dev/null || true
echo "Merged: $(wc -l < "$MERGED" 2>/dev/null || echo 0) pairs total → $MERGED"