TitanFuzz

Evolutionary fuzzing of deep-learning libraries (PyTorch and TensorFlow) using infill language models as structure-aware AST mutation operators.

Read the paper

The loop

  1. Proposes

    A generative model (Codex) seeds multi-API tensor programs, and an infill model (InCoder) masks and regenerates spans around selected AST operators.

  2. Judged by

    PyTorch and TensorFlow CPU/GPU execution engines, differential backends, and crash/NaN sanitizers evaluate every mutated program and log operator coverage.

  3. Steers

    An evolutionary fitness function combining API depth, dataflow graph edges, and new branch coverage selects seeds for the next mutation round.

Headline result

Achieved 50.84% (PyTorch) and 30.38% (TensorFlow) higher code coverage than state-of-the-art DL fuzzers and detected 65 bugs (41 confirmed previously unknown).

What this does not prove

Differential testing across CPU and GPU backends can trigger false-positive floating-point rounding discrepancies if tolerances are too tight.

How it generalizes the harness

An evolutionary coverage-guided fuzzing loop manages the seed corpus and invokes the infill LLM as a span-mutation operator.

Classification

Classification of TitanFuzz
What it proposesFuzz target
Generative modelCodex seed generator + InCoder span mutator
Algorithmic authorityDataflow/branch coverage analyzer and differential execution oracle
FeedbackCode coverage
What gets updatedPopulation of candidates
When it runsIn continuous operation
ValidityEmpirical (measured)
EvidenceCode released
LineageOriginal system