Repository navigation
perf(batch): prepared flights, VAD segmentation reuse and CUDA-graph TDT on the GPU worker (+61% L4 bench) #24384
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 3 commits
8ce4dc0
1758cb2
a664f61
7f10133
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -21,7 +21,7 @@ | |
| torch = None | ||
| nemo_asr = None | ||
|
|
||
| from config.batch_pipeline_providers import ProviderConfig | ||
| from config.batch_pipeline_providers import ProviderConfig, provider_config | ||
| from diarizer.batch_pipeline import pack_windows, speech_windows | ||
| from diarizer.batch_pipeline_models import ParakeetWords, decode_pcm16_wav, pin_parakeet_decoding | ||
| from utils.batch_pipeline.contracts import Priority, WorkItem | ||
|
|
@@ -61,8 +61,9 @@ def main(): | |
| raw_spans = json.loads(Path(args.vad_json).read_text()) if args.vad_json else [(0, duration)] | ||
| spans = [(s['start'], s['end']) if isinstance(s, dict) else tuple(s) for s in raw_spans] | ||
| model = nemo_asr.models.ASRModel.from_pretrained(args.model).cuda().eval() | ||
| pin_parakeet_decoding(model) | ||
| provider = ParakeetWords(model, enforce_eager=True) | ||
| cuda_graphs = provider_config().asr_cuda_graphs | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. P3: The benchmark receipt contradicts itself when the graph kill switch is false: the actual decoder runs eager mode, but each row’s serialized Prompt for AI agents |
||
| pin_parakeet_decoding(model, cuda_graphs=cuda_graphs) | ||
| provider = ParakeetWords(model, cuda_graphs=cuda_graphs) | ||
| rows = [] | ||
| report = { | ||
| 'audio_sha256': hashlib.sha256(body).hexdigest(), | ||
|
|
@@ -72,7 +73,7 @@ def main(): | |
| 'device': torch.cuda.get_device_name(), | ||
| 'torch': torch.__version__, | ||
| 'model': args.model, | ||
| 'cuda_graph_policy': 'persistently_disabled_and_asserted', | ||
| 'cuda_graph_policy': 'enabled_and_asserted' if cuda_graphs else 'persistently_disabled_and_asserted', | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. P3: The benchmark documentation still describes this script as pinning eager decoding, but the new default runs CUDA-graph decoding. Update the qualification instructions and historical note to state the selected mode, or explicitly set Prompt for AI agents |
||
| 'rows': rows, | ||
| 'scope': 'ASR only; whole conversation input, internal windows; no persistence', | ||
| } | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P2: Graph-enabled rows include one-time CUDA graph capture in their timings: the only warm-up is a single 30-second batch before the size/context loops, so batch-8/32 and context-2 rows use a new graph during measurement. Warm each row with its actual first batch before starting the timer, or report capture and steady-state timings separately.
Prompt for AI agents