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
(論文読み)BigCodeBench: 多様な関数呼び出しと複雑な指示を用いたコード生成のベン...
Search
ymgc
October 12, 2024
1
28
(論文読み)BigCodeBench: 多様な関数呼び出しと複雑な指示を用いたコード生成のベンチマーキング
BigCodeBench: 多様な関数呼び出しと複雑な指示を用いたコード生成のベンチマーキング
https://arxiv.org/html/2406.15877v3#S7
ymgc
October 12, 2024
Tweet
Share
More Decks by ymgc
See All by ymgc
Machines of Loving Grace - AIはどのように世界をより良く変えるか -
__ymgc__
1
36
ファシリテーションの技術
__ymgc__
2
28
(論文読み)Very Large-Scale Multi-Agent Simulation in AgentScope
__ymgc__
1
21
7 POWERS
__ymgc__
1
23
自己組織化系のベイズ力学
__ymgc__
1
31
エムラン・メイヤー 『腸と脳』
__ymgc__
1
24
(論文読み)不特定多数の人工知能エージェントによる自由行動の安全化に関する研究
__ymgc__
1
28
群論入門:集合と対称性の数学
__ymgc__
0
24
(論文読み)データ強化LLMアプリケーションの包括的調査
__ymgc__
1
28
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.2k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
400
Side Projects
sachag
452
42k
A better future with KSS
kneath
238
17k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
GraphQLとの向き合い方2022年版
quramy
43
13k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.8k
Transcript
BigCodeBench: 多様な関数呼び出しと複雑な指示を用いたコード 生成のベンチマーキング https://arxiv.org/html/2406.15877v3#S7 1
目次 1. はじめに 2. ベンチマーク構築 3. ベンチマーク統計 4. 評価 5.
既存のプログラミングベンチマークとの比較 6. 関連研究 7. 結論 2
想定読者 自然言語処理研究者 ▶ 機械学習エンジニア ▶ プログラミング言語研究者 ▶ ソフトウェアエンジニアリング研究者 ▶ AI倫理の専門家
▶ 3
まとめ BigCodeBenchは実世界のプログラミングタスクに近い新しいベンチマーク ▶ 多様な関数呼び出しと複雑な指示を含む1,140のタスクを提供 ▶ LLMの評価結果は、現状のモデルに改善の余地があることを示唆 ▶ 今後の研究方向性: 1.より高度なコード生成LLMの開発 2.ベンチマークの継続的な拡張と改良
3.実世界のプログラミングタスクへの適用 ▶ 4
用語辞書 LLM: Large Language Model(大規模言語モデル) ▶ GPT: Generative Pre-trained Transformer
▶ docstring: ドキュメント文字列(Pythonのコードドキュメンテーション) ▶ Pass@K: K回の試行で正解を得る確率 ▶ 循環的複雑度: プログラムの複雑さを表す指標 ▶ ブランチカバレッジ: テストケースがプログラムの分岐をカバーする割合 ▶ バックトランスレーション: ある言語から別の言語に翻訳し、再び元の言語に戻す技法 ▶ 5
1. はじめに 6
1. はじめに (1/2) Pythonコードによるタスク自動化が学術界と産業界から大きな注目を集めている ▶ 現在のベンチマークは短く自己完結的なタスクに限定されている ▶ 7
1. はじめに (2/2) 実世界のプログラミングタスクは通常以下を含む: ▶ ツールとしての多様な関数呼び出し - 139のライブラリから723の関数呼び出しを使用 - ドメイン固有ライブラリは包括的な機能をカバー
- 複合的推論能力を要する複雑な指示 - 入力データ操作、エラーメッセージ処理、特定の出力フォーマットなどの順序付け - 本研究は孤立したコーディング演習と実世界のプログラミングの評価ギャップを埋めることを目指す ▶ BigCodeBenchを提案:1,140の細分化されたタスクを含む新しいベンチマーク ▶ 8
2. ベンチマーク構築 9
2.1 データ合成 GPT-4を使用してシード例に基づきプログラミングタスクを合成 ▶ ODEXからの意図とペアになったコードスケルトンをシード例として使用 - モデルバイアスを軽減するため難読化と摂動を実施 ▶ プログラムエントリーポイントをダミー関数名に置換 -
バックトランスレーション法でdocstringの自然言語記述を摂動 - 4,718の関数レベルのプログラミングサンプルを収集 ▶ 10
2.2 半自動プログラムリファクタリングとテストケース生成 (1/2) Web版GPT-4のCode Interpreterセッションを活用 ▶ Linuxベースの仮想環境でPythonパッケージがプリインストール - 人間のアノテータがフィードバックとガイダンスを提供 ▶
13人のアノテータが各100のタスクを担当 - LLMの側面: ▶ 段階的な改良プロセスに従う(未使用ライブラリの削除、docstringのフォーマット等) - モックテストと実行時バグの解決に苦戦 - 1,223のリファクタリングされたプログラミングタスクとペアのテストケースを得た ▶ 11
2.3 人間によるキュレーション 3段階のプロセス: ▶ 検査:マニュアルレビューと改良 - 詳細なガイドラインに基づき、テストケースの追加やランタイム問題の解決 - 事前評価:GPT-3.5-Turboを使用したドライラン -
モデルの失敗を理解し、タスク指示を明確化 - クロスチェック:追加のアノテータがデータを改良し最終化 - docstring構造の修正、未使用モジュールの削除等 - サンプリングされたタスクの97%が全てのテストケースに合格 ▶ 12
2.4 NL指向の命令からコード生成へのベンチマーキング より自然言語指向の指示のためBigCodeBench-Instructを作成 ▶ 冗長な情報や特定の詳細を避け、高レベルな機能性の記述に焦点 - タスクプロンプトをより自然な指示に変換するための解析ルールを設計 ▶ 13
3. ベンチマーク統計 14
3. ベンチマーク統計 (1/2) BigCodeBenchの内容: ▶ 1,140タスク - 平均5.6テストケース - 99%ブランチカバレッジ
- 他のベンチマークと比較して高い複雑性 - 平均行数:33.5行 - 平均循環的複雑度:3.1 - 15
3. ベンチマーク統計 (2/2) ツール統計: ▶ 7つのドメイン - 139ライブラリ(77標準、62外部) - 723関数呼び出し(281標準、442外部)
- ライブラリ、関数呼び出し、ドメインのより多様な組み合わせ ▶ タスクあたり平均2.8ライブラリ、4.7関数呼び出し使用 - 16
4. 評価 17
4.1 タスクレベルのパフォーマンス測定 (1/2) BigCodeBench-Completeで60のLLM、BigCodeBench-Instructで35の指示調整LLMを評価 ▶ 主な発見: ▶ 指示調整LLMは長いコードプロンプトの重要な詳細を省略する - 必須のインポート文の省略によりタスク失敗
- 指示調整はプログラミング制約の遵守に役立つ - 指示調整LLMと基本LLMの平均Pass@1:40.7% vs 35.7% - LLMはプログラミング指示の詳細さに敏感 - BigCodeBench-Instructでは平均8.5%のPass@1低下 - 18
4.2 ツールレベルのパフォーマンス測定 トップパフォーマンスのLLMはほとんどのドメインで優れているが一部で不足 ▶ LLMはグラウンドトゥルースと比較して異なる関数呼び出しを使用してタスクを解決 ▶ 合格ソリューション:59.54%がグラウンドトゥルースにない関数呼び出しを使用 - 失敗ソリューション:77.53%がグラウンドトゥルースにない関数呼び出しを使用 -
19
5. 既存のプログラミングベンチマークとの比較 HumanEval+およびLiveCodeBenchと強い相関 ▶ Pearsonの相関係数:0.849-0.864 - Spearmanの順位相関係数:0.861-0.898 - BigCodeBenchは異なる側面を測定し、一部のモデルでランク変動あり ▶
20
6. 関連研究 コード用の大規模言語モデルと既存のプログラミングベンチマークについて議論 ▶ BigCodeBenchの特徴: ▶ より複雑で実世界に近いタスク - 多様なツール使用とライブラリ呼び出し -
複雑な指示に従う能力の評価 - 21
7. 結論 BigCodeBenchはツール使用と複雑な指示遵守能力を評価 ▶ LLMのプログラミング能力に改善の余地があることを示唆 ▶ コード用の高度なLLMとベンチマーク開発の継続的な取り組みを呼びかけ ▶ 長期的なロードマップとしてBigCodeBench-Hardの拡張を提案 ▶
22