File size: 4,662 Bytes
6a82282 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | # Phase 17 β Riprap end-to-end integration of all NYC AMD fine-tunes
## Goal
Wire the four AMD-trained NYC fine-tunes (Phase 2 LULC + Phase 12 TiM
+ Phase 13 Buildings + Phase 14 Prithvi-NYC + Phase 16 TTM-NYC) into
Riprap's existing FSM as production specialists. The hackathon
submission then demonstrates the full briefing flow with all six
foundation models running locally on AMD.
This experiment is the *deployment story* β taking the published HF
checkpoints and showing them serve real Riprap queries, not just the
isolated Gradio demo.
## Scope
NOT a fine-tune. Pure integration work β porting code from
`experiments/05_terramind_nyc_finetune/publish/space/local_app.py`
into Riprap's `app/` modules with proper FSM hooks.
## What gets touched
### New specialists
`app/context/sentinel_live.py` β `fetch_recent_chips(lat, lon)` from
Earth Search (S2 + DEM) + PC (S1 RTC), with multi-source fallback and
per-MGRS-cell cache. From experiments/11_live_sentinel_fetch.
`app/context/terramind_nyc.py` β wraps the AMD-trained NYC LULC + TiM
+ Buildings checkpoints. Returns a single dict with class fractions,
imperviousness, building density, and freshness disclosures. Replaces
`app/context/terramind_synthesis.py`'s zero-shot path while keeping
the same output schema for backward compatibility.
### Modified specialists
`app/flood_layers/prithvi_water.py` β gains a `prithvi_live` mode that
uses the Phase 14 NYC pluvial fine-tune on a freshly-fetched S2 chip,
in addition to the existing point-in-polygon test against
`prithvi_ida_2021.geojson`.
`app/live/ttm_forecast.py` β model-id swap from zero-shot TTM r2 to
the Phase 16 NYC-fine-tuned variant.
### FSM updates
`app/fsm.py:step_terramind` already exists; just point it at
`terramind_nyc` instead of `terramind_synthesis`. No new action
needed β the dict shape matches.
`app/reconcile.py:579-608` (the TerraMind doc-message block) updates
the framing from "tentative ESRI labels" to "WorldCover macro-classes
(confirmed) + AMD-trained NYC fine-tune". Drops the "tentative"
disclaimer since labels are now real ground truth.
### Tests
`tests/test_terramind_nyc.py` β three NYC reference points (Manhattan
center, Brighton Beach, Bronx Zoo). Expected class distributions
(Manhattan should be β₯70% developed; Brighton Beach should have β₯10%
water; Bronx Zoo should have β₯15% forest). Mock the live Sentinel
fetch in CI.
## Success criteria
- A real Riprap query for "Empire State Building" returns a briefing
whose `terramind_nyc` doc body cites:
- imperviousness (= developed%)
- green-space %
- water %
- building-density % (if Phase 13/15 lands)
- flood-prediction % (if Phase 14 lands)
- S2 acquisition age in days
- S1 acquisition age in days
- The reconciler's Mellea grounding pass succeeds on those numbers.
- The full flow runs in < 12 s end-to-end, including the live Sentinel
fetch (~5 s) plus all 14 specialists (~6 s) plus reconciliation.
## Plan
1. Scaffold (this file).
2. Port `local_app.py` chip-fetch + inference logic into
`app/context/terramind_nyc.py`. Mirror the dict shape from
`app/context/terramind_synthesis.py:fetch()`.
3. Port the live Sentinel multi-source fetch from Phase 11 into
`app/context/sentinel_live.py`.
4. Wire `step_terramind` in `app/fsm.py` to use the new module.
5. Update `app/reconcile.py` framing (drop "tentative" disclaimer
when `label_schema` says "confirmed").
6. Add unit tests for the new modules in `tests/`.
7. Run a smoke briefing for "2940 Brighton 3rd St, Brooklyn" (the
existing worked example in ARCHITECTURE.md Β§3.2). Confirm the new
sentence appears in the briefing.
8. Update ARCHITECTURE.md Β§7 to add TerraMind-NYC + the AMD-fine-tune
provenance line.
## What this enables for the submission
A judge clicking through the Riprap UI sees:
- Type address β live trace shows `step_terramind_nyc` running with the
AMD-fine-tuned ckpt loading
- The briefing paragraph cites imperviousness, green-space %, building
density β with `[terramind_nyc]` citations
- The bottom-of-briefing "what models powered this" section lists six
foundation models, one of them flagged AMD-trained
- The MapLibre overlay shows the predicted LULC polygons
That's the demo for the video.
## Risk
Low. All the heavy ML is done by this phase; this is just plumbing.
Estimated half-day for a clean port.
## Reproduction (planned)
```bash
# After fine-tunes published to HF:
git pull origin main # latest Riprap with the integration
RIPRAP_TERRAMIND_VARIANT=nyc \
RIPRAP_PRITHVI_VARIANT=nyc \
RIPRAP_TTM_VARIANT=nyc \
.venv/bin/uvicorn web.main:app --port 7860
```
|