Upgrade to Pro — share decks privately, control downloads, hide ads and more …

(論文読み)BigCodeBench: 多様な関数呼び出しと複雑な指示を用いたコード生成のベン...

ymgc
October 12, 2024
17

(論文読み)BigCodeBench: 多様な関数呼び出しと複雑な指示を用いたコード生成のベンチマーキング

BigCodeBench: 多様な関数呼び出しと複雑な指示を用いたコード生成のベンチマーキング
https://arxiv.org/html/2406.15877v3#S7

ymgc

October 12, 2024
Tweet

Transcript

  1. 目次 1. はじめに 2. ベンチマーク構築 3. ベンチマーク統計 4. 評価 5.

    既存のプログラミングベンチマークとの比較 6. 関連研究 7. 結論 2
  2. 用語辞書 LLM: Large Language Model(大規模言語モデル) ▶ GPT: Generative Pre-trained Transformer

    ▶ docstring: ドキュメント文字列(Pythonのコードドキュメンテーション) ▶ Pass@K: K回の試行で正解を得る確率 ▶ 循環的複雑度: プログラムの複雑さを表す指標 ▶ ブランチカバレッジ: テストケースがプログラムの分岐をカバーする割合 ▶ バックトランスレーション: ある言語から別の言語に翻訳し、再び元の言語に戻す技法 ▶ 5
  3. 1. はじめに (2/2) 実世界のプログラミングタスクは通常以下を含む: ▶ ツールとしての多様な関数呼び出し - 139のライブラリから723の関数呼び出しを使用 - ドメイン固有ライブラリは包括的な機能をカバー

    - 複合的推論能力を要する複雑な指示 - 入力データ操作、エラーメッセージ処理、特定の出力フォーマットなどの順序付け - 本研究は孤立したコーディング演習と実世界のプログラミングの評価ギャップを埋めることを目指す ▶ BigCodeBenchを提案:1,140の細分化されたタスクを含む新しいベンチマーク ▶ 8
  4. 2.2 半自動プログラムリファクタリングとテストケース生成 (1/2) Web版GPT-4のCode Interpreterセッションを活用 ▶ Linuxベースの仮想環境でPythonパッケージがプリインストール - 人間のアノテータがフィードバックとガイダンスを提供 ▶

    13人のアノテータが各100のタスクを担当 - LLMの側面: ▶ 段階的な改良プロセスに従う(未使用ライブラリの削除、docstringのフォーマット等) - モックテストと実行時バグの解決に苦戦 - 1,223のリファクタリングされたプログラミングタスクとペアのテストケースを得た ▶ 11
  5. 2.3 人間によるキュレーション 3段階のプロセス: ▶ 検査:マニュアルレビューと改良 - 詳細なガイドラインに基づき、テストケースの追加やランタイム問題の解決 - 事前評価:GPT-3.5-Turboを使用したドライラン -

    モデルの失敗を理解し、タスク指示を明確化 - クロスチェック:追加のアノテータがデータを改良し最終化 - docstring構造の修正、未使用モジュールの削除等 - サンプリングされたタスクの97%が全てのテストケースに合格 ▶ 12
  6. 3. ベンチマーク統計 (1/2) BigCodeBenchの内容: ▶ 1,140タスク - 平均5.6テストケース - 99%ブランチカバレッジ

    - 他のベンチマークと比較して高い複雑性 - 平均行数:33.5行 - 平均循環的複雑度:3.1 - 15
  7. 3. ベンチマーク統計 (2/2) ツール統計: ▶ 7つのドメイン - 139ライブラリ(77標準、62外部) - 723関数呼び出し(281標準、442外部)

    - ライブラリ、関数呼び出し、ドメインのより多様な組み合わせ ▶ タスクあたり平均2.8ライブラリ、4.7関数呼び出し使用 - 16
  8. 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