Verify Implementation Equivalence of Large Models
This addresses a practical problem for developers and researchers working with large models, offering a tool to ensure correctness and debug implementations, though it is incremental in automating existing verification tasks.
The paper tackles the problem of verifying equivalence between different implementations of large models across frameworks, which is difficult due to differences in operator decomposition and tensor layout, and presents Emerge, a framework that automatically synthesizes and validates rewrite rules to establish equivalence, detecting 10 of 13 known bugs and uncovering 8 new issues in evaluation.
Verifying whether two implementations of the same large model are equivalent across frameworks is difficult in practice. Even when they realize the same computation, their graphs may differ substantially in operator decomposition, tensor layout, and the use of fused or opaque kernels, making manual rewrite rules hard to build and maintain. We present Emerge, a framework for checking Implementation Equivalence over computation graphs of large-model implementations. Instead of writing rules manually, Emerge represents the two implementations in an e-graph, infers candidate relations from execution values, and synthesizes rewrite rules on demand when existing rules are insufficient. Each synthesized rule is validated using the strongest applicable method, including SMT- based checking for symbolically tractable cases and constraint-aware randomized testing for opaque kernels, and then propagated through e-graph rebuilding to establish larger equivalences. Our current implementation targets inference computation graphs captured from HuggingFace Transformers and vLLM. Our evaluation shows that Emerge establishes equivalence for correct implementation pairs at practical cost, while also providing useful by-products for debugging: it detects 10 of 13 known implementation bugs and uncovers 8 previously unknown implementation issues that were later confirmed by developers. In addition, Emerge synthesizes block-level rules that compare favorably with manually authored ones.