User Interface

View as Markdown

AIPerf provides 3 UI types to display benchmark progress.

Overview

Choose the UI type that matches your workflow:

  • Dashboard: Full Textual TUI with real-time metrics and GPU telemetry (default in interactive terminals)
  • Simple: TQDM progress bars for minimal overhead
  • None: Application logs only, no progress UI (default in non-interactive environments)

All types display the final metrics table upon completion. UI type only affects progress display during benchmark execution.

Note: Both --ui-type and --ui are supported interchangeably.

Automatic TTY Detection

AIPerf automatically detects whether it is running in an interactive terminal (TTY):

  • Interactive terminal (TTY): Defaults to dashboard
  • Non-interactive (piped, redirected, CI/CD): Defaults to none with basic non-rich log formatting

This means aiperf profile ... | tee output.log or aiperf profile ... > output.log will automatically use --ui-type none and plain-text logs without Rich formatting.

To override the automatic detection, explicitly pass --ui-type:

$# Force dashboard UI even when piping output
$aiperf profile ... --ui-type dashboard | tee output.log
$
$# Force no UI even in an interactive terminal
$aiperf profile ... --ui-type none

Dashboard (Default in TTY)

The full-featured TUI provides:

  • Real-time request and record metrics
  • Live GPU telemetry (when enabled)
  • Worker status monitoring
  • Interactive display with multiple tabs
$aiperf profile \
> --model Qwen/Qwen3-0.6B \
> --url localhost:8000 \
> --endpoint-type chat \
> --concurrency 10 \
> --request-count 100 \
> --streaming

When to use:

  • Monitoring benchmarks interactively
  • Viewing real-time metrics as they’re computed
  • Checking worker status and errors
  • Viewing GPU telemetry

Note: Dashboard automatically switches to simple when using --verbose or --extra-verbose in a TTY for better log visibility.

Simple

Lightweight progress bars using TQDM:

$aiperf profile \
> --model Qwen/Qwen3-0.6B \
> --url localhost:8000 \
> --endpoint-type chat \
> --concurrency 10 \
> --request-count 100 \
> --streaming \
> --ui-type simple

Sample Output (Successful Run):

INFO Starting AIPerf System
INFO Registered Dataset Manager (id: 'dataset_manager_abc123')
INFO AIPerf System is PROFILING
Profiling: 100/100 |████████████████████████| 100% [01:45<00:00]
Processing Records: 100/100 |███████████████| 100% [00:01<00:00]
INFO Benchmark completed successfully
INFO Results saved to: artifacts/Qwen_Qwen3-0.6B-chat-concurrency10/

When to use:

  • Need lower resource overhead
  • Terminal doesn’t support rich TUI rendering
  • Running with verbose logging

None (Default in Non-TTY)

Shows application logs only, no progress UI. This is the automatic default when output is piped or redirected:

$aiperf profile \
> --model Qwen/Qwen3-0.6B \
> --url localhost:8000 \
> --endpoint-type chat \
> --concurrency 10 \
> --request-count 100 \
> --streaming \
> --ui-type none

Sample Output (Successful Run):

23:07:28.809795 INFO Starting AIPerf System
23:07:31.580751 INFO Registered Dataset Manager (id: 'dataset_manager_abc123')
23:07:31.586297 INFO Registered Worker Manager (id: 'worker_manager_def456')
23:07:31.595391 INFO Registered Timing Manager (id: 'timing_manager_ghi789')
23:07:31.987169 INFO AIPerf System is CONFIGURING
23:07:32.594891 INFO AIPerf System is CONFIGURED
23:07:32.597896 INFO AIPerf System is PROFILING
23:09:18.123456 INFO Benchmark completed successfully
23:09:18.234567 INFO Results saved to: artifacts/Qwen_Qwen3-0.6B-chat-concurrency10/

When to use:

  • Automating benchmarks in scripts or CI/CD (auto-selected)
  • Piping output to files (auto-selected)
  • Minimizing UI overhead