You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ORBIT-2 + HydraGNN: group examples/ README by purpose
Reorganize the flat examples/ file lists into labeled sections (setup,
container/launch drivers, in-container glue, configs, data prep, perf
orchestration, post-processing) and document files that were previously
missing from the tables. Keep the folders flat (paths are resolved relative
to each script's dir and the container bind-mount); this is docs-only.
Co-authored-by: Cursor <cursoragent@cursor.com>
|[`sbatch_infer_amd.sh`](sbatch_infer_amd.sh)| SLURM driver for inference on AMD Instinct (MI250X/MI300X/MI350X) |
29
+
|[`sbatch_infer_docker.sh`](sbatch_infer_docker.sh)| SLURM inference driver using Docker instead of Apptainer |
30
+
31
+
### In-container launch glue
32
+
33
+
Run on the host (`render_*`) or inside the container via the `/examples`
34
+
bind-mount; the sbatch drivers depend on these by name, so they stay flat.
35
+
36
+
| Script | Purpose |
37
+
|--------|---------|
38
+
|[`render_orbit2_config.py`](render_orbit2_config.py)| Render a per-job YAML from a template (parallelism, data root, trainer caps); invoked by the sbatch drivers |
39
+
|[`run_orbit2_train.py`](run_orbit2_train.py)| Studio training entry run inside the container (wraps upstream `intermediate_downscaling.py`; gptl4py stub, FusedAttn fallback, batch cap) |
40
+
|[`orbit2_rank_hook_runner.py`](orbit2_rank_hook_runner.py)| Runs an optional per-rank pre-train hook (`ORBIT2_RANK_PRE_TRAIN_HOOK`) before the shell launcher |
41
+
|[`orbit2_profiler_hook.py`](orbit2_profiler_hook.py)| Optional per-rank PyTorch-profiler hook (`res_slimvit` path) invoked via `ORBIT2_RANK_PRE_TRAIN_HOOK`|
42
+
43
+
### Configs (YAML)
44
+
45
+
Kept beside the sbatch drivers — they are resolved as `${SCRIPT_DIR}/${ORBIT2_CONFIG_TEMPLATE}`.
|[`make_synthetic_data.py`](make_synthetic_data.py)| Generate ~2 MB synthetic dataset for smoke tests |
59
+
|[`stage_era5_3x_symlink.sh`](stage_era5_3x_symlink.sh)| Symlink-replicate a staged ERA5 year (Nx) to break the small-corpus per-step batch cap for HBM saturation |
|[`orbit2_estimate_batch_from_memory.py`](orbit2_estimate_batch_from_memory.py)| Heuristic max-batch from two `memory_reserved` calibrations or SLURM logs (see [BASELINE_LOCKIN.md](../recipes/perf-analysis/BASELINE_LOCKIN.md)) |
72
+
73
+
### Post-processing & analysis
74
+
75
+
Host-side; run after a job against its logs / traces.
76
+
77
+
| Script | Purpose |
78
+
|--------|---------|
26
79
|[`parse_training_log.py`](parse_training_log.py)| Extract batch/epoch metrics from SLURM log (handles both `intermediate_downscaling.py` and Bayes-CAST `train_edm.py``epoch:/batch_idx/tic4-tic1` formats) |
27
80
|[`run_fom_extractor.py`](run_fom_extractor.py)| Write `foms.json` (throughput + steady batch time + optional Omnistat PromQL via `ORBIT2_TSDB_URL`) |
28
81
|[`report_orbit2_gpu_baseline.py`](report_orbit2_gpu_baseline.py)|`baseline_report.md` / JSON for perf runs |
|[`orbit2_rank_hook_runner.py`](orbit2_rank_hook_runner.py)| Runs an optional per-rank pre-train hook (`ORBIT2_RANK_PRE_TRAIN_HOOK`) before the shell launcher |
32
-
|[`stage_era5_3x_symlink.sh`](stage_era5_3x_symlink.sh)| Symlink-replicate a staged ERA5 year (Nx) to break the small-corpus per-step batch cap for HBM saturation |
33
-
|[`run_gemm_analysis.sh`](run_gemm_analysis.sh)| Unattended GEMM-time bottleneck analysis (TraceLens + Omnistat analyst/verifier) at 1 and 2 nodes |
82
+
|[`orbit2_estimate_batch_from_memory.py`](orbit2_estimate_batch_from_memory.py)| Heuristic max-batch from two `memory_reserved` calibrations or SLURM logs (see [BASELINE_LOCKIN.md](../recipes/perf-analysis/BASELINE_LOCKIN.md)) |
83
+
|[`collate_scaling_study.py`](collate_scaling_study.py)| Aggregate a multi-node scaling sweep into `scaling_study` outputs |
34
84
|[`compare_trace_kernels.py`](compare_trace_kernels.py)| Tool-independent kernel aggregation from a `*.pt.trace.json` (rank by raw device time, not category rollup) |
35
-
|[`run_2node_scaleout_loop.sh`](run_2node_scaleout_loop.sh)| Unattended 2-node scale-out lever loop; writes a 1-node-vs-2-node `REPORT.md`|
36
85
|[`upstream_pytorch_sdpa_benchmark.py`](upstream_pytorch_sdpa_benchmark.py)| Vendored [PyTorch `benchmarks/transformer/sdpa.py`](https://github.com/pytorch/pytorch/blob/main/benchmarks/transformer/sdpa.py) with **`--orbit-micro`** + backend sweep (`ck` → `SDPBackend.EFFICIENT_ATTENTION`, **not** xFormers `MemoryEfficientAttentionCkOp`) for comparing SDPA backends off the critical path |
37
86
38
87
## Quick start — ERA5 1.0_deg sanity (new dataset)
Copy file name to clipboardExpand all lines: material_science/models/HydraGNN/examples/README.md
+41-2Lines changed: 41 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,16 +6,55 @@ with AMD/ROCm container launch.
6
6
7
7
## Files
8
8
9
+
The folder is flat (scripts resolve siblings and the container bind-mount
10
+
relative to their own directory), but the files fall into the groups below.
11
+
12
+
### Setup & diagnostics
13
+
9
14
| Script | Purpose |
10
15
|--------|---------|
11
16
|[`preflight_hydragnn.py`](preflight_hydragnn.py)| Check your environment before submitting jobs |
12
-
|[`run_inference.sh`](run_inference.sh)| Load a checkpoint and run predictions |
17
+
|[`microbench_node_health.sh`](microbench_node_health.sh)|~30 s per-node MI355X (gfx950) health survey (host/GPU inventory, dual-NUMA STREAM, HIP launch latency); safe to run in a SLURM Prolog |
18
+
19
+
### Run entrypoints
20
+
21
+
| Script | Purpose |
22
+
|--------|---------|
13
23
|[`run_train.sh`](run_train.sh)| Train on bundled or staged ADIOS datasets |
24
+
|[`run_inference.sh`](run_inference.sh)| Load a checkpoint and run predictions |
|[`build_overlay_amd.sh`](build_overlay_amd.sh)| One-time Apptainer ext3 overlay build (pre-loads pip deps; reuse across jobs to skip the per-job pip install) |
14
32
|[`sbatch_train_amd.sh`](sbatch_train_amd.sh)| SLURM/Apptainer multi-node training (HPC) |
33
+
|[`sbatch_train_perf_amd.sh`](sbatch_train_perf_amd.sh)| 2-node training + PyTorch profiler + Omnistat telemetry (thin variant of `sbatch_train_amd.sh` for the perf-analysis recipe) |
34
+
|[`sbatch_infer_amd.sh`](sbatch_infer_amd.sh)| SLURM/Apptainer inference on AMD Instinct (needs a prebuilt overlay + downloaded weights) |
0 commit comments