Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
論文輪読会 AutoCommenter: LLMを活用したコーディングベストプラクティス自動...
Search
ymgc
August 18, 2024
Technology
0
44
論文輪読会 AutoCommenter: LLMを活用したコーディングベストプラクティス自動強制システム
このスライドは、2024.5.22 に公開された、以下論文の輪読会用の記事になります。
https://arxiv.org/html/2405.13565v1
ymgc
August 18, 2024
Tweet
Share
More Decks by ymgc
See All by ymgc
予測する心 - 知覚と行為の統一理論
__ymgc__
0
84
LLMのテスト時計算最適化に関する研究
__ymgc__
0
70
テスト駆動開発(TDD)入門
__ymgc__
0
100
AI に特化した品質特性のテスト
__ymgc__
1
75
AIを活用したソフトウェアテスト技術 - ISTQB Foundation Level - AI Testing (CT-AI)
__ymgc__
1
92
Machines of Loving Grace - AIはどのように世界をより良く変えるか -
__ymgc__
1
91
ファシリテーションの技術
__ymgc__
2
110
(論文読み)BigCodeBench: 多様な関数呼び出しと複雑な指示を用いたコード生成のベンチマーキング
__ymgc__
1
99
(論文読み)Very Large-Scale Multi-Agent Simulation in AgentScope
__ymgc__
1
120
Other Decks in Technology
See All in Technology
はじめてのOSS開発からみえたGo言語の強み
shibukazu
1
180
実践!カスタムインストラクション&スラッシュコマンド
puku0x
0
420
Android Audio: Beyond Winning On It
atsushieno
0
850
テストを軸にした生き残り術
kworkdev
PRO
0
210
slog.Handlerのよくある実装ミス
sakiengineer
4
170
【実演版】カンファレンス登壇者・スタッフにこそ知ってほしいマイクの使い方 / 大吉祥寺.pm 2025
arthur1
1
870
「どこから読む?」コードとカルチャーに最速で馴染むための実践ガイド
zozotech
PRO
0
460
生成AI時代のデータ基盤設計〜ペースレイヤリングで実現する高速開発と持続性〜 / Levtech Meetup_Session_2
sansan_randd
1
150
AWSで始める実践Dagster入門
kitagawaz
1
620
DroidKaigi 2025 Androidエンジニアとしてのキャリア
mhidaka
2
310
JTCにおける内製×スクラム開発への挑戦〜内製化率95%達成の舞台裏/JTC's challenge of in-house development with Scrum
aeonpeople
0
230
💡Ruby 川辺で灯すPicoRubyからの光
bash0c7
0
120
Featured
See All Featured
Balancing Empowerment & Direction
lara
3
620
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
920
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1.1k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
810
Designing Experiences People Love
moore
142
24k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Building Adaptive Systems
keathley
43
2.7k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.1k
Transcript
論文輪読会 AutoCommenter: AI-Powered Code Review Assistant 大規模言語モデルを活用したコーディングベストプラクティス自動強制システム https://arxiv.org/html/2405.13565v1#S3 1
目次 1.はじめに ▶ 2.背景 ▶ 3.アプローチ ▶ 4.展開 ▶ 5.評価
▶ 6.学んだ教訓 ▶ 7.関連研究 ▶ 8.結論 ▶ 2
想定読者 ソフトウェア開発者 ▶ コードレビュアー ▶ ソフトウェアエンジニアリングマネージャー ▶ AI/ML研究者(特にコード分析に興味がある方) ▶ ソフトウェア品質保証の専門家
▶ 3
1. はじめに モダンなコードレビューの重要性 ▶ コード変更がバージョン管理システムにコミットされる前に実施 - 1人以上の同僚がレビュー - コーディングのベストプラクティス検証の課題 ▶
一部は自動化可能、多くは人間のレビュアーに依存 - 自動化困難な例:命名規則、コメントの明確さ - AutoCommenterシステムの提案 ▶ 大規模言語モデル(LLM)を活用 - 4言語(C++、Java、Python、Go)で実装・評価 - 4
1. はじめに(続き) コードレビューの時間的コスト ▶ 専門家の開発者が1日数時間を費やすことも - LLMのコードレビュー自動化への可能性 ▶ 大規模展開の課題 ▶
ソフトウェアエンジニアリングの観点 - 全体的な有効性とユーザー受容の評価不足 - 5
2. 背景 Googleのコードレビュープロセス ▶ 産業界・オープンソースプロジェクトと類似 - 日々数万の変更、数万人の開発者が参加 - レビュープロセスの特徴 ▶
変更ベース、ツール支援 - 最低1人の他の開発者によるレビュー必須 - コードレビューシステムでのコメント交換 - 6
2. 背景(続き) ベストプラクティスの定義 ▶ スタイルガイド、言語プライマー、ライブラリドキュメント - 15言語に正式なスタイルガイド、一部数百ページ - "readability"メカニズム ▶
10年以上前から導入 - 専門のスタイルエキスパートが新人を指導 - readabilityプロセスの課題 ▶ 開発時間の増加 - メンターの負担 - 進化するベストプラクティスの管理難しさ - 7
3. アプローチ AutoCommenterの概要 ▶ ベストプラクティス違反を自動検出 - 適時フィードバック提供、レビュアーの負担軽減 - モデルとタスク定義 ▶
T5ベースのトランスフォーマーアプローチ - 入力:タスクプロンプトとソースコード - 出力:違反箇所とURL - マルチタスク大規模シーケンスモデルの一部 - 8
3. アプローチ(続き) モデルトレーニング ▶ i. 大規模前処理:関連コードコメント特定 - ii. データセット整理:TensorFlow Example形式に変換
- iii. トレーニングと微調整:T5X、TPUフリート使用 - モデル選択 ▶ 2つの内在的評価 - a. 検証・テストデータセットでの評価 - b. 完全な歴史的コードレビューでの評価 - 推論インフラストラクチャ ▶ 中央ベストプラクティス分析サービス - フィルタリングステップで低品質予測を抑制 - 9
3. アプローチ(続き) IDE・コードレビューシステム統合 ▶ IDEプラグイン:診断として表示 - コードレビューシステム:自動コメント投稿 - ユーザーフィードバック収集機能 -
10
4. 展開 段階的展開(2022年7月〜2023年10月) ▶ i. チームフーディング - ii. 早期採用者(約3000人) -
iii. A/B実験(約半数の開発者) - iv. 一般公開(全開発者) - 継続的評価と改善 ▶ 閾値選択とデコーディング戦略最適化 - 古くなったベストプラクティスの抑制 - 選択コメントの独立評価 - A/Bテスト実施 - 11
4. 展開(続き) 閾値とデコーディング戦略の最適化 ▶ 高信頼度閾値(0.98)から開始、徐々に調整 - URL別閾値導入で多様性と精度向上 - ビーム検索採用で投稿頻度とURL多様性改善 -
古くなったベストプラクティスへの対応 ▶ 条件付きフィルタリングで特定予測を抑制 - 独立評価の実施 ▶ 15人の評価者、370コメントのサンプル評価 - 有用性の低いコメントパターン特定と改善 - 12
4. 展開(続き) A/Bテスト結果 ▶ コードレビュー総時間、アクティブ時間、反復回数に有意差なし - コーディング速度のわずかな改善を検出 - 13
5. 評価 開発者満足度 ▶ 2023年3月以降の有用率とフィードバックに基づき高評価 - コメント解決率 ▶ 約40%のコメントが解決 -
6000スナップショットペアの自動分析 - 40サンプルの手動検査 - 人間のコメントとの比較 ▶ 人間レビュアー参照ベストプラクティスの68%をカバー - 330の異なるURLでコメント生成 - URL多様性にはまだ改善の余地 - リンターとの比較 ▶ 上位50の頻出違反中、66%が従来の静的解析の範囲外 - 多くのベストプラクティスは従来ツールでは検出困難 - 14
6. 学んだ教訓 1.従来分析の補完 ▶ 多くの静的解析範囲外のベストプラクティスをカバー - 2.内在的評価と実世界性能の乖離 ▶ 外在的評価とシステム改善が成功展開に不可欠 -
3.ユーザー受容監視の重要性 ▶ 少数のネガティブ経験でも信頼損なう可能性 - 継続的モニタリングと分析が問題検出・改善に重要 - 15
7. 関連研究 静的解析研究 ▶ 50年以上の歴史、多数の論文 - 開発者との相互作用に関する研究多数 - 既存ワークフロー統合と信頼性維持が重要 -
機械学習によるコード分析 ▶ 比較的新しい分野 - 自動コードレビューモデル・手法の提案 - 多くは歴史的データセット評価に留まる - 実システム評価は少ない - 16
8. 結論 AutoCommenter開発・展開・評価の経験報告 ▶ 従来ツール超える能力と高ユーザー受容度の両立 ▶ 全プロセス概説 ▶ モデル・システム設計 -
内在的評価とシステム調整 - 段階的ロールアウト - エンドユーザー評価 - 今後の課題 ▶ リコール改善 - 新機能追加のためのアーキテクチャ変更 - 最新大規模モデル活用の可能性 - 17
まとめ AutoCommenterは大規模言語モデルを活用した革新的なコードレビュー支援システム ▶ ベストプラクティス違反の自動検出により、開発者とレビュアーの負担を軽減 ▶ 段階的な展開と継続的な改善により、高いユーザー受容度を達成 ▶ 従来の静的解析ツールでは困難だった領域をカバー ▶ 実世界での評価と調整が成功の鍵
▶ 今後の改善と拡張の余地が大きい革新的なアプローチ ▶ 18
用語 モダンなコードレビュー: コード変更がバージョン管理システムにコミットされる前に行われる増分的なレビュープロセス ▶ ベストプラクティス: プログラミング言語の優れた使用方法とその適用方法を記述したもの ▶ 大規模言語モデル (LLM): 大量のテキストデータで訓練された高度な自然言語処理モデル
▶ T5: "Text-to-Text Transfer Transformer"の略。多様なNLPタスクに適用可能なトランスフォーマーモデル ▶ readability: Googleで使用されている、ベストプラクティスの一貫した遵守を確保するためのメカニズム ▶ ビーム検索: 複数の候補を並行して探索する探索アルゴリズム ▶ TPU: Tensor Processing Unit。機械学習ワークロード用に設計された特殊なハードウェアアクセラレータ ▶ リンター: ソースコードを分析し、プログラミングエラー、バグ、スタイルエラーなどを検出するツール ▶ 19