Kirana_AI / scripts /modal_generate_receipt_examples.sh
Zappandy's picture
Deploy to HF Space
dae60e5
Raw
History Blame Contribute Delete
2.45 kB
#!/usr/bin/env bash
set -euo pipefail
source scripts/_env.sh
DATASET_PATH="data/finetune/receipt_examples.jsonl"
OUTPUT_PATH="data/finetune/generated/receipt_examples_modal_synthetic.jsonl"
COUNT="48"
MODEL_ID="Qwen/Qwen2.5-1.5B-Instruct"
BATCH_SIZE="4"
INCLUDE_BASE="true"
RUN_ID="${TRACE_RUN_ID:-modal-synthetic-$(date -u +%Y%m%dT%H%M%SZ)}"
STARTED_AT="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
while [[ $# -gt 0 ]]; do
case "$1" in
--dataset)
DATASET_PATH="$2"
shift 2
;;
--output)
OUTPUT_PATH="$2"
shift 2
;;
--count)
COUNT="$2"
shift 2
;;
--model-id)
MODEL_ID="$2"
shift 2
;;
--batch-size)
BATCH_SIZE="$2"
shift 2
;;
--generated-only)
INCLUDE_BASE="false"
shift
;;
-h|--help)
cat <<'EOF'
Usage: scripts/modal_generate_receipt_examples.sh [--dataset path] [--output path] [--count 48]
Uses a small instruct model on Modal to generate synthetic receipt training JSONL.
By default, the output includes the base examples followed by generated examples.
EOF
exit 0
;;
*)
echo "Unknown argument: $1" >&2
exit 2
;;
esac
done
INCLUDE_BASE_ARG="--include-base"
if [[ "$INCLUDE_BASE" != "true" ]]; then
INCLUDE_BASE_ARG="--no-include-base"
fi
METADATA_JSON=$(printf '{"model_id":"%s","count":%s,"batch_size":%s,"include_base":%s,"modal_app":"dukaan-saathi-receipt-data-generator"}' \
"$MODEL_ID" "$COUNT" "$BATCH_SIZE" "$INCLUDE_BASE")
set +e
uv run modal run modal_apps/receipt_data_generator.py::generate \
--dataset-path "$DATASET_PATH" \
--output-path "$OUTPUT_PATH" \
--count "$COUNT" \
--model-id "$MODEL_ID" \
--batch-size "$BATCH_SIZE" \
"$INCLUDE_BASE_ARG"
STATUS_CODE=$?
set -e
if [[ "$STATUS_CODE" -eq 0 ]]; then
uv run python scripts/record_run_manifest.py \
--run-id "$RUN_ID" \
--kind "modal-synthetic" \
--status "succeeded" \
--started-at "$STARTED_AT" \
--input-file "$DATASET_PATH" \
--output-file "$OUTPUT_PATH" \
--metadata-json "$METADATA_JSON"
else
uv run python scripts/record_run_manifest.py \
--run-id "$RUN_ID" \
--kind "modal-synthetic" \
--status "failed" \
--started-at "$STARTED_AT" \
--input-file "$DATASET_PATH" \
--output-file "$OUTPUT_PATH" \
--metadata-json "$METADATA_JSON" \
--error "modal generator exited with status $STATUS_CODE"
fi
exit "$STATUS_CODE"