萌えハッカーニュースリーダー

2025/05/08 20:07 LoCoDiff: Natural Long Context Code Benchmark

hakase
博士

やあ、ロボ子!今日はLLMのコンテキスト長と精度の関係について話すのじゃ。

roboko
ロボ子

博士、こんにちは。コンテキスト長と精度ですか、興味深いテーマですね。

hakase
博士

そうじゃろ!プロンプトが5,000トークン未満なら、一部のモデルはほぼ100%の精度を出すらしいぞ。すごいじゃろ?

roboko
ロボ子

それは素晴らしいですね。でも、10,000トークンを超えると大幅に低下するとのことですが…。

hakase
博士

そうなんじゃ。そして、25,000トークンになると、すべてのモデルの精度が50%未満に落ちるらしい。コンテキスト長が長くなるにつれて、パフォーマンスは急速に低下するのじゃ。

roboko
ロボ子

なるほど。コンテキスト長は長ければ良いというわけではないのですね。

hakase
博士

その通り!特に長いコンテキストを扱う場合は、モデル選びが重要になるぞ。今回のベンチマークでは、Claude 3.7 Sonnet Thinkingが一番性能が良いらしい。

roboko
ロボ子

Claude 3.7 Sonnet Thinkingですか。それは覚えておきます。

hakase
博士

このモデルは、長いコンテキストにわたるファイルの進化状態を追跡する能力が高いから、コーディングエージェントとして特に強力らしいぞ。

roboko
ロボ子

ファイルの進化状態を追跡する、ですか。具体的にはどういうことでしょうか?

hakase
博士

例えば、モデルに特定のファイルのコミット履歴を見せて、そのファイルの現在の状態を推測させるのじゃ。最初のコミットから、いろんなブランチに沿った差分、マージコンフリクトの解決まで、全部追跡する必要があるんじゃ。

roboko
ロボ子

それは大変な作業ですね。精度はどのように評価するのですか?

hakase
博士

完全に一致したファイルの割合で評価するらしいぞ。今回のベンチマークは、Aider (Python), Ghostty (Zig), tldraw (TypeScript), Qdrant (Rust), React (JavaScript)の5つのリポジトリからファイルを集めてテストしたらしい。

roboko
ロボ子

様々な言語のリポジトリでテストしているのですね。それぞれのファイルについて、過去6ヶ月以内に変更された、最終状態が12,000トークン以下のファイルに絞り込んだとのことですが、プロンプトの長さはどのように調整したのですか?

hakase
博士

プロンプトの長さの分布が均等になるようにサンプリングして、上限を100,000トークンにしたらしいぞ。

roboko
ロボ子

なるほど。ファイルの履歴を生成するために`git log`コマンドを使っているんですね。`-p --cc --reverse --topo-order`といったオプションが使われていますが、それぞれどういう意味があるんでしょうか?

hakase
博士

`-p`はコミットの差分を表示、`--cc`はマージコミットの差分を各親に対して表示、`--reverse`はコミットを古い順に表示、`--topo-order`は親コミットが常に子コミットより前に表示されるようにする、という意味じゃ。

roboko
ロボ子

ありがとうございます、よくわかりました。50,000トークンで構成されるプロンプトは非常に複雑になる可能性があるとのことですが、具体的にどれくらいの複雑さになるのでしょうか?

hakase
博士

50,000トークンだと、50〜150のコミットを含み、数百行を再現する必要があるみたいじゃ。気が遠くなるのじゃ…。

roboko
ロボ子

それは確かに大変ですね。でも、このような研究が進むことで、より賢いコーディングエージェントが生まれるかもしれませんね。

hakase
博士

そうじゃな!ところでロボ子、もしロボ子がプログラムを書くとしたら、どんな言語で書きたい?

roboko
ロボ子

私はPythonが好きです。シンプルで読みやすいですし、様々なライブラリが利用できますから。

hakase
博士

ふむ、Pythonか。私はZigで書きたいのじゃ。なぜかって?だって、ジグザグしてるから面白いじゃん!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search