Add bf16 precision option for ViTMatte (--precision, default fp32)
bf16 halves the matting model's activation memory -- its full-resolution attention is the pipeline's memory peak -- with visually identical alpha (measured: 0 px alpha deviation > 0.25 on samples; cross-check veto behaviour unchanged, region IoU 0.984). Guarded by a hardware check so it never lands on a slow emulation path: CUDA requires torch.cuda.is_bf16_supported(); CPU requires the same oneDNN native-bf16 gate PyTorch uses for matmul routing (AVX512-BF16/ AMX). Without support it warns and falls back to fp32 -- on a Zen2 EPYC the fallback kernels measured 17-370x slower than fp32, so silent bf16 there would be a performance landmine. Segmentation stays fp32: torchvision deform_conv2d (used by BiRefNet) has no bf16 CPU kernel, and the segmenter is not the memory peak. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -21,6 +21,7 @@ def main(
|
||||
config: Path | None = typer.Option(None, "--config", exists=True, file_okay=True, dir_okay=False),
|
||||
model_name: str | None = typer.Option(None, "--model-name"),
|
||||
device: str | None = typer.Option(None, "--device"),
|
||||
precision: str | None = typer.Option(None, "--precision", help="ViTMatte precision: fp32 (default) | bf16 (halves matting activation memory; needs bf16-capable hardware, else falls back to fp32)"),
|
||||
screen_color: str | None = typer.Option(None, "--screen-color", help="Background colour prior as #RRGGBB (default: auto-detect the flat background colour)"),
|
||||
matting_method: str | None = typer.Option(None, "--matting-method"),
|
||||
fallback_to_chroma_alpha: bool | None = typer.Option(None, "--fallback-to-chroma-alpha/--no-fallback-to-chroma-alpha"),
|
||||
@@ -38,6 +39,7 @@ def main(
|
||||
load_settings(config),
|
||||
model_name=model_name,
|
||||
device=device,
|
||||
precision=precision,
|
||||
screen_color=screen_color,
|
||||
matting_method=matting_method,
|
||||
fallback_to_chroma_alpha=fallback_to_chroma_alpha,
|
||||
|
||||
Reference in New Issue
Block a user