Pruner: A Speculative Exploration Mechanism to Accelerate Tensor Program Tuning
<|reference_start|>Pruner: A Speculative Exploration Mechanism to Accelerate Tensor Program Tuning: Tensor program tuning is essential for the efficient deployment of deep neural networks. Search-based approaches have demonstrated scalability and effectiveness in automatically finding high-performance programs for specific hardware. However, the search process is often inefficient, taking hours or even days to discover optimal programs due to the exploration mechanisms guided by an accurate but slow learned cost model. Meanwhile, the learned cost model trained on one platform cannot seamlessly adapt online to another, which we call cross-platform online unawareness.   In this work, we propose Pruner and MoA-Pruner. Pruner is a speculative exploration mechanism that accelerates the search process using a "Draft-then-Verify" paradigm. Instead of applying the complex learned cost model to all explored candidates, Pruner drafts small-scale speculative candidates by introducing a naive symbol analyzer (draft model), then identifies the best candidates by the learned cost model. MoA-Pruner introduces Momentum online Adaptation to address the cross-platform online unawareness.   We incorporate these techniques into the Ansor and conduct extensive experiments on three GPU-based platforms. Results show that in online cost model tuning scenarios, Pruner and MoA-Pruner can achieve an average speedup of $2.6 \times$ and $4.82 \times$ compared to Ansor. In offline tuning scenarios, Pruner can achieve an average speedup of $4.75 \times$ and $4.05\times$ compared to TenSet and TLP, respectively. The code is available at https://github.com/qiaolian9/Pruner.<|reference_end|>
@article{qiao2024pruner:,
    title={Pruner: A Speculative Exploration Mechanism to Accelerate Tensor Program
  Tuning},
    author={Liang Qiao, Jun Shi, Xiaoyu Hao, Xi Fang, Minfan Zhao, Ziqi Zhu,
  Junshi Chen, Hong An, Bing Li, Honghui Yuan, Xinyang Wang, Xulong Tang},
    journal={arXiv preprint arXiv:2402.02361},
    year={2024},
    archivePrefix={arXiv},
    eprint={2402.02361},
    primaryClass={cs.LG}
}