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
23
論文輪読会 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
Machines of Loving Grace - AIはどのように世界をより良く変えるか -
__ymgc__
1
44
ファシリテーションの技術
__ymgc__
2
44
(論文読み)BigCodeBench: 多様な関数呼び出しと複雑な指示を用いたコード生成のベンチマーキング
__ymgc__
1
37
(論文読み)Very Large-Scale Multi-Agent Simulation in AgentScope
__ymgc__
1
27
7 POWERS
__ymgc__
1
27
自己組織化系のベイズ力学
__ymgc__
1
41
エムラン・メイヤー 『腸と脳』
__ymgc__
1
31
(論文読み)不特定多数の人工知能エージェントによる自由行動の安全化に関する研究
__ymgc__
1
36
群論入門:集合と対称性の数学
__ymgc__
0
29
Other Decks in Technology
See All in Technology
マルチプロダクト開発の現場でAWS Security Hubを1年以上運用して得た教訓
muziyoshiz
2
2.1k
アップデート紹介:AWS Data Transfer Terminal
stknohg
PRO
0
170
Microsoft Azure全冠になってみた ~アレを使い倒した者が試験を制す!?~/Obtained all Microsoft Azure certifications Those who use "that" to the full will win the exam! ?
yuj1osm
1
110
私なりのAIのご紹介 [2024年版]
qt_luigi
1
120
サイバー攻撃を想定したセキュリティガイドライン 策定とASM及びCNAPPの活用方法
syoshie
3
1.2k
KubeCon NA 2024 Recap / Running WebAssembly (Wasm) Workloads Side-by-Side with Container Workloads
z63d
1
240
DevOps視点でAWS re:invent2024の新サービス・アプデを振り返ってみた
oshanqq
0
180
権威ドキュメントで振り返る2024 #年忘れセキュリティ2024
hirotomotaguchi
2
730
AIのコンプラは何故しんどい?
shujisado
1
190
Snowflake女子会#3 Snowpipeの良さを5分で語るよ
lana2548
0
220
2024年にチャレンジしたことを振り返るぞ
mitchan
0
130
Turing × atmaCup #18 - 1st Place Solution
hakubishin3
0
470
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
Automating Front-end Workflow
addyosmani
1366
200k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Designing for Performance
lara
604
68k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
Agile that works and the tools we love
rasmusluckow
328
21k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
How to Think Like a Performance Engineer
csswizardry
22
1.2k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5k
Bash Introduction
62gerente
608
210k
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