exp105: contacts-and-coordinates-v1 data run — fix iris client freshness gate, finalize launch#119
Open
timodonnell wants to merge 8 commits into
Open
exp105: contacts-and-coordinates-v1 data run — fix iris client freshness gate, finalize launch#119timodonnell wants to merge 8 commits into
timodonnell wants to merge 8 commits into
Conversation
The live iris controller now rejects root LaunchJob submissions from marin-iris clients older than 14 days (marin PR #5108). The pinned marin-zephyr branch (alxmrs/stamp-iris-build-date) was closed unmerged and deleted, and the marin-*-latest release wheels are frozen at 2026-05-29 — both too old to submit with. - pyproject: drop the dead git-branch pin; install marin packages for the worker/launcher env from the marin-*-latest release assets via find-links (workers/child tasks are exempt from the freshness gate). Add marin-iris. Keep marinfold as a git dep (contacts_and_coordinates_v1 is on main via PR #106). Commit uv.lock (smoke-validated resolution). - README: document that the *submitting* client must be a fresh editable marin-iris (git-date >= today-14); switch launch commands to $IRIS; move the tokenizer to the HF bucket (open-athena model-repo creation 403s and the corpus-tokenizer-in-bucket convention supersedes it); note the non-fatal finelog dashboard-status warnings. Iris smoke (100 docs, us-central1) verified: JOB_STATE_SUCCEEDED, 100/100 docs (0 drops), schema + sha1 consistent, num_tokens ~32,766. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ddz1BSAfmjxCAgdxT681nk
…y blocker The marin cluster has NO preemptible CPU scale group, so --preemptible worker requests register zero autoscaler demand and strand the job on the ~dozen incidental on-demand CPU VMs. Fixes: - cli.py: --preemptible now defaults to False (on-demand); --region is repeatable (action=append) so the on-demand pool can span US regions without exp53's trans-Atlantic spill. - README: on-demand launch commands (multi-US-region), plus a capacity caveat (autoscaler peak_demand ~6 on us-central1-a; a 1024-way fan-out only materialises when the shared, TPU-heavy cluster is quiet). Full run remains BLOCKED on CPU capacity: on-demand + 6 US regions still placed only 2 workers (0/2067 shards) against a cluster running 1324 other tasks. Escalating to a human for a cluster-ops decision. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ddz1BSAfmjxCAgdxT681nk
…ed the run) Root cause of the at-scale stall: the frozen marin-*-latest GitHub release wheels (0.99.dev20260529) are incompatible with the upgraded live controller. Worker tasks got scheduled but never registered with the zephyr coordinator (finelog register_table 404s), so zephyr saw ~0 live workers and 0 shards were produced — regardless of cluster capacity (verified against a quiet cluster). Fix: marin publishes a fresh co-versioned dev release of the whole stack to PyPI on ~every push. Depend on marin-iris/zephyr >=0.2.40.dev202607080801 (2026-07-08, matching the controller); fray/rigging/finelog/finelog-server resolve transitively from PyPI (incl. the native finelog-server wheel). Drop the stale -latest find-links. Bonus: the PyPI marin-iris wheel stamps a fresh BUILD_DATE, so `uv run iris` from this env passes the client-freshness gate directly — no separate editable marin checkout needed for submission. requires-python bumped to >=3.12 (marin). Realizes the "run from the marin workspace" intent (current marin stack) via PyPI wheels instead of a workspace restructure. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ddz1BSAfmjxCAgdxT681nk
…ent; worker-registration) Replace the editable-client instructions with the PyPI approach; the launcher and workers both get current marin, so uv run iris submits directly and workers register with the control plane. Launch commands use uv run iris + on-demand multi-US-region. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ddz1BSAfmjxCAgdxT681nk
…ker-registration, PyPI-marin fix, CPU capacity) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ddz1BSAfmjxCAgdxT681nk
… capacity-blocked Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ddz1BSAfmjxCAgdxT681nk
…sume The AFDB gcs_uri bucket is publicly readable, so read_object_bytes fetches fine locally (no requester-pays billing). This generates train shards on the workstation's cores (spawn pool — fork segfaults the numba/pyconfind/gemmi C exts), writing each with its ORIGINAL index to the same GCS train/ dir, skip-existing so it composes with the concurrent iris grind and is restartable. Runs descending (--reverse) so the local + cluster sweeps meet in the middle. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ddz1BSAfmjxCAgdxT681nk
…ops, ~138B tokens) train ran fast after all: the CPU autoscaler scaled to ~1000 workers for the 2067-shard request (~2h), plus local_generate_train.py on the workstation. Full corpus published. Corrected the earlier 'capacity-blocked' framing. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ddz1BSAfmjxCAgdxT681nk
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Prep + infra fix for the exp105 at-scale generation of the
contacts-and-coordinates-v1 corpus (same ~4.2M proteins as contacts-v1,
reusing exp53's selection manifest verbatim). Issue #105.
The format/generator/pipeline already merged (PR #106; 1 Å /
max_depth=3perPR #118). This PR makes the pipeline actually launchable against the current
live iris cluster and records the smoke-gate result.
The blocker this fixes
The pinned
marin-zephyrbranchalxmrs/stamp-iris-build-dateis gone(marin PR #5990 closed unmerged, branch deleted). More importantly, the live
controller now enforces a 14-day client-freshness gate on root job
submissions (marin PR #5108), and all
marin-*-latestrelease wheels arefrozen at 2026-05-29 — so any client built from them is rejected at submit
("marin-iris client is too old; minimum 2026-06-24").
Key insight from
iris/cluster/controller/service.py: the gate fires only onjob_id.is_root. Worker/child tasks are exempt, and the worker env isuv sync'd from this pyproject independently. So:marin-*-latestwheels (viafind-links).install reports its git-commit date as the client revision). Documented in
the README; on this workstation
/home/bizon/git/marin/.venv/bin/iris(currently 2026-07-07) works.
Smoke gate (✅, 2026-07-08, us-central1)
100 docs from
train/shard_00000.parquet→JOB_STATE_SUCCEEDED:metadata_row()+ provenance passthrough;structure = contacts-and-coordinates-v1;max_depth=3.num_tokens32,764–32,768 (mean 32,766) — budget-filling as projected.sha1 == sha1(document)for all rows; byte-identity togenerate_documentpinned by
tests/test_generate_rows.py.finelogclient 404s on thedashboard status-text push → non-fatal "Failed to report task status text"
warnings. Pipeline runs + writes correct output regardless.
Changes
pyproject.toml: drop dead git-branch pin;find-linkstomarin-*-latest;add
marin-iris; keepmarinfoldgit dep; commituv.lock.README.md: fresh-editable-client requirement +$IRISlaunch commands;tokenizer published to the HF bucket (not a model repo); finelog caveat.
Not in this PR (awaiting go-ahead — large billable run)
The full train/val/test run + HF publish. Projection: ~1,200 core-hours
(~2.5 h wall on 512 workers), ~229 GB parquet / ~138 B tokens.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Ddz1BSAfmjxCAgdxT681nk