feat(training): headless CLI for MiniMax H3 still and clip LoRAs - #40
feat(training): headless CLI for MiniMax H3 still and clip LoRAs#40johndpope wants to merge 2 commits into
Conversation
Train from a captioned folder without starting the Studio UI or writing a manifest by hand. The same subprocess entry the Trainer tab already uses now accepts --dataset / --clip-seconds / --arch and stages metadata.jsonl into sidecar captions. Document the video path and cover it with unit tests. Signed-off-by: John D. Pope <jp@bellgeorge.com>
Log train/loss, step, peak VRAM and cache status when WANDB_PROJECT (or --wandb-project) is set. Print the run URL on stderr for Vast babysitters. Signed-off-by: John D. Pope <jp@bellgeorge.com>
|
Hi @johndpope Three things before merge: 1. Rebase on main. The branch is 19 commits behind and currently conflicts. v1.2.65 and v1.2.66 landed CUDA wheel selection, a uv fix, and two trainer fixes. One conflict, in clip_window=str(hp.get("clipWindow") or "start"),
on_status=_cache_status,I test-merged locally and the full suite passes at 838 once that is resolved, so it should be quick. 2. Please split the Weights & Biases work into its own PR. It is about 60 lines and it is a different thing from a headless CLI: a new outbound network dependency inside the training loop deserves its own review. Two specifics for when it comes back:
Also worth reconsidering there: 3. One lint failure: With the W&B part lifted out, the rest looks good to me. Couple of users requested CLI support so this would be a great improvement. |
Summary
python -m inline_core.trainingstill accepts the existingmanifest.jsonthe Trainer tab already spawns; it now also accepts--dataset/--clip-seconds/--archand stages the dataset (including Hugging Facemetadata.jsonlcaptions) into the same manifest shape.TRAINING.mdand link it from the README.This is the missing ops surface for rented GPUs / Docker: clip LoRAs that learn motion via
--clip-seconds(1s ≈ 22 frames @ 24fps), same VRAM story as the site guide.Usage
cd core python -m inline_core.training \ --dataset /path/to/clips \ --arch minimax-h3 \ --clip-seconds 1 \ --models-dir ./models \ --output ./models/loras/my_h3_clip.safetensors \ --steps 500 --resolution 512--dry-runstages and prints the manifest without loading the GPU.--resume --work-dir …continues from checkpoints. Progress remains JSON lines on stdout.Test plan
uv run pytest tests/test_training_cli.py(11 passed) — staging, metadata.jsonl, hyperparams, dry-run, manifest back-compatuv run ruff checkon the new/edited training modulesminimax_h3_fl2va_bf16.safetensorspresent