Learning Performance-Improving Code Edits

要約

ムーアの法則の衰退により、テクノロジー業界の焦点は、継続的なパフォーマンス向上のための代替方法に移っています。
コンパイラーの最適化は、プログラムの効率を向上させるための標準的なツールですが、プログラマーは、より優れたパフォーマンス特性を持つコードを作成およびリファクタリングするという大きな責任を負い続けています。
このホワイト ペーパーでは、大規模言語モデル (LLM) が機能的に正しく、パフォーマンスを向上させるコード編集を提案する能力を調査します。
言語モデルは、静的分析だけでは非現実的な方法でそのような編集を提案できると仮定しています。
私たちは、パフォーマンスを向上させる編集、PIE の大規模なデータセットをキュレートすることによって、これらの質問を調査します。
PIE にはプログラムの軌跡が含まれており、プログラマーは最初の遅いバージョンから始めて、プログラムのパフォーマンスを改善するために繰り返し変更を加えます。
PIE を使用して、大規模な言語モデルの容量を評価および改善します。
具体的には、PIE の例を使用して、10 億規模の Transformer-decoder モデルである CODEGEN の複数のバリアントを微調整します。
さらに、PIE の例を使用して、数ショット プロンプトを使用して OpenAI の CODEX をプロンプトします。
PIE を活用することで、C++ プログラムが O3 最適化レベルを使用してコンパイルされた後でも、C++ と Python の 25% 以上のプログラムで 2.5 倍以上のスピードアップを実現し、CODEX と CODEGEN の両方がパフォーマンスを向上させる編集を生成できることがわかりました。
.
重要なことに、PIE により、CODEGEN がオープンソースであり、CODEX よりも 10 分の 1 小さいモデルであり、この困難なタスクで CODEX のパフォーマンスに匹敵することができることを示しています。
全体として、この作業は、プログラマーが効率的なコードを作成するのに役立つシステムとメソッドを作成するための新しい扉を開きます。

要約(オリジナル)

The waning of Moore’s Law has shifted the focus of the tech industry towards alternative methods for continued performance gains. While optimizing compilers are a standard tool to help increase program efficiency, programmers continue to shoulder much responsibility in crafting and refactoring code with better performance characteristics. In this paper, we investigate the ability of large language models (LLMs) to suggest functionally correct, performance improving code edits. We hypothesize that language models can suggest such edits in ways that would be impractical for static analysis alone. We investigate these questions by curating a large-scale dataset of Performance-Improving Edits, PIE. PIE contains trajectories of programs, where a programmer begins with an initial, slower version and iteratively makes changes to improve the program’s performance. We use PIE to evaluate and improve the capacity of large language models. Specifically, use examples from PIE to fine-tune multiple variants of CODEGEN, a billion-scale Transformer-decoder model. Additionally, we use examples from PIE to prompt OpenAI’s CODEX using a few-shot prompting. By leveraging PIE, we find that both CODEX and CODEGEN can generate performance-improving edits, with speedups of more than 2.5x for over 25% of the programs, for C++ and Python, even after the C++ programs were compiled using the O3 optimization level. Crucially, we show that PIE allows CODEGEN, an open-sourced and 10x smaller model than CODEX, to match the performance of CODEX on this challenging task. Overall, this work opens new doors for creating systems and methods that can help programmers write efficient code.

arxiv情報

著者 Aman Madaan,Alexander Shypula,Uri Alon,Milad Hashemi,Parthasarathy Ranganathan,Yiming Yang,Graham Neubig,Amir Yazdanbakhsh
発行日 2023-02-15 18:59:21+00:00
arxivサイト arxiv_id(pdf)

提供元, 利用サービス

arxiv.jp, Google

カテゴリー: cs.AI, cs.LG, cs.PF, cs.SE パーマリンク