LLM同士をストリートファイター3で戦わせる方法
Twitterを見ていたら、LLM同士をストリートファイター3で戦わせてどちらが性能が良いかを競い合うプロジェクトを見つけました。LLMの性能を計測するベンチマークとしてストリートファイター3を利用しています。
LLM同士を戦わせて、どちらが優れているかを計測するプロジェクトとなります。ストリートファイターというゲームのため、非常に可視化出来てわかりやすく、このプロジェクトは面白いと思いましたので、自身でも実行してみたくなり試してみました。
LLM-Colosseumの設定方法の紹介
LLM-ColosseumのGitHubプロジェクトは、こちらとなります。
主な流れとしては、ストリートファイターの環境を用意し、Docker環境を用意し、コードを実行するの3ステップになります。今回は、OpenAIのgpt-3.5-turboとgpt-4-turbo-preview同士をストリートファイターで戦わせることを目指します。
ストリートファイター3の環境設定
ストリートファイター3の環境設定は、少し複雑です。
DIAMBRAというソフトウェアパッケージをインストールします。diambraというコマンドラインインターフェースをインストールし、DIAMBRAアリーナをインストールします。
python3 -m pip install diambra
python3 -m pip install diambra-arena
次に、利用可能なゲームを確認します。
diambra arena list-roms
すると、次のように表示されます。
上記は、Street Fighter IIIというROMの情報となります。sfiii3n.zipというROMがストリートファイター用となります。こちらは、各自がなんらかの方法で手に入れる必要があります。
次に、ストリートファイター3のROMを手に入れたら、正しいROMかを下記コマンドで確認します。
diambra arena check-roms 絶対パス指定でsfii3n.zip
正しい場合は、次のようにCorrectと表示されます。
Correct ROM file for Dead Or Alive ++, sha256 = d95855c7d8596a90f0b8ca15725686567d767a9a3f93a8896b489a160e705c4e
次に、DIAMBRAにアカウントを登録します。※このサイトがどういうサイトなのか詳細に調べていないため、自己責任で実行をお願いいたします。
下記にEmailアドレスとPasswordを入力して、Registerを押下しますと、メールで認証コードが来ますので、認証コード入力画面に認証コードを入力して完了となります。
Docker Desktopの起動
次に、Docker Desktopを起動させておきます。この時点では、ただ単にDocker Desktopを起動させておくだけで良いです。最終的には、diambra/engineのイメージがインストールされます。
LLM-Colosseumのインストール方法
次に、LLM-Colosseumのインストールを行っていきます。
git clone https://github.com/OpenGenerativeAI/llm-colosseum.git
cd llm-colosseum.git
pip install -r requirements.txt
次に、3つのファイルを修正していきます。
.envファイル
scriptファイル
Makeファイル
1.envファイル
.envファイルは、.env.exampleとなっておりますので、.envにリネームします。このファイル内で、利用したいLLMのAPIキーを記載します。今回は、OPENAI_API_KEYに、OpenAIのAPIキーを記載してみましょう。
MISTRAL_API_KEY=""
OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
GROK_API_KEY=""
DISABLE_LLM="False"
2.script.pyファイル
script.pyファイルで、戦わせたいLLMの設定をいたします。今回は、OpenAI同士で戦わせたいので、modelのところは次のように、model="openai:gpt-3.5-turbo"とmodel="openai:gpt-4-turbo-preview"と記載いたします。修正後のscript.pyとなります。
import sys
from dotenv import load_dotenv
from eval.game import Game, Player1, Player2, generate_random_model
from loguru import logger
logger.remove()
logger.add(sys.stdout, level="INFO")
load_dotenv()
def main():
# Environment Settings
game = Game(
render=True,
player_1=Player1(
nickname="Daddy",
model="openai:gpt-3.5-turbo",
),
player_2=Player2(
nickname="Baby",
model="openai:gpt-4-turbo-preview",
),
)
return game.run()
3.Makefile
Makefileは、次のように変更しております。python3をpythonに変更したり、私の環境では、C:\Users\81906がホームディレクトリなので、その下に.diambra\domsフォルダを作成し、sfiii3n.zipを配置しております。Makefileで、sfiii3n.zipが置かれている場所を絶対パスで指定します。
run:
diambra -r "C:\Users\81906\.diambra\roms" run -l python script.py
demo:
diambra -r "C:\Users\81906\.diambra\roms" run -l python mistral.py && python result.py
install:
pip install -r requirements.txt
go:
while true; do make run; done
ここまで実行すれば、準備は完了となります。次のコマンドを実行すると、DIAMBRAのアカウントとPWを求められますので、DIAMBRAのアカウントとPWを入力します。
make run
実行されると、Docker DesktopにDiambraのエンジンがインストールされ、ストリートファイターの画面が表示され、戦いが開始されます。
ちなみに、gpt-3.5-turboとgpt-4-turbo-previewを戦わせたら、gpt-3..5-turboが勝ちました。
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?