LLM-as-a-Judgeのコストを節約したい!

井阪(ねぼすけAI

はじめに

先日の関東Kaggler会で、「Data-Centric Kaggle」というタイトルで発表しました。内容としては、Kaggleで勝つためにデータをどう改善していくかという話をしました。

image.png


今日は、その発表の中で軽く紹介した「LLM-as-a-Judge」の話をします。特に、LLM-as-a-Judgeを大量に回すときに、どうやってコストを抑えるかというTipsの紹介をします。

具体的には、自分がソロ金メダルを獲得したコンペで、100万回のLLM-as-a-Judgeを実行したときに考えていたことを紹介します。

100万回のLLM-as-a-Judge!

まず前提として、2,000件のキーワードそれぞれに対して、500件の質問への回答を評価する必要がありました。 つまり、2,000 × 500 = 1,000,000。合計100万回の評価です。

これを何も考えずにLLM-as-a-Judgeで実行すると、かなりコストが高くなります。特に、出力側のトークンは入力側より高くなりがちなので、できるだけ短くしたいところです。

そこで、出力を1トークンに収めるために、max_tokens=1 に固定しました。

ただし、そのためにはタスク設計も工夫する必要があります。モデルには、回答を次の4種類だけで返すように指示しました。

そのうえで、unsureirrelevant は後処理で tie としてまとめます。最終的には、各キーワード・質問・回答の組み合わせに対して、次の3値のスコアを持つテーブルを作るイメージです。