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
27
論文輪読会 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
31
LLMのテスト時計算最適化に関する研究
__ymgc__
0
19
テスト駆動開発(TDD)入門
__ymgc__
0
52
AI に特化した品質特性のテスト
__ymgc__
1
35
AIを活用したソフトウェアテスト技術 - ISTQB Foundation Level - AI Testing (CT-AI)
__ymgc__
1
38
Machines of Loving Grace - AIはどのように世界をより良く変えるか -
__ymgc__
1
56
ファシリテーションの技術
__ymgc__
2
60
(論文読み)BigCodeBench: 多様な関数呼び出しと複雑な指示を用いたコード生成のベンチマーキング
__ymgc__
1
50
(論文読み)Very Large-Scale Multi-Agent Simulation in AgentScope
__ymgc__
1
63
Other Decks in Technology
See All in Technology
室長と気ままに学ぶマイクロソフトのビジネスアプリケーションとビジネスプロセス
ryoheig0405
0
370
Classmethod AI Talks(CATs) #17 司会進行スライド(2025.02.19) / classmethod-ai-talks-aka-cats_moderator-slides_vol17_2025-02-19
shinyaa31
0
160
エンジニアの育成を支える爆速フィードバック文化
sansantech
PRO
3
1.1k
Swiftの “private” を テストする / Testing Swift "private"
yutailang0119
0
140
ハッキングの世界に迫る~攻撃者の思考で考えるセキュリティ~
nomizone
13
5.6k
エンジニアのためのドキュメント力基礎講座〜構造化思考から始めよう〜(2025/02/15jbug広島#15発表資料)
yasuoyasuo
18
7.1k
なぜ私は自分が使わないサービスを作るのか? / Why would I create a service that I would not use?
aiandrox
0
860
Culture Deck
optfit
0
470
Raycast AI APIを使ってちょっと便利な拡張機能を作ってみた / created-a-handy-extension-using-the-raycast-ai-api
kawamataryo
0
150
地方拠点で エンジニアリングマネージャーってできるの? 〜地方という制約を楽しむオーナーシップとコミュニティ作り〜
1coin
1
250
ローカルLLMを活用したコード生成と、ローコード開発ツールへの応用
kazuhitoyokoi
0
130
JEDAI Meetup! Databricks AI/BI概要
databricksjapan
0
270
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
366
25k
Typedesign – Prime Four
hannesfritz
40
2.5k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.5k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Faster Mobile Websites
deanohume
306
31k
Adopting Sorbet at Scale
ufuk
74
9.2k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Building Applications with DynamoDB
mza
93
6.2k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.2k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
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