Skip to content

Port ripple benchmark pipeline from Nomad to AWS Batch - #2

Open
robgpita wants to merge 2 commits into
mainfrom
ripple-batch-pipeline
Open

Port ripple benchmark pipeline from Nomad to AWS Batch#2
robgpita wants to merge 2 commits into
mainfrom
ripple-batch-pipeline

Conversation

@robgpita

Copy link
Copy Markdown
Collaborator

Ports the ripple1d/flows2fim benchmark extent pipeline from Nomad
(fim-misc/flows2fim-runner) to AWS Batch, following the existing GFM/GFM_EXP
split/worker/merge pattern with per-library job granularity, and adds STAC
cataloging for the resulting ripple-fim-collection.

  • ingest/ripple/extent_worker.py, batch_split.py, batch_merge.py,
    batch_utils.py — Batch worker + manifest discovery/idempotent skip
    logic, structural port of the original Nomad worker. Writes COG directly
    (was VRT); accepts non-numeric library ids (ohio_rfc, mn_Other,
    nc_Other).
  • ingest/ripple/cog_worker.py — one-time Batch phase to convert
    VRT-as-.tif output (from before the output_format fix) to real
    GeoTIFF COGs in place.
  • ingest/ripple/ripple_col.py — STAC cataloging updated for v0.11.x:
    wires up ble/mip/mn/nc, skips libraries with no raster output
    instead of crashing, and now writes a skipped_libraries_<timestamp>.txt
    reference to S3 so exclusions are auditable.
  • Dockerfile.ripple, terraform/, scripts/run_pipeline_prefect.py
    ripple ECR repo + 4 job definitions, --items-per-job/--limit/
    --cog-only/--run-cog-conversion flags, compute sizing from observed
    usage.
  • README.md, docs/aws-batch-pipeline.md — ripple folded into the shared
    runbook alongside GFM/GFM_EXP (previously undocumented at the top level).

Testing

  • Full raster generation run against the complete ripple_v0.11.x
    library set, twice (once for initial NC/MN backfill, once after further
    NC/MN data landed) — both completed successfully.
  • Full COG conversion run, byte-level spot-checked (confirmed real GeoTIFF, not VRT).
  • STAC cataloging run against production.
    1,251 items cataloged; verified collection.json + a sample of
    items across all 4 sources resolve to real, non-empty S3 assets with
    correct ripple_v0.11.x paths; verified 0 unexpected/extra library
    directories and structural completeness (thumbnail + model_domain + all
    6 flow-interval extents) for 1,245/1,251 libraries, with the remaining 6
    matching a known, already-documented partial-data failure mode.
  • Verified the Parquet asset cache correctly skips already-processed
    libraries on a subsequent STAC run. Only new/changed libraries get
    reprocessed, not a full re-run.
  • Old pre-v0.11.x STAC collection archived and verified byte-identical
    before being overwritten by the real run.

…C cataloging

Ports the ripple1d/flows2fim benchmark extent pipeline from the old Nomad
setup (flows2fim-runner) to AWS Batch, following the existing GFM/GFM_EXP
split/worker/merge pattern with per-library job granularity.

- ingest/ripple/extent_worker.py: Batch worker, structural port of the
  original Nomad F2FWorker; now writes COG directly (was VRT) and accepts
  non-numeric library ids (ohio_rfc, mn_Other, nc_Other)
- ingest/ripple/batch_split.py, batch_merge.py, batch_utils.py: manifest
  discovery, idempotent skip logic, run summary/reconciliation
- ingest/ripple/cog_worker.py: new Batch phase to convert existing VRT-as-.tif
  output to real GeoTIFF COGs in place, for libraries generated before the
  output_format switch
- ingest/ripple/ripple_col.py: STAC cataloging updated for v0.11.x — wires up
  ble/mip/mn/nc, skips libraries with no raster output yet instead of crashing,
  bootstraps the catalog if missing
- ingest/ripple/worker_config.yaml: S3 paths, naming templates, flow
  intervals folded in as single source of truth; output_format now cog
- Dockerfile.ripple: GDAL + flows2fim image for the ripple worker
- terraform/: ripple ECR repo, 4 job definitions (split/worker/merge/cog),
  compute resource sizing from observed usage, desired_vcpus safety fix
- scripts/run_pipeline_prefect.py: ripple pipeline support, --items-per-job,
  --limit, --cog-only, --run-cog-conversion flags
- scripts/build_and_push.sh, batch-entrypoint.sh: ripple image build support

Verified in production: full raster run (1,120/1,238 libraries succeeded,
118 known flows2fim data failures), full COG conversion (1,234/1,238
converted, byte-level spot-checked), STAC cataloging tested end-to-end
against real S3 data.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant