Skip to content

[codex] Add methane plume extraction demo - #100

Draft
fbenavidesj-code wants to merge 4 commits into
mainfrom
codex/methane-plume-demo-cookbook
Draft

[codex] Add methane plume extraction demo#100
fbenavidesj-code wants to merge 4 commits into
mainfrom
codex/methane-plume-demo-cookbook

Conversation

@fbenavidesj-code

@fbenavidesj-code fbenavidesj-code commented May 11, 2026

Copy link
Copy Markdown

Summary

Adds a self-contained methane plume extraction cookbook example for O&G leak-monitoring triage with LFM2.5-VL-1.6B.

The example shows the structured-output workflow:

rendered methane observation image + fixed customer schema -> JSON record

It includes:

  • a browser demo with curated methane plume samples and ground-truth assessment
  • local base/fine-tuned model inference servers
  • the exact fixed methane schema and prompt shape
  • Hugging Face model access/download instructions
  • agent runbooks for opening and validating the demo
  • a training/ recipe that documents how the private checkpoint was produced and how to reproduce the final recipe directly

Fine-tuning recipe

Added examples/methane-plume-extraction/training/ with:

  • schema.yaml: exact schema used for the checkpoint
  • leap_finetune_modal.yaml: LEAP VLM SFT config used for the run
  • training_manifest.json: verified final dataset mix, checksums, hyperparameters, and eval results
  • sample_train_row.json: concrete LEAP VLM SFT message-format example
  • scripts/prepare_modal_training_bundle_with_replay.py: helper to convert image/schema/ground-truth rows into the Modal/LEAP training JSONL format

The documented checkpoint recipe is:

  • 20,650 rows total
  • 17,234 methane/context rows
  • 3,416 structured-output replay rows
  • 1 epoch, LoRA r=16 / alpha=32, LR 2e-5
  • 1x H100 on Modal, 1h 28m 47s after data upload

The cookbook does not redistribute source imagery, rendered train images, or the full 20,650-row JSONL. The training README points users to the public sources, the required final schema, the expected row contract, the Modal upload path, and the license constraints before redistributing derivatives.

Data sources

  • STARCOP / AVIRIS-NG style methane plume products
  • MethaneSET Sentinel-2, Landsat 8/9, and EMIT-derived examples
  • JPL AVIRIS-NG CH4/CO2 benchmark used for source/eval exploration and held-out demo evaluation, not claimed as a final training source
  • Replay rows from other strict-JSON structured-output VLM tasks to reduce regression

Validation

  • python3 -m py_compile examples/methane-plume-extraction/scripts/serve_demo.py examples/methane-plume-extraction/scripts/serve_local_methane.py examples/methane-plume-extraction/training/scripts/prepare_modal_training_bundle_with_replay.py
  • python3 -m json.tool on training_manifest.json and sample_train_row.json
  • Parsed the embedded interactive_demo.html payload as JSON
  • Verified demo and training schema.yaml files are byte-identical and match training_manifest.json
  • Checked public-facing text for stale internal labels or dataset names
  • Checked the final reproduction path includes schema, label row contract, bundle helper, Modal volume upload target, LEAP config, and eval caveat
  • Secret/weight scan: no tokens, .env, model weights, caches, pyc files, or local absolute paths included

@Paulescu

Copy link
Copy Markdown
Contributor

Thanks for your contribution @fbenavidesj-code

Can you share the fine-tuning script and dataset you used to generate the model checkpoint felipeliquid/LFM2.5-1.6B-VL-Extract-Plume-Demo with leap-finetune?

I would like this example to be self-contained and reproducible.

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.

2 participants