aryan5v commited on
Commit
e61e73c
·
verified ·
1 Parent(s): 74bb58c

Handoff: single seed, no warmup, 480p only

Browse files
Files changed (1) hide show
  1. HANDOFF.md +20 -16
HANDOFF.md CHANGED
@@ -9,7 +9,7 @@ You are an agent on an Apple M5 Mac Studio. Your job is to **install, build the
9
  - If a fix would need more than a few lines, or touches model math, stop, record the error and logs, and report instead.
10
 
11
  ## What is being measured
12
- FastH3 Omni is a reference-conditioned video+audio model that runs through FastVideo's native MLX runtime. Measure end-to-end time per clip for **5 s clips (124 frames) at 480p (832x480) with the 36-layer decoder**. Run five reference compositions (`image`, `image-voice`, `images3`, `clip`, `video`) with the same prompts, references and seeds as our DGX Spark benchmark. Each composition gets one excluded warmup (seed 42), then measured seeds 0, 1 and 2.
13
 
14
  ## 0. Prerequisites (about 5 min)
15
  - Plug in power. Close other GPU-heavy apps. Keep the Mac awake for the whole run: prefix long commands with `caffeinate -dims`.
@@ -66,28 +66,32 @@ caffeinate -dims $PY run_matrix.py --smoke --model-dir ~/fasth3-mlx/model --data
66
  It must produce an MP4 with an audio stream. If it does not, stop and report.
67
 
68
  ## 5. The benchmark (the main deliverable)
 
 
 
 
 
69
  ```bash
70
  caffeinate -dims $PY run_matrix.py \
71
  --model-dir ~/fasth3-mlx/model --data-root ~/omniref-handoff \
72
  --fastvideo-root ~/fasth3-mlx/FastVideo --python $PY \
73
  --seconds 5 --canvases 480p --decoders 36l \
74
- --compositions image,image-voice,images3,clip,video \
75
  --out ~/fasth3-mlx/results-480p-36l
76
  ```
77
- - This is 5 cells, each with 1 warmup and 3 measured seeds, run strictly one at a time. Do not run anything else on the GPU meanwhile.
78
- - It is resumable: if it is interrupted, re-run the same command and finished cells are skipped. A failed cell (for example out of memory) is recorded and the matrix continues; do not retry it unless asked.
79
- - If time is short, add `--seeds 0` and say so in the report.
 
80
 
81
- ## 6. Optional, only after step 5 finishes: fastest-configuration sweep
82
- This builds INT8 (and BF16 if the Mac has 64 GB or more) and ranks GEMM paths on one cell:
83
  ```bash
84
- cd ~/fasth3-mlx/kit/bench
85
- caffeinate -dims bash prepare_model_dir.sh --fastvideo ~/fasth3-mlx/FastVideo --python $PY \
86
- --model-dir ~/fasth3-mlx/model --sources ~/fasth3-mlx/sources --formats "int8 bf16"
87
- caffeinate -dims $PY run_matrix.py --m5-sweep --model-dir ~/fasth3-mlx/model --data-root ~/omniref-handoff \
88
- --fastvideo-root ~/fasth3-mlx/FastVideo --python $PY --out ~/fasth3-mlx/results-m5-sweep
89
  ```
90
- The INT8/BF16 conversion re-downloads the BF16 release if the sources were deleted. That is expected.
91
 
92
  ## 7. Post the results (needs the owner's GitHub and Hugging Face logins on this Mac)
93
  The human operator should run `gh auth login` and `hf auth login` beforehand. These are interactive, and you must never handle passwords or tokens yourself. If either is missing, skip that part, and at the end tell the operator to send `SEND_BACK.tar.gz` and your report manually (AirDrop or Drive).
@@ -97,7 +101,7 @@ The human operator should run `gh auth login` and `hf auth login` beforehand. Th
97
  HFUSER=$(hf auth whoami | head -1 | awk -F= '{print $NF}') # check the printed username
98
  hf repo create $HFUSER/fasth3-omni-mlx-m5-results --repo-type dataset
99
  hf upload $HFUSER/fasth3-omni-mlx-m5-results ~/fasth3-mlx/results-480p-36l results-480p-36l --repo-type dataset
100
- # also upload results-smoke/ and results-m5-sweep/ the same way if they exist
101
  ```
102
  Make the dataset public, or add the requester as a collaborator if the operator prefers it private.
103
 
@@ -118,7 +122,7 @@ gh pr comment 2000 --repo hao-ai-lab/FastVideo --body-file ~/fasth3-mlx/m5_repor
118
  Write `m5_report.md` with exactly these parts:
119
  1. **Hardware:** chip, GPU cores, unified memory (`sysctl -n machdep.cpu.brand_string hw.memsize`), macOS (`sw_vers`), mlx version and `mx.device_info()`.
120
  2. **Code:** commit `ef477d68d`, plus any fixes (link the fix PR or patch).
121
- 3. **Results table:** rows are the compositions; columns are mean ± SD end-to-end seconds over seeds 0/1/2, then mean denoise s, decode s, conditioning s, and peak memory GiB. Use the generated `results-480p-36l/README.md` and `per-request-records.jsonl`.
122
  4. **Link** to the HF dataset with the videos.
123
  5. **Issues:** anything that failed, was skipped (for example `--seeds 0`) or was changed. Also note the `prepare_model_dir.sh` verification summary, including any hash warnings.
124
- 6. The `--m5-sweep` ranking (`results-m5-sweep/m5-sweep.md`), if you ran it.
 
9
  - If a fix would need more than a few lines, or touches model math, stop, record the error and logs, and report instead.
10
 
11
  ## What is being measured
12
+ FastH3 Omni is a reference-conditioned video+audio model that runs through FastVideo's native MLX runtime. Measure end-to-end time per clip for **5 s clips (124 frames) at 480p (832x480) with the 36-layer decoder**. Run five reference compositions (`image`, `image-voice`, `images3`, `clip`, `video`) with the same prompts, references and seeds as our DGX Spark benchmark. **Rough timings only:** one run per composition (seed 0) and no warmup. This is about 20–50 min per clip on an M5 Max, about 2.5–3 h in total.
13
 
14
  ## 0. Prerequisites (about 5 min)
15
  - Plug in power. Close other GPU-heavy apps. Keep the Mac awake for the whole run: prefix long commands with `caffeinate -dims`.
 
66
  It must produce an MP4 with an audio stream. If it does not, stop and report.
67
 
68
  ## 5. The benchmark (the main deliverable)
69
+ Before starting, update to the fixed commit. The weights and the model directory do not change.
70
+ ```bash
71
+ cd ~/fasth3-mlx/FastVideo && git fetch && git checkout ef477d68d
72
+ ```
73
+ Then run all five rows, seed 0 only, with no warmup. `images3` goes last because it is the slowest:
74
  ```bash
75
  caffeinate -dims $PY run_matrix.py \
76
  --model-dir ~/fasth3-mlx/model --data-root ~/omniref-handoff \
77
  --fastvideo-root ~/fasth3-mlx/FastVideo --python $PY \
78
  --seconds 5 --canvases 480p --decoders 36l \
79
+ --compositions image,image-voice,clip,video,images3 --seeds 0 --no-warmup \
80
  --out ~/fasth3-mlx/results-480p-36l
81
  ```
82
+ - If an earlier run already wrote results to the same `--out`, the finished cells and seeds are skipped automatically.
83
+ - Runs go strictly one at a time. Do not run anything else on the GPU meanwhile.
84
+ - A failed cell (for example out of memory) is recorded and the run continues. Do not retry it.
85
+ - Health check after the first clip: every record in `per-request-records.jsonl` should show `"impl": "simd"` under `vsa`.
86
 
87
+ ## 6. Optional (about 10 min): smaller-reference-canvas run
88
+ This is a single extra `image` clip with the opt-in, lossy reference cap, to measure the biggest speed lever:
89
  ```bash
90
+ caffeinate -dims $PY run_matrix.py --model-dir ~/fasth3-mlx/model --data-root ~/omniref-handoff \
91
+ --fastvideo-root ~/fasth3-mlx/FastVideo --python $PY --seconds 5 --canvases 480p --decoders 36l \
92
+ --compositions image --seeds 0 --no-warmup --reference-max-pixels match --out ~/fasth3-mlx/results-480p-36l-match
 
 
93
  ```
94
+ Skip 768p and the `--m5-sweep`.
95
 
96
  ## 7. Post the results (needs the owner's GitHub and Hugging Face logins on this Mac)
97
  The human operator should run `gh auth login` and `hf auth login` beforehand. These are interactive, and you must never handle passwords or tokens yourself. If either is missing, skip that part, and at the end tell the operator to send `SEND_BACK.tar.gz` and your report manually (AirDrop or Drive).
 
101
  HFUSER=$(hf auth whoami | head -1 | awk -F= '{print $NF}') # check the printed username
102
  hf repo create $HFUSER/fasth3-omni-mlx-m5-results --repo-type dataset
103
  hf upload $HFUSER/fasth3-omni-mlx-m5-results ~/fasth3-mlx/results-480p-36l results-480p-36l --repo-type dataset
104
+ # also upload results-smoke/ and results-480p-36l-match/ the same way if they exist
105
  ```
106
  Make the dataset public, or add the requester as a collaborator if the operator prefers it private.
107
 
 
122
  Write `m5_report.md` with exactly these parts:
123
  1. **Hardware:** chip, GPU cores, unified memory (`sysctl -n machdep.cpu.brand_string hw.memsize`), macOS (`sw_vers`), mlx version and `mx.device_info()`.
124
  2. **Code:** commit `ef477d68d`, plus any fixes (link the fix PR or patch).
125
+ 3. **Results table:** rows are the compositions; columns are end-to-end seconds (seed 0, single run), denoise s, decode s, conditioning s and peak memory GiB. Add a separate line for the `match` run if you did it. Use the generated `results-480p-36l/README.md` and `per-request-records.jsonl`.
126
  4. **Link** to the HF dataset with the videos.
127
  5. **Issues:** anything that failed, was skipped (for example `--seeds 0`) or was changed. Also note the `prepare_model_dir.sh` verification summary, including any hash warnings.
128
+ 6. Note that these are single-seed, no-warmup rough timings.