본문으로 건너뛰기
cccskills
무료GitHub에 공개

run-ferries

Run Marin canary checks for training health or daily experiments with small configuration changes. Monitor each job to completion, record evaluation results, and close daily runs with a version tag and log update.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

원문원문 설명 보기

Launch, monitor, or seal a Marin canary or daily ferry only when explicitly requested.

설치 방법 보기

이럴 때 유용합니다

  • Check training health with an unchanged canary run
  • Test one or two configuration changes in a daily run
  • Monitor a ferry job through its terminal state
  • Record daily results and tag the launch commit

포함된 파일(1)

  • SKILL.md8.4 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Ferries

  • experiments/ferries/canary_ferry.py (MoE canary, TPU and GPU via CANARY_ACCELERATOR)
  • experiments/ferries/daily.py

Canary is the stable, low-cost health check. Daily exercises a larger envelope with one or two explicit changes.

Shared baseline:

  • data: shared nemotron_mix baseline
  • default cluster: us-central1 (zone us-central1-a)
  • run log: docs/experiments/daily-ferry-log.md

Daily defaults to llama_150m, sequence length 4096, batch size 512, and about 1e19 FLOPs unless its configuration says otherwise.

Inputs Before Proposing (Daily Only)

Canary runs normally do not require a proposal cycle or PR. For daily, collect:

  1. Last ferry references: issue URL, PR/commit URL, W&B run URL and Iris job ID
  2. Human objective for this interval: standard integration pass, or explicit regression investigation
  3. Interval boundary: use "since last ferry run", not fixed wall-clock day boundaries

If objective is ambiguous, ask before editing.

Operating Policy

General

  • Hard launch gate: get explicit requester approval before launching any ferry job. Only exception: the requester explicitly says to launch without asking.
  • Follow the use-iris skill's job-monitoring workflow until the run reaches a terminal state (SUCCEEDED/FAILED/STOPPED); do not stop early. Full ferry monitoring often takes 4-5 hours.
  • Never restart/recreate/mutate cluster without explicit human consent in-thread. Keep cluster mutation guardrails aligned with the Iris monitoring workflow, including the debug exception path.
  • Use major-event updates (not spam): launch, first eval, major incident, terminal state.
  • Seal each completed daily run with a pushed git tag pointing to the exact launch commit.
  • Canonical run-closure PR labels: ferry, ferry-daily, ferry-log-only, ferry-sealed.
  • Canonical seal-tag format (daily): ferry/daily/YYYYMMDD/<run_slug>

Canary

  • Keep canary stable; only change it for explicit reliability fixes, and only when diagnosing/fixing a concrete failure mode.
  • Canary launches usually do not require a PR if the script/config is unchanged.
  • If canary fails, treat as urgent infrastructure/training-health triage.
  • Canary is run-only by default (W&B + issue updates); no sealing tag or run-closure PR in the normal path.

Daily

  • Use daily for bounded evolution, usually 1-2 knobs.
  • If daily fails, debug with one bounded fix attempt, then escalate.
  • Run-closure PR scope is log-only: update docs/experiments/daily-ferry-log.md, keep detailed debug/run narrative in the issue.

Workflows

Daily lane (proposal + run)

1) Build context since last ferry

Check the latest entries in docs/experiments/daily-ferry-log.md.

LAST_FERRY_SHA=<last_ferry_commit_sha>
LAST_FERRY_DATE=<YYYY-MM-DD>

git log --oneline "${LAST_FERRY_SHA}..HEAD" -- experiments/ lib/ scripts/

gh issue list \
  --label experiment \
  --search "updated:>=${LAST_FERRY_DATE}" \
  --limit 100

Treat GitHub-tagged ferry PRs/issues as source of truth. Use "since last ferry run" rather than fixed wall-clock boundaries.

2) Edit experiments/ferries/daily.py

  • Keep edits bounded (typically 1-2 knobs); propose at least one intentional modification each interval.
  • If no obvious change emerges from recent commits/issues/ferry history, pick a low-risk tweak (e.g. data-mix adjustment or hyperparameter change) that may improve loss at the same FLOPs budget.
  • Pattern-match from the previous daily ferry; avoid high-churn rewrites.
  • Update run naming for this interval (e.g. via FERRY_DATE in launch env: daily-125m-YYYY-MM-DD style).

3) Record proposal in issue and push launch commit

In the run issue, record:

  • last ferry links (issue + commit + W&B/job link),
  • exact config delta and rationale,
  • risk level (low/medium/high),
  • relaunch fallback note,
  • why this run is not literally identical to the previous daily run,
  • launch checklist (explicit requester approval or explicit waiver + monitoring started).

Then push the launch commit (no proposal PR by default).

4) Launch

Confirm requester approval in-thread unless they already gave explicit "launch without asking" permission.

uv run iris --cluster=marin job run --no-wait --cpu=1 --memory=2G --extra=cpu \
  -- python -m experiments.ferries.daily

After launch, capture and post to the issue:

  • Iris job id (printed by iris job run, form /<user>/iris-run-job-YYYYMMDD-HHMMSS)
  • cluster
  • launch timestamp
  • W&B link(s) when available

Optional deterministic daily rerun name:

uv run iris --cluster=marin job run --no-wait --cpu=1 --memory=2G --extra=cpu \
  -e FERRY_DATE "$(date +%Y%m%d-%H%M%S)-daily-ferry" \
  -- python -m experiments.ferries.daily

5) Monitor to terminal state

Follow the use-iris skill's job-monitoring workflow with job_id, cluster, experiment=<ferry script path>.

  • Keep the monitoring loop active until terminal status; ferry runs commonly take 4-5 hours.
  • Follow monitoring-loop restart policy for recoverable failures.
  • Escalate non-trivial failures to humans.

6) Close the loop

Post in the ferry issue: final status, key metrics/regressions, Iris job ID and W&B link(s), recommendation for next ferry. Optional: post a manual Discord update for major run state changes.

For daily-log metric fields, extract canonical final keys with:

uv run python scripts/ferries/daily_analysis.py \
  --run <wandb_run_url_or_path> \
  --format markdown

Use this terminal issue comment shape:

Final status: <SUCCEEDED|FAILED|STOPPED>
Iris job id: <job_id>
W&B link: <url>
Final eval summary: <key metrics>
Experiment link: <experiment JSON/browser link>
Recommendation / victory decision: <next action>

7) Seal and open log-only PR

  • Create and push a sealing tag for the exact launch commit (the commit containing the experiments/ferries/daily.py used for the run).
  • Open a PR that updates only docs/experiments/daily-ferry-log.md, following .agents/skills/commit/SKILL.md for commit, PR text, and monitoring.
  • Keep all detailed launch/retry/debug narrative in the run issue, not in the PR.
  • Apply canonical labels: ferry, ferry-daily, ferry-log-only, ferry-sealed.

Canary lane (steady-state run)

Default mode: launch the existing canary script as-is and monitor. Do not run the daily proposal/PR loop unless intentionally changing canary. Even for unchanged runs, ask the requester before launch unless they explicitly waived that requirement.

Launch (TPU):

uv run iris --config=lib/iris/config/marin.yaml \
  job run --memory=16G --disk=16G --cpu=1 --extra=tpu \
  -- python -m experiments.ferries.canary_ferry

Launch (GPU / CoreWeave):

uv run iris --cluster=cw-us-east-02a \
  job run --memory=16G --disk=16G --cpu=1 --extra=cpu \
  -e MARIN_PREFIX s3://marin-us-east-02a/marin \
  -e CANARY_ACCELERATOR gpu \
  -- python -m experiments.ferries.canary_ferry

If canary fails: triage and identify root cause, only then open a focused PR if a canary script/config change is necessary, relaunch and monitor to terminal state.

Canary profiling triage

  • The full profile_summary.json is in the workflow logs (default params: --warmup-steps 5, --breakdown-mode exclusive_per_track, --hot-op-limit 25). The step summary has pointers to the raw trace artifact and W&B run.
  • The log summary is ephemeral and not published. To re-analyze with different parameters, fetch the raw trace via --run-target — see .agents/skills/profile-training/SKILL.md.
  • If the canary failed early, the profile may only cover warmup steps — check step_time.all_steps.count before drawing conclusions from steady-state stats.
  • exclusive_per_track (the default) can hide device stalls that overlap across tracks. Use exclusive_global when investigating stall-heavy profiles.

Promotion rule

Promote a daily variant only when eval losses and aggregate LM metrics improve without a reliability regression. Open a follow-up PR for the recipe and this skill with a before/after metrics table.

Validation Checklist

  • Diff is intentional and bounded for the selected lane.
  • If daily was edited, launch commit is pushed and referenced in the run issue.
  • Run-closure PR only updates docs/experiments/daily-ferry-log.md.
  • Ferry issue has updated launch metadata.
  • Monitoring loop ran until terminal state.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Compare Zephyr changes using the same prepared dataset and matching execution settings. Analyze Finelog metrics for each processing stage to distinguish CPU efficiency, elapsed time, and peak memory changes, then report improvements, regressions, or tradeoffs.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Compare Zephyr performance before and after a PR
  • Assess speed gains against additional CPU usage
  • Check peak memory and out-of-memory regressions
marin-community/marin4천2026년 10월 22일 업데이트

Register Hugging Face datasets for Marin by inspecting their structure without downloading the full dataset. Identify text fields, configurations, and data splits, then add a dataset module and validate the mapping with a sample.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Registering a Hugging Face dataset for Marin
  • Inspecting text fields without a full dataset download
  • Checking configurations and data splits
marin-community/marin4천2026년 10월 22일 업데이트

add-grant

무료

Turn a specified GCP access request into a reviewable Pulumi change and pull request. Select the narrowest suitable role and encrypt personal email identities, covering resource permissions and Cloud Run viewer access through IAP, an access gateway.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Prepare a request for GCS bucket read access
  • Add a viewer to a Cloud Run service protected by IAP
  • Prepare service account impersonation permissions
marin-community/marin4천2026년 10월 22일 업데이트

Add or update Pallas/Mosaic kernels, specialized computation routines for JAX. The skill covers reference implementations, output and gradient checks, public wrappers, fallback behavior, performance benchmarks, and hardware-specific tuning when requested.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Adding a Pallas kernel for a JAX computation
  • Checking outputs and gradients against a reference
  • Maintaining backend selection and fallback behavior
marin-community/marin4천2026년 10월 22일 업데이트

Preserve old experiment scripts with a dated Git tag, a named snapshot of the code, and add comments linking related GitHub issues to the archived files and cleanup pull request.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Preserving a snapshot of old experiment scripts
  • Linking experiment issues to archived files
  • Updating archive notices after a tag changes
marin-community/marin4천2026년 10월 22일 업데이트

Launch and continuously monitor a specified Zephyr pipeline on Iris when asked. It checks coordinator and worker health, tracks stage progress, identifies stalled or repeated failures, and requires explicit approval before stopping or restarting jobs.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Launch a specified Zephyr pipeline and check startup
  • Monitor stage progress and worker health over time
  • Investigate stalled stages or repeated worker failures
marin-community/marin4천2026년 10월 22일 업데이트

marin-community의 스킬 모두 보기

이 스킬의 문제 신고