9月9日、Phoronixが「AI Made A Lot Of "Hideous" Code But Found Major Bottlenecks For Faster Linux Compilation」と題した記事を公開した。ARMのLinuxエンジニアがAI/LLMを活用してLinuxカーネルのビルド時間を大幅に短縮するパッチ群を開発した取り組みについて詳しく紹介されている。
LLMが見つけた「シングルスレッドのボトルネック」
ARMのLinuxエンジニアであるLorenzo Stoakesが、カーネルビルドを大幅に高速化する23枚のパッチセットをメーリングリストに投稿した。
狙いはシンプルだ。Linuxカーネルのビルドプロセスには、至るところにシングルスレッドのボトルネックが潜んでいる。これらを並列化・効率化することで、ビルド時間を削減する。
パッチシリーズのカバーレターで報告されている改善効果は以下の通りだ:
- 全モジュール有効時のフルビルド:約36%高速化
- インクリメンタルビルド:最大70%高速化
- 変更なしのnoopビルド:最大約90%高速化
なお、これらの数値はカバーレター記載のベンチマーク結果に基づくものであり、測定時のCPU構成・コア数・カーネルconfigの詳細はカバーレター本文を参照されたい。各環境による差異が大きい性質のベンチマークであるため、数値はあくまで参考値として捉えるのが適切だ。
対象となったコンポーネントは、Kbuild、kallsyms、modpost、objtool、mksysmap、そしてRustビルドシステムと広範囲にわたる。
「醜いコードを大量に生成した」——LLMの使われ方
今回の取り組みで最も興味深いのは、AIの具体的な活用方法だ。Lorenzo本人が次のように説明している:
「LLMはまずボトルネックの特定に使用し、次にその改善方法の検討に使った。大量のコードを生成したが、その多くは醜悪なものだった。私は大部分を徹底的に監査・書き直し、コミットメッセージやカバーレターのコメントも大幅に編集した。LLMはビルドの実行、テスト、デバッグ、分析のオーケストレーションも担当した。ビルドと動作の正確性は手動で確認し、パフォーマンス改善も手動で検証済みだ。LLMを広範に使用したため、各コミットには『Assisted-by』タグを付与している。」
ここで押さえておきたい点は、LLMが「実装を担った」のではなく、ボトルネックの発見と改善案の探索に使われたという役割分担だ。生成されたコードの品質は「hideous(醜悪)」と評されており、そのままマージできるものではなかった。最終的なコードの正確性はLorenzo自身が手動で保証している。
各コミットに付与された Assisted-by タグは、AI支援の透明性を示す試みとして注目できる。Linuxカーネルコミュニティでは、AI生成コードの扱いについて議論が続いており、今回のような明示的なタグ付けは一つの実践例となっている。過去にはLinus TorvaldsもAI生成コードの品質に懐疑的な見解を示したことがあり、コミュニティ全体としてAIコードとの付き合い方を模索している段階だ。今回の「Assisted-by」タグによる明示的な帰属表記は、そうした文脈における一つの現実的な落としどころとも言える。
ベンチマーク結果
ハードウェアやカーネル構成の違いによる改善幅の詳細は、パッチシリーズのカバーレターに掲載されたベンチマーク結果に譲る。元記事内で参照されているグラフはPhoronix掲載のものだが、画像の取得可否については元記事側の状況に依存するため、確認は元記事上で行っていただきたい。
詳細なベンチマーク結果はパッチシリーズのメーリングリスト投稿で確認できる。また、各種CPUでの現在のカーネルビルド時間の参考データはOpenBenchmarking.orgにまとめられている。
今後の見通し
このパッチセットはまだレビュー段階であり、mainlineカーネルへのマージは確定していない。ただし、改善幅が実測でフルビルドでも36%、条件によっては最大90%に達するケースが報告されていることから、カーネル開発者やディストリビューションのビルドインフラへの影響は小さくない。
カーネルビルドの高速化はCI/CDパイプラインやディストリビューションのパッケージングにも直結するため、レビューの行方が注目される。
詳細はAI Made A Lot Of "Hideous" Code But Found Major Bottlenecks For Faster Linux Compilationを参照していただきたい。