Learning Performance-Improving Code Edits

要約

ムーアの法則の衰退により、プログラムのパフォーマンスの最適化がソフトウェア研究の主要な焦点になりました。
ただし、コードのセマンティクスを理解することが難しいため、API やアルゴリズムの変更などの高レベルの最適化は依然として困難です。
同時に、事前トレーニングされた大規模言語モデル (LLM) は、幅広いプログラミング タスクを解決する強力な機能を実証しました。
そのために、LLM を高レベルのプログラム最適化に適応させるためのフレームワークを導入します。
まず、77,000 を超える競合 C++ プログラミングの提出ペアに対して、人間のプログラマーが広範な単体テストを伴って行った、パフォーマンスを向上させる編集のデータセットを厳選します。
大きな課題は、汎用ハードウェアでのパフォーマンスの測定に大きなばらつきがあり、それが偽の「改善」につながる可能性があることです。
プログラムの最適化による影響を分離し、確実に評価するために、学術界や産業界で使用されている事実上のシミュレーターである gem5 フル システム シミュレーターに基づいた環境を設計します。
次に、コード最適化のための幅広い適応戦略を提案します。
プロンプトの場合、検索ベースの少数ショット プロンプトと思考の連鎖が含まれ、微調整の場合、パフォーマンス条件付き生成とセルフプレイに基づく合成データの拡張が含まれます。
これらの手法を組み合わせると、8 世代で平均 6.86 の高速化が達成され、これは個々のプログラマによる平均最適化 (3.66) よりも高くなります。
モデルの最速世代を使用して、人間による利用可能な最速の送信 (9.56) を使用した場合と比較して、データセットの可能な最速の高速化の新しい上限を 9.64 に設定しました。

要約(オリジナル)

With the decline of Moore’s law, optimizing program performance has become a major focus of software research. However, high-level optimizations such as API and algorithm changes remain elusive due to the difficulty of understanding the semantics of code. Simultaneously, pretrained large language models (LLMs) have demonstrated strong capabilities at solving a wide range of programming tasks. To that end, we introduce a framework for adapting LLMs to high-level program optimization. First, we curate a dataset of performance-improving edits made by human programmers of over 77,000 competitive C++ programming submission pairs, accompanied by extensive unit tests. A major challenge is the significant variability of measuring performance on commodity hardware, which can lead to spurious ‘improvements.’ To isolate and reliably evaluate the impact of program optimizations, we design an environment based on the gem5 full system simulator, the de facto simulator used in academia and industry. Next, we propose a broad range of adaptation strategies for code optimization; for prompting, these include retrieval-based few-shot prompting and chain-of-thought, and for finetuning, these include performance-conditioned generation and synthetic data augmentation based on self-play. A combination of these techniques achieves a mean speedup of 6.86 with eight generations, higher than average optimizations from individual programmers (3.66). Using our model’s fastest generations, we set a new upper limit on the fastest speedup possible for our dataset at 9.64 compared to using the fastest human submissions available (9.56).

arxiv情報

著者 Alexander Shypula,Aman Madaan,Yimeng Zeng,Uri Alon,Jacob Gardner,Milad Hashemi,Graham Neubig,Parthasarathy Ranganathan,Osbert Bastani,Amir Yazdanbakhsh
発行日 2024-04-26 16:41:55+00:00
arxivサイト arxiv_id(pdf)

提供元, 利用サービス

arxiv.jp, Google

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