ウェブサイト•紙•doc•データ•データ視聴者•不一致
仮想化されていないシステム(デスクトップ、ラップトップ、ベアメタルマシンなど)で動作しているとします。つまり、AWS、Azure、K8Sなどの仮想化環境を利用していないことを意味します。この場合は、以下の指示を進めてください。ただし、仮想化されたプラットフォームを使用している場合は、Dockerセクションを参照してください。
cdをクローンします。次に、 requirements.txtにリストされている依存関係をインストールします。txt。環境を管理するには、最新バージョンのCondaを使用することをお勧めしますが、依存関係を手動でインストールすることもできます。 Pythonのバージョンが> = 3.9であることを確認してください。 # Clone the OSWorld repository
git clone https://github.com/xlang-ai/OSWorld
# Change directory into the cloned repository
cd OSWorld
# Optional: Create a Conda environment for OSWorld
# conda create -n osworld python=3.9
# conda activate osworld
# Install required dependencies
pip install -r requirements.txtまたは、ベンチマークタスクなしで環境をインストールすることもできます。
pip install desktop-envvmrunコマンドを構成します。インストールプロセスは、VMWare Workation Proをインストールする方法を参照できます。以下を実行して、成功したインストールを確認してください。 vmrun -T ws list環境変数セットとともにインストールが成功した場合、現在の実行中の仮想マシンを示すメッセージが表示されます。
注: VMware Proに問題がある場合は、VirtualBoxの使用もサポートしています。ただし、Appleチップ上の並列性やMacOSなどの機能は、十分にサポートされていない可能性があります。
すべてセット!セットアップスクリプトは、必要な仮想マシンを自動的にダウンロードし、環境を構成します。
非ベアメタルサーバーで実行している場合、またはVMwareおよびVirtualboxプラットフォームを使用しないことを好む場合は、Dockerサポートを使用することをお勧めします。
KVMサポートでVMを実行することをお勧めします。ホスティングプラットフォームがKVMをサポートするかどうかを確認するには、実行します
egrep -c '(vmx|svm)' /proc/cpuinfo
Linuxで。返品値がゼロより大きい場合、プロセッサはKVMをサポートできる必要があります。
注:MacOSホストは通常、KVMをサポートしていません。 MACOSでOSWorldを実行したい場合は、VMwareを使用することをお勧めします。
ホスティングプラットフォームがグラフィカルユーザーインターフェイス(GUI)をサポートしている場合、LinuxにDockerデスクトップをインストールするか、OSに基づいてWindowsにDockerデスクトップをインストールすることができます。それ以外の場合は、Dockerエンジンをインストールできます。
DesktopEnv初期化するときに次の引数を追加します。
provider_name : dockeros_type :VMのOSに応じて、 UbuntuまたはWindows注:実験が異常に中断されている場合(たとえば、信号を中断して)、時間の経過とともにシステムのパフォーマンスに影響を与える可能性のある残留ドッカーコンテナが存在する場合があります。
docker stop $(docker ps -q) && docker rm $(docker ps -a -q)を実行してクリーンアップしてください。
私たちはもっとサポートすることに取り組んでいますか?しっかりと握ってください!
環境と対話するために、次の最小限の例を実行します。
from desktop_env . desktop_env import DesktopEnv
example = {
"id" : "94d95f96-9699-4208-98ba-3c3119edf9c2" ,
"instruction" : "I want to install Spotify on my current system. Could you please help me?" ,
"config" : [
{
"type" : "execute" ,
"parameters" : {
"command" : [
"python" ,
"-c" ,
"import pyautogui; import time; pyautogui.click(960, 540); time.sleep(0.5);"
]
}
}
],
"evaluator" : {
"func" : "check_include_exclude" ,
"result" : {
"type" : "vm_command_line" ,
"command" : "which spotify"
},
"expected" : {
"type" : "rule" ,
"rules" : {
"include" : [ "spotify" ],
"exclude" : [ "not found" ]
}
}
}
}
env = DesktopEnv ( action_space = "pyautogui" )
obs = env . reset ( task_config = example )
obs , reward , done , info = env . step ( "pyautogui.rightClick()" )環境の作成の成功、セットアップの完了、アクションの実行の成功など、システムのすべてのログが正常に実行されます。最終的に、画面上の右クリックが成功することを観察します。つまり、準備ができています。
私たちの論文で使用されているベースラインエージェントを実行する場合は、GPT-4Vの純粋なスクリーンショット設定の下の例として、次のコマンドを実行できます。
APIキーを使用してOpenAI_API_KEY環境変数を設定します
export OPENAI_API_KEY= ' changeme ' python run.py --path_to_vm Ubuntu/Ubuntu.vmx --headless --observation_type screenshot --model gpt-4-vision-preview --result_dir ./resultsこの場合、エージェントのタスク完了のスクリーンショット、アクション、ビデオ録画を含む結果は、この場合の./resultsディレクトリに保存されます。その後、次のコマンドを実行して結果を取得できます。
python show_result.pyエージェントインターフェイスと環境インターフェイスをご覧ください。エージェントインターフェイスを正しく実装し、 run.pyファイルにカスタマイズされたバージョンをインポートします。その後、前のセクションのコマンドと同様のコマンドを実行して、エージェントのベンチマークを実行できます。
仮想マシンのユーザー名とパスワードは次のとおりです。
user / passwordアカウントガイドラインを参照してください。
プロキシガイドラインを参照してください。
| 設定 | 予想される時間* | 予算コスト(完全なテストセット/小さなテストセット) |
|---|---|---|
| GPT-4V(スクリーンショット) | 10H | $ 100($ 10) |
| Gemini-Prov(スクリーンショット) | 15時間 | $ 0($ 0) |
| Claude-3 Opus(スクリーンショット) | 15時間 | $ 150($ 15) |
| GPT-4V(A11Yツリー、SOMなど) | 30H | 500ドル(50ドル) |
*環境の並列性はありません。 2024年4月に計算。
すべての貢献者に感謝します!
この環境が便利だと思う場合は、私たちの仕事を引用することを検討してください。
@misc{OSWorld,
title={OSWorld: Benchmarking Multimodal Agents for Open-Ended Tasks in Real Computer Environments},
author={Tianbao Xie and Danyang Zhang and Jixuan Chen and Xiaochuan Li and Siheng Zhao and Ruisheng Cao and Toh Jing Hua and Zhoujun Cheng and Dongchan Shin and Fangyu Lei and Yitao Liu and Yiheng Xu and Shuyan Zhou and Silvio Savarese and Caiming Xiong and Victor Zhong and Tao Yu},
year={2024},
eprint={2404.07972},
archivePrefix={arXiv},
primaryClass={cs.AI}
}