|
| 1 | +# task336 independent review of task335/#398 |
| 2 | + |
| 3 | +<!-- METADATA:STATUS=ReadyForPR,DISPOSITION=APPROVE_TASK335_BLOCKER_DOCS_CLOSEOUT,SESSION=1 --> |
| 4 | + |
| 5 | +Generated: 2026-06-04T09:29:39Z |
| 6 | + |
| 7 | +## Decision |
| 8 | + |
| 9 | +`APPROVE_TASK335_BLOCKER_DOCS_CLOSEOUT` for #398 exact head |
| 10 | +`0a094483458f01813b50e4fb13e2ddefdbdc4517`. |
| 11 | + |
| 12 | +The reviewed evidence supports accepting #398/task335 as no-training |
| 13 | +fail-closed blocker documentation. The data/model/resource/Qwen-contract/ |
| 14 | +validation-route subchecks are documented and checksum-backed, while the launch |
| 15 | +remains blocked by the exact NemTron runtime import failure: |
| 16 | + |
| 17 | +`megatron.bridge.recipes.qwen.qwen3_moe` -> `ModuleNotFoundError("No module named 'megatron.energon'")`. |
| 18 | + |
| 19 | +This approval is blocker-docs closeout only. It does not release task310, 30B |
| 20 | +training, optimizer steps, eval, export, endpoint, promotion, task255 reuse, |
| 21 | +AIME2025 train rows, shared deletion, main push, merge, or self-merge. |
| 22 | + |
| 23 | +## Target Reviewed |
| 24 | + |
| 25 | +- PR: #398 `https://github.com/songCNMS/Nemotron/pull/398` |
| 26 | +- Exact head reviewed: `0a094483458f01813b50e4fb13e2ddefdbdc4517` |
| 27 | +- PR state observed: `OPEN`, non-draft, base `main`, `CLEAN`/`MERGEABLE` |
| 28 | +- Base observed: `origin/main` `76b9ebf98e623cb85075378ca9980ba6ee11c8ed` |
| 29 | +- Local artifact root: |
| 30 | + `/work-agents/intern_nemotron_worker_2/outputs/task335_qwen_all_sft_task333_30b_launch_preflight_s1/run_20260604T090300Z` |
| 31 | +- Report reviewed: |
| 32 | + `workspace/tasks/task335_qwen_all_sft_task333_30b_launch_preflight_s1/task333_30b_launch_preflight_report.md` |
| 33 | + |
| 34 | +## Commands And Checks |
| 35 | + |
| 36 | +Commands were run from |
| 37 | +`/work-agents/intern_nemotron_worker_4/Nemotron_task336` unless noted. |
| 38 | + |
| 39 | +```bash |
| 40 | +git fetch origin main +pull/398/head:refs/remotes/origin/pr/398 |
| 41 | +gh pr view 398 --json number,state,isDraft,baseRefName,headRefName,headRefOid,mergeStateStatus,mergeable,url,title |
| 42 | +git diff --name-status origin/main...origin/pr/398 |
| 43 | +git diff --check origin/main...origin/pr/398 |
| 44 | +tmp=$(mktemp -d) |
| 45 | +git show origin/pr/398:workspace/tasks/task335_qwen_all_sft_task333_30b_launch_preflight_s1/build_task335_30b_launch_preflight.py > "$tmp/build_task335_30b_launch_preflight.py" |
| 46 | +PYTHONDONTWRITEBYTECODE=1 python3 -m py_compile "$tmp/build_task335_30b_launch_preflight.py" |
| 47 | +rm -rf "$tmp" |
| 48 | +cd /work-agents/intern_nemotron_worker_2/outputs/task335_qwen_all_sft_task333_30b_launch_preflight_s1/run_20260604T090300Z |
| 49 | +sha256sum -c manifests/artifact_checksums.sha256 |
| 50 | +sha256sum -c manifests/train_only_shard_checksums.sha256 |
| 51 | +python3 <read-only JSON manifest and split exposure summary> |
| 52 | +tail -n 80 logs/remote_no_training_preflight_probe.log |
| 53 | +``` |
| 54 | + |
| 55 | +Results: |
| 56 | + |
| 57 | +- #398 exact head is |
| 58 | + `0a094483458f01813b50e4fb13e2ddefdbdc4517`. |
| 59 | +- Diff scope is limited to worker_2 status plus task335 README/history/ |
| 60 | + task_knowledge, task-local helper, and task335 report. |
| 61 | +- `git diff --check origin/main...origin/pr/398`: clean. |
| 62 | +- Helper compile from PR head: `PASS`. |
| 63 | +- `sha256sum -c manifests/artifact_checksums.sha256`: `PASS`, 16 entries. |
| 64 | +- `sha256sum -c manifests/train_only_shard_checksums.sha256`: `PASS`, 84 |
| 65 | + train-only shard entries. |
| 66 | +- `remote_no_training_preflight_probe` log ends with |
| 67 | + `TASK335_REMOTE_PREFLIGHT=BLOCK`. |
| 68 | + |
| 69 | +## Artifact And Checksum Verdict |
| 70 | + |
| 71 | +Important artifact checksums match the task335 report and local manifests: |
| 72 | + |
| 73 | +- `manifests/final_summary.json`: |
| 74 | + `80a4ddce65f43af87ff269b760db73e5520644b9c528530f2e0df267b9968b6d`. |
| 75 | +- `manifests/artifact_checksums.sha256`: |
| 76 | + `fedeea0f279cd716ed24d7c352a464b010e7577876d75bb5d156ade292665297`. |
| 77 | +- `manifests/remote_no_training_preflight_probe.json`: |
| 78 | + `cf0cacc2a42c3e13a8677edcdfd804f27f97e5b7b1cc2b57a5369304409560d8`. |
| 79 | +- `manifests/later_launch_contract.json`: |
| 80 | + `476b28337526d2057278f82de8e0917b9b33e418d75ac15adda8a8a81c860d6b`. |
| 81 | +- `logs/remote_no_training_preflight_probe.log`: |
| 82 | + `8fa6724d984d38402324f6a3e91e2ba53a95fd11fcb3eb46b9a3dd925616a210`. |
| 83 | +- `manifests/train_only_shard_checksums.sha256`: |
| 84 | + `e5abfbdfebe341b8f346c17f33f4b95ff8fe5750411a40efac1b079fa66bb937`. |
| 85 | + |
| 86 | +The checksum manifests validate the files and train-only shards in the assigned |
| 87 | +artifact root. I did not modify task335 artifacts. |
| 88 | + |
| 89 | +## Passing Subchecks |
| 90 | + |
| 91 | +The final summary and probe manifests support these pass conditions: |
| 92 | + |
| 93 | +- Final disposition: `BLOCK_LAUNCH_PREFLIGHT`. |
| 94 | +- Remote probe disposition: `BLOCK_RUNTIME_MISSING_IMPORT`. |
| 95 | +- Qwen3-30B model path exists: |
| 96 | + `/mnt/cephfs/data/stable/models/Qwen/Qwen3-30B-A3B-Instruct-2507`. |
| 97 | +- Model metadata: `model_type=qwen3_moe`, |
| 98 | + architecture `Qwen3MoeForCausalLM`. |
| 99 | +- Tokenizer chat template present; tokenizer/model probing used |
| 100 | + `trust_remote_code=false`. |
| 101 | +- task333 full packed root exists and exposes train/valid/test as 84/6/6. |
| 102 | +- task333 artifact checksum rc `0`, packed shard checksum rc `0`, and accepted |
| 103 | + Qwen3-30B packed contract pass are carried in the local probe. |
| 104 | +- Task-owned train-only launch view exposes 84 train parquet files and 0 |
| 105 | + valid/test parquet files. |
| 106 | +- Train-only metrics: 78,168 rows, 300,046,415 input tokens, |
| 107 | + 33,477,337 supervised tokens, 154,008,682 bytes. |
| 108 | +- Remote Qwen packed/training contract status: `PASS`. |
| 109 | +- Validation route: `valid_parquet_count=0`, |
| 110 | + `do_validation_expected=false`, source contains the `has_validation_data = |
| 111 | + False` route and returns `do_validation=has_validation_data`. |
| 112 | +- GPU resource probe: 8 NVIDIA H200 GPUs, each 143,771 MiB, 0% observed |
| 113 | + utilization during the probe. |
| 114 | +- Later launch contract is no-training preflight only and keeps required |
| 115 | + placeholders unset for train iters, LR/min LR/warmup/save interval, and |
| 116 | + lead-approved Bridge checkpoint path. |
| 117 | + |
| 118 | +## Blocker Verdict |
| 119 | + |
| 120 | +The exact blocker is correctly classified: |
| 121 | + |
| 122 | +- `megatron`: `PASS` |
| 123 | +- `megatron.bridge`: `PASS` |
| 124 | +- `megatron.bridge.training.config`: `PASS` |
| 125 | +- `torch`: `PASS` |
| 126 | +- `omegaconf`: `PASS` |
| 127 | +- `nemotron.recipes.super3.stage1_sft.qwen3_30b_a3b_local_train`: `PASS` |
| 128 | +- `nemotron.recipes.super3.stage1_sft.qwen_chat_contract`: `PASS` |
| 129 | +- `megatron.bridge.recipes.qwen.qwen3_moe`: `FAIL` |
| 130 | + |
| 131 | +Failure: |
| 132 | +`ModuleNotFoundError("No module named 'megatron.energon'")`. |
| 133 | + |
| 134 | +This supports `BLOCK_LAUNCH_PREFLIGHT` and keeps task310/all-SFT 30B launch on |
| 135 | +HOLD until a later lead-approved runtime remediation makes the Qwen3 MoE Bridge |
| 136 | +recipe import successfully in the same task-owned NemTron `/root` sync route. |
| 137 | + |
| 138 | +## Consistency Notes |
| 139 | + |
| 140 | +- The artifact command-env manifest records worker_2 branch head |
| 141 | + `76227ae1ccf483579f19a3288778ced2f32262c6`, while #398 exact head is |
| 142 | + `0a094483458f01813b50e4fb13e2ddefdbdc4517`. |
| 143 | +- I checked `76227ae1..0a094483`: the drift is task335 docs/status/report/ |
| 144 | + helper publication, and `git diff --check` is clean. |
| 145 | +- The remote synced repo used for runtime debug is current main |
| 146 | + `76b9ebf98e623cb85075378ca9980ba6ee11c8ed`, matching the task335 report. |
| 147 | + |
| 148 | +## Residual Risks |
| 149 | + |
| 150 | +- This is blocker evidence only; no actual optimizer/training launch happened. |
| 151 | +- The later launch template is intentionally not runnable without lead-supplied |
| 152 | + placeholders and a lead-approved imported Bridge checkpoint path. |
| 153 | +- The task-owned train-only view intentionally omits valid/test shards to keep |
| 154 | + validation disabled; future training must preserve that fail-closed route or |
| 155 | + rerun an equivalent no-training preflight. |
| 156 | +- The runtime remains unusable for launch until `megatron.energon` is available |
| 157 | + in the NemTron route and `megatron.bridge.recipes.qwen.qwen3_moe` imports. |
| 158 | +- Any future checkpoint, canary, or same-harness eval requires separate lead |
| 159 | + assignment and independent review. |
| 160 | + |
| 161 | +## Boundary Confirmation |
| 162 | + |
| 163 | +Confirmed from the report/manifests and my own actions: |
| 164 | + |
| 165 | +- No task335 artifact or worker_2 branch mutation. |
| 166 | +- No optimizer steps or training loop. |
| 167 | +- No benchmark eval, AIME eval, or task243 eval. |
| 168 | +- No export, endpoint, promotion, 30B release, or task310 release. |
| 169 | +- No task255 reuse and no AIME2025 train rows. |
| 170 | +- No shared deletion/mutation. |
| 171 | +- No main push, merge, or self-merge. |
0 commit comments