8BのLLMでStockfishとチェスの対局をさせたところ全く歯が立たなかったのは先日の記事の通りである。では70BのLLMではどうなるのか。
GroqのOpenAIのI/FでLlama3.1-70BとつないでStockfishと対局させてみた。結論から言うと、70Bのモデルでも8Bのモデルと同様にStockfishの圧勝だった。ゲーム数を10とし、先後入れ替えで20ゲームを行い、Stockfishが20勝0敗であった。
下記のELOレーティングのグラフは、おそらくは総当りでの対局数が不十分だったのだろう。Stockfishに対しては全敗でも他のLLMに対して勝ったり負けたりしている状況では、対局数が少ないとELOレーティングの差はそれほど拡がらずに、このような結果になるのではないか。
対局数を増やせば、Stockfishとのレーティング差は確実にもっと大きくなるはずだ。
GPT-4oがチェスパズルで好成績を出したという記事も以前にあったので、ひょっとするとひょっとするかと思ったのだが。冷静に考えればStockfishは神様レベルに強いチェスAIなので、ようやく人間レベルになってきたLLMがStockfishを相手に10回に1回も勝てる訳がない。
現在のLLMのチェスの強さを測定する
ここで終わってしまっては面白くないので、現在のLLMのチェスの強さを測定する方法を考えてみた。
チェスの対局ソフトを導入すれば別のチェスエンジンとの対局で強さを測ることができる。しかしそのためにはLLMをチェスエンジンとして登録できるようにする必要があり、それはかなり難しい。
もう一つの方法として、Stockfishの「Skill Level」というオプションを使う方法だ。「Skill Level」オプションで強さを指定でき、デフォルトは20で一番強く、0が最弱となっている。これをうまく使えばLLMの現在のチェスの実力がどれくらいかを推測できそうだ。
Stockfishの「Skill Level」でELOレーティングがどれくらい変わるのかは分からないが、やねうらお氏がやねうら王に同様のオプションを導入されている。
上記ページに以下の記述があった。
・SkillLevel 19だとSkillLevel 20に比べてR300ぐらい弱くなる。これは、MultiPV 4で探索するのでそのロスがあるし、depth 20までしか探索しないので、たぶん長い時間だともっと弱くなる。
・SkillLevel 0だとR4000以上弱くなる。depth 1なのでほとんど探索ができないため。
Stockfishもおそらく同様かと思う。
しかしその後、Skill Levelの変更を試みたのだが、強さを変更することができなかった。チェスの対局ソフトも導入してみたが、操作方法が今ひとつわからない。LLMのチェスの強さを測定することは私の力では難しい。いったんあきらめることにした。
まとめ
GroqのOpenAIのI/FでLlama3.1-70Bとつなぐまでは順調だった。Groqの70BのLLMも期待通りにさくさく動いてくれた。得られた結果は期待していた内容ではなかったが、とりあえず自分の環境で検証はできた。
Jupyter labから、Groqにつながることを確認した時のPythonスクリプトのスクショを今回の唯一の成果として残したい。
ちなみに1000ドルPCのCPUで70BのLLMを使ってテストすると、LLMは1手を考えるのに4〜5分かかった。Stockfishは瞬時に手を返してくれるのだが、1ゲーム30手として1ゲームに2時間半くらいかかる。10ゲームで24時間(1日)かかる計算になる。このような検証をするときに高速なLLMが無料で使えるGroqの環境は貴重であることを再認識した。
2024-11-16追記
LLMとチェスAIのStockfishを対決させるとほとんどのLLMは全敗する中、なぜかgpt-3.5-turbo-instructのみが全勝(10勝0敗)だったという記事がGigazineに掲載された。Stockfishの強さレベルは最弱を指定してこの結果だったらしい。期せずしてStockfishと現在のLLMとの強さにはレーティングで4000以上の差がある(らしい)ことが分かった。
gpt-3.5-turbo-instructのみが全勝しているのも不思議だが、o1-miniでも全敗していることは意外な結果である。