웹 사이트 • 논문 • 문서 • 데이터 • 데이터 뷰어 • 불화
가상화되지 않은 시스템 (예 : 데스크탑, 랩톱, 베어 메탈 머신)에서 작동한다고 가정하여 AWS, Azure 또는 K8과 같은 가상화 된 환경을 사용하지 않는다고 가정합니다. 이 경우 아래 지침을 진행하십시오. 그러나 가상화 된 플랫폼에있는 경우 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 Worksation Pro를 설치하는 방법을 참조 할 수 있습니다. 다음을 실행하여 성공적인 설치를 확인하십시오. vmrun -T ws list환경 변수 세트와 함께 설치가 성공하면 현재 실행중인 가상 머신을 보여주는 메시지가 표시됩니다.
참고 : VMware Pro에 문제가있는 경우 VirtualBox 사용을 지원합니다. 그러나 Apple Chips의 병렬 처리 및 MACOS와 같은 기능은 잘 지원되지 않을 수 있습니다.
모두 세트! 설정 스크립트는 필요한 가상 머신을 자동으로 다운로드하고 환경을 구성합니다.
비 배정 금속 서버에서 실행 중이거나 VMware 및 VirtualBox 플랫폼을 사용하지 않는 경우 Docker 지원을 사용하는 것이 좋습니다.
KVM 지원으로 VM을 실행하는 것이 좋습니다. 호스팅 플랫폼이 KVM을 지원하는지 확인하십시오
egrep -c '(vmx|svm)' /proc/cpuinfo
Linux에서. 리턴 값이 0보다 크면 프로세서는 KVM을 지원할 수 있어야합니다.
참고 : MACOS 호스트는 일반적으로 KVM을 지원하지 않습니다. MacOS에서 Osworld를 실행하려면 VMware를 사용하는 것이 좋습니다.
호스팅 플랫폼이 그래픽 사용자 인터페이스 (GUI)를 지원하는 경우 Linux에 Docker Desktop을 설치하거나 OS를 기반으로 Windows에 Docker Desktop을 설치하는 것을 참조하십시오. 그렇지 않으면 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 Pure-Screenshot 설정에서 예제로 다음 명령을 실행할 수 있습니다.
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 (스크린 샷) | 15h | $ 0 ($ 0) |
| Claude-3 Opus (스크린 샷) | 15h | $ 150 ($ 15) |
| GPT-4V (A11y Tree, 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}
}