Instructions to use FastVideo/FastH3-Omni-MLX with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use FastVideo/FastH3-Omni-MLX with MLX:
# Download the model from the Hub pip install huggingface_hub[hf_xet] hf download FastVideo/FastH3-Omni-MLX --local-dir FastH3-Omni-MLX
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Atomic Chat
Handoff: single seed, no warmup, 480p only
Browse files- 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.
|
| 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,
|
| 75 |
--out ~/fasth3-mlx/results-480p-36l
|
| 76 |
```
|
| 77 |
-
-
|
| 78 |
-
-
|
| 79 |
-
-
|
|
|
|
| 80 |
|
| 81 |
-
## 6. Optional
|
| 82 |
-
This
|
| 83 |
```bash
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
--
|
| 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 |
-
|
| 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-
|
| 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
|
| 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.
|
|
|
|
| 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.
|