[論文レビュー] Learning C to x86 Translation: An Experiment in Neural Compilation
この論文は、Transformerモデルを用いてCコードをx86アセンブリに翻訳するように訓練することで、ニューラルコンパイラを調査している。コンパイルをシーケンス・ツー・シーケンスのタスクとして扱う。80%の構文的正しさと高いBLEUスコア(約90)を達成しているが、最良のモデルでも関数の33%しか正しくコンパイルできず、特に配列や複数の引数を含む複雑な関数では困難を示している。
Deep learning has had a significant impact on many fields. Recently, code-to-code neural models have been used in code translation, code refinement and decompilation. However, the question of whether these models can automate compilation has yet to be investigated. In this work, we explore neural compilation, building and evaluating Transformer models that learn how to produce x86 assembler from C code. Although preliminary results are relatively weak, we make our data, models and code publicly available to encourage further research in this area.
研究の動機と目的
- 深層学習モデルが高水準のCコードからx86アセンブリへのエンド・ツー・エンドのコンパイルを自動化できるかどうかを調査すること。
- 将来の新しいプログラミング言語やISAの非教師ありコンパイルの基盤として、教師ありニューラルコンパイルの可能性を評価すること。
- 今後のニューラルコンパイル研究のための、並列C-x86アセンブラー語彙を集めたデータセットを構築し、公開すること。
- シーケンス・ツー・シーケンスモデルがコンパイルタスクにおける複雑な制御フローとデータ構造を処理する際の限界を分析すること。
提案手法
- Transformerアーキテクチャを用いて、マシンコンパイルをシーケンス・ツー・シーケンスのタスクとして形式化する。
- Anghabench(関数レベルのC語彙)とGCCが生成したアセンブリコードを用いて、Cからx86アセンブリへの並列アセンブラー語彙データセットを構築する。
- 並列語彙データセット上で最大尤度推定を用いてTransformerモデルを訓練し、データサイズ、モデルサイズ、ハイパーパrameterを変化させる。
- BLEUスコアを用いた構文的類似度と、手動による検査を用いた意味的正確性を評価する。
- Cおよびアセンブリコードにおけるレアまたは未知語トークンに対処するため、サブワードトークン化を採用する。
- コンパイルされた関数の意味的正確性をテストするため、プログラム合成評価セットからのベンチマークを用いる。
実験結果
リサーチクエスチョン
- RQ1Transformerベースのモデルは、C関数を意味的に正しいx86アセンブリに翻訳する能力を学習できるか?
- RQ2トレーニングデータサイズ、モデル容量、トレーニング期間の変化に伴い、モデルのパフォーマンスはどのように変化するか?
- RQ3ニューラルモデルはどの程度構文的に正しいアセンブリを生成できるのか?また、それはどの程度意味的に意味を持つのか?
- RQ4配列や複数の引数を含む関数において、ニューラルコンパイルの失敗モードは何か?
- RQ5新しいプログラミング言語やISAの非教師ありコンパイルの出発点として、教師ありニューラルモデルを用いることは現実的か?
主な発見
- 最良のモデルは、Cコードからx86アセンブリを生成する際、約80%の構文的正しさを達成している。
- 特定のベンチマークではBLEUスコアが約90に達しており、基準アセンブリとの表面的類似度が非常に高いことを示している。
- ベンチマーク内の関数のうち、わずか33%しか正しくコンパイルされておらず、特に配列や複数の引数を含む関数で顕著な失敗が見られる。
- 入力が複雑になると、モデルは短く構文的に正しいが意味のないアセンブリを頻繁に生成し、無条件のアセンブリ言語モデルに類似した挙動を示す。
- 生成を早期に終了することで、括弧の不均衡などの構文エラーが発生し、シーケンス長やデコード制御に問題があることが示唆される。
- 高いBLEUスコアにもかかわらず、意味的正確性は依然として大きな課題であり、コンパイルにおける表面的同等性と機能的同等性のギャップを浮き彫りにしている。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。