Skip to content

[E12] Pooled vs clip-level echo tokens — the deferred half of the #69 ablation #77

Description

@duckyquang

Task metadata

Field Value
Task ID E12
Category Evaluation
Priority High
Complexity Medium
Est. days 2
Split from #69 (E11) — the half that was runnable is resolved there
Blocked by HF gate approval (#70)
Feeds #72 rerun of the missing-modality numbers

Description

#69 resolved the two pooling decisions that were runnable on current data (ECG: mean, forced — the parquet is pooled; echo head: attentive over linear on val). This issue carries the half that was not runnable: study-level mean pooling vs retained clip-level echo tokens into the attentive probe.

This is the highest-leverage open experiment in the repo: on pooled inputs the cross-attention block provably cannot attend across modalities (TECHNICAL 6.4, pinned by test_echo_to_ecg_attention_is_degenerate_on_tiled_ecg_tokens), so the reported fused numbers describe a concat-equivalent model. Clip-level echo tokens restore the ecg_to_echo direction for real, and #67 flags mean-pooling as a candidate cap on the echo branch.

Everything on the code side is ready and merged: build_echo_study_embeddings(..., max_clips=N) writes the clip-level manifest, the probes/evals read it, masks are threaded, and run_metadata.json records echo_tokens_are_clip_level. What is missing is only the data: rebuilding needs the gated HF shards (MITCriticalData/mimic-iv-echo-jepa-embeddings, vjepa2.1-vitl-mimic-pt-100, 2.17 GB total), and no machine we currently run on has gate approval (#70, checked directly — content downloads 401).

Steps:

  1. Someone with HF gate approval pulls the vjepa2.1-vitl-mimic-pt-100 shards (2.17 GB).
  2. Rebuild the joined manifest with --max-clips (pick N from the n_echo_clips distribution already in the manifest metadata).
  3. Retrain the four probes on the clip-level manifest (same seed/splits; ~minutes on CPU) and compare pooled vs clip on val.
  4. Confirm ecg_to_echo attention-weight spread goes non-zero on real data, the way the [M11] Fused probe has no cross-modal interaction — one direction still dead #72 synthetic check showed.
  5. If clip wins on val: rerun the missing-modality eval ([E07] Canonical missing-modality rerun with bootstrap CIs #64's script) and restate the canonical numbers; note on [E10] Diagnose fused vs single-modality baseline gap #67 that the pooling cap was real.

Acceptance criteria:

  • Pooled-vs-clip val comparison with numbers, logged to logs/pooling_ablation.json next to the decisions [E11] Pooling ablation — HuBERT-ECG and EchoJEPA clip pooling #69 recorded.
  • run_metadata.json provenance shows echo_tokens_are_clip_level: true for the clip run, plus manifest/checkpoint SHA-256.
  • A decision on the canonical regime, and if it changes, the README/TECHNICAL numbers restated from the new run.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions