
Windows 에이전트 아레나 (WAA)? 멀티 모달, 데스크탑 AI 에이전트 테스트 및 벤치마킹을위한 확장 가능한 Windows AI 에이전트 플랫폼입니다. WAA는 연구원과 개발자에게 AI 연구를위한 재현 가능하고 현실적인 Windows OS 환경을 제공합니다. 여기서 에이전트 AI 워크 플로우를 다양한 작업에서 테스트 할 수 있습니다.
WAA는 Azure ML Cloud 인프라를 사용하여 규모에 따라 에이전트 배포를 지원하여 여러 에이전트의 병렬 실행을 허용하고 며칠이 아닌 몇 분 안에 수백 개의 작업에 대한 빠른 벤치 마크 결과를 제공합니다.
src/win-arena-container/start_client.sh 에서 기본 diff_lvl="normal" diff_lvl="hard" 로 변경하여 새로운 강력한 난이도 모드를 시도 할 수 있습니다. 더 어려운 어려움에서 많은 작업에서 에이전트는 작업에 의해 "설정"을 갖지 않고 과제 스스로 작업 자체를 초기화/설정하는 법 (예 : 작업에 대한 올바른 프로그램/응용 프로그램)을 배워야합니다. 구성../run-local.sh --som-origin mixed-omni --gpu-enabled true우리의 기술 보고서 논문은 여기에서 찾을 수 있습니다. 이 환경이 유용하다고 생각되면 우리의 작업을 인용하는 것을 고려하십시오.
@article{bonatti2024windows,
author = { Bonatti, Rogerio and Zhao, Dan and Bonacci, Francesco and Dupont, Dillon, and Abdali, Sara and Li, Yinheng and Wagle, Justin and Koishida, Kazuhito and Bucker, Arthur and Jang, Lawrence and Hui, Zack},
title = {Windows Agent Arena: Evaluating Multi-Modal OS Agents at Scale},
institution = {Microsoft},
year = {2024},
month = {September},
}

conda create -n winarena python=3.9 .저장소를 복제하고 종속성을 설치하십시오.
git clone https://github.com/microsoft/WindowsAgentArena.git
cd WindowsAgentArena
# Install the required dependencies in your python environment
# conda activate winarena
pip install -r requirements.txt 필요한 키 (OpenAi 또는 Azure 엔드 포인트에서)로 프로젝트의 루트에서 새 config.json 만듭니다.
{
"OPENAI_API_KEY" : " <OPENAI_API_KEY> " , // if you are using OpenAI endpoint
"AZURE_API_KEY" : " <AZURE_API_KEY> " , // if you are using Azure endpoint
"AZURE_ENDPOINT" : " https://yourendpoint.openai.azure.com/ " , // if you are using Azure endpoint
}시작하려면 Docker Hub에서 기본 이미지를 가져옵니다.
docker pull windowsarena/winarena-base:latest 이 이미지에는 src 디렉토리에서 코드를 실행하는 데 필요한 모든 필요한 종속성 (예 : 패키지 및 모델)이 포함됩니다.
다음으로 Winarena 이미지를 로컬로 구축하십시오.
cd scripts
./build-container-image.sh
# If there are any changes in 'Dockerfile-WinArena-Base', use the --build-base-image flag to build also the base image locally
# ./build-container-image.sh --build-base-image true
# For other build options:
# ./build-container-image.sh --help src 디렉토리의 최신 코드로 windowsarena/winarena:latest 이미지가 생성됩니다.
setup.iso 로 바꾸고 디렉토리로 복사하십시오 WindowsAgentArena/src/win-arena-container/vm/image 경기장을 실행하기 전에 새로운 WAA 스냅 샷 (WAA 골든 이미지라고도 함)을 준비해야합니다. 이 30GB 스냅 샷은 벤치 마크를 실행하는 데 필요한 모든 프로그램과 함께 완벽하게 작동하는 Windows 11 VM을 나타냅니다. 이 VM은 추가로 에이전트 명령을 수신하고 실행하는 Python 서버를 호스팅합니다. 놀이의 구성 요소에 대한 자세한 내용은 로컬 및 클라우드 구성 요소 다이어그램을 참조하십시오.
골드 스냅 샷을 준비하려면 한 번 실행하십시오.
cd ./scripts
./run-local.sh --prepare-image true http://localhost:8006 에서 진행 상황을 모니터링 할 수 있습니다. 준비 프로세스는 완전히 자동화되어 ~ 20 분이 소요됩니다.
VM을 준비하는 동안 VM을 방해하지 마십시오. 프로비저닝 프로세스가 완료되면 자동으로 종료됩니다.


결국, 당신은 winarena 라는 Docker 컨테이너가 아래 로그에서 볼 수 있듯이 우아하게 종료 될 것으로 기대해야합니다.

다음 파일 WindowsAgentArena/src/win-arena-container/vm/storage 구성된 Wind

src/win-arena-container 디렉토리에 변경 사항을 포함하려면 run-local.sh 스크립트에 --skip-build false 를 지정하십시오 (기본값 진실). 이렇게하면 windowsarena/winarena:lateststorage 컨텐츠를 삭제하십시오.storage 폴더를 저장소 외부의 안전한 위치에 복사하는 것이 좋습니다.sudo 와 함께 위 명령을 실행해야 할 수도 있습니다./bin/bash: bad interpreter: No such file or directory Bash 스크립트를 DOS/Windows 형식에서 UNIX 형식으로 변환하는 것이 좋습니다. cd ./scripts
find . -maxdepth 1 -type f -exec dos2unix {} +이제 평가를 시작할 준비가되었습니다. 모든 벤치 마크 작업에서 기준 에이전트를 실행하려면 다음을 수행하십시오.
cd scripts
./run-local.sh
# For client/agent options:
# ./run-local.sh --helphttp : // localhost : 8006을 엽니 다. 쇠고기 PC가있는 경우 대신 우리 논문에서 가장 강력한 에이전트 구성을 실행하여 다음을 수행 할 수 있습니다.
./run-local.sh --gpu-enabled true --som-origin mixed-omni --a11y-backend uia실행이 끝나면 명령을 사용하여 결과를 표시 할 수 있습니다.
cd src/win-arena-container/client
python show_results.py --result_dir < path_to_results_folder > 아래는 우리 연구에서 NAVI 에이전트가 사용하는 다양한 하이퍼 파라미터 조합을 비교 한 것으로, run-local.sh 스크립트를 실행할 때 --som-origin <som_origin> --a11y-backend <a11y_backend> 지정하여 무시할 수 있습니다.
| 명령 | 설명 | 메모 |
|---|---|---|
./run-local.sh --som-origin mixed-omni --a11y-backend uia | Omniparser와 접근성 트리 정보를 결합합니다 | 최상의 결과를 위해 권장됩니다 |
./run-local.sh --som-origin omni | 화면 이해를 위해 Omniparser를 사용합니다 | |
./run-local.sh --som-origin oss | WebParse, GroundingDino 및 OCR (Tesseractocr)을 사용합니다. | ? 기준선 |
./run-local.sh --som-origin a11y --a11y-backend uia | 느리고 정확한 접근성 트리를 사용합니다 | |
./run-local.sh --som-origin a11y --a11y-backend win32 | 더 빠르고 덜 정확한 접근성 트리를 사용합니다 | ? 가장 빠른 |
./run-local.sh --som-origin mixed-oss --a11y-backend uia | OSS 탐지와 접근성 트리를 결합합니다 |
--som-origin Navi 에이전트가 스크린 요소를 감지하는 방법을 결정합니다--a11y-backend 액세스 가능성 백엔드 유형을 지정합니다 ( a11y 또는 혼합 모드를 사용할 때) 첫눈에 Docker 컨테이너 내부에서 실행되는 코드를 개발/디버그하는 것은 어려운 것처럼 보일 수 있습니다. 그러나이 프로세스를보다 쉽게 할 수있는 몇 가지 팁을 제공합니다. 다음과 같은 자세한 내용은 개발 팁 문서를 확인하십시오.
우리는 Azure ML Compute VM에서 Windows Agent Arena를 실행하는 완벽한 방법을 제공합니다. 이 옵션은 모든 벤치 마크 작업에서 에이전트를 몇 시간/일에서 몇 분에서 몇 분에서 테스트하는 데 필요한 시간을 크게 줄입니다.
AZURE_SUBSCRIPTION_ID 로 사용합니다.agents )을 만듭니다. 리소스 그룹 이름을 기록하면 섹션 3에서 AZURE_ML_RESOURCE_GROUP 으로 사용합니다.agents_ml 의 이름)를 만듭니다. ML Workspace 이름을 기록하십시오. 섹션 3의 AZURE_ML_WORKSPACE_NAME 으로 사용합니다. 제작 마법사 중에는 자동으로 새로운 생성을 위해 상자를 확인하십시오.
agents )을 클릭하십시오. 
Notebooks 탭으로 이동하십시오. 사용자가 할당 된 폴더 (아래 그림과 같이)에서 compute-instance-startup.sh 라는 새 bash (.sh) 파일을 만듭니다. scripts/azure_files/compute-instance-startup.sh 의 내용을이 파일에 복사하여 저장하십시오. 이 스크립트는 Azure에서 새로운 VM을 시작할 때마다 사용됩니다. 일부 기본 구성을 적용합니다. 파일을 저장하는 경로 ( Users/<YOUR_USER>/compute-instance-startup.sh 의 형식으로)를 사용하면 섹션 3에서 스크립트를 실행하는 데 사용합니다. 
Standard Dv3 Family Cluster Dedicated vCPUs 범주에 속하는 벤치마킹에 Standard_D8_v3 VM 크기를 사용하고 있습니다. 각 VM은 8 개의 코어를 사용합니다. 사용하는 기계 유형이 중첩 된 가상화를 지원하는지 확인하십시오. 
Windows 11 스토리지 폴더를 기본 데이터 저장소와 관련된 Blob 컨테이너에 업로드하십시오. 기본적으로 Azure ML Workspace의 기본 데이터는 하나 이상의 ML 데이터 스토어를 통해 스토리지 계정에 의해 뒷받침됩니다. workspaceblobstore 라는 기본 데이터 저장소는 작업 공간 설정 중에 생성되며 Azure Storage 계정의 Blob 컨테이너에 연결됩니다. Azure ML DataStore를 방문하여 데이터 스토어와 컨테이너 간의 연관성을 검토 할 수 있습니다. 발견되면 스토리지 폴더를 다양한 방식으로 업로드 할 수 있습니다.
WindowsAgentArena/src/win-arena-container/vm/storage 폴더를 업로드하십시오. 
az login --use-device-code # Only needed if prompted
az storage blob upload-batch --account-name < STORAGE_ACCOUNT_NAME > --destination < CONTAINER_NAME > --source < LOCAL_FOLDER >
# For a list of parameters check: https://docs.microsoft.com/en-us/cli/azure/storage/blob?view=azure-cli-latestStorage browser->Blob containers 클릭하고 컨테이너를 선택한 다음 폴더를 업로드하십시오. 연결이 불안정해질 수 있으므로 큰 파일에는이 옵션이 권장되지 않습니다. [선택 사항] 기본 windowsarena/winarena:latest 이미지를 사용하지 않는 경우 사용자 정의 이미지를 Azure Container Registry에 업로드 할 수 있습니다. Azure Container Registry Documentation을 따르면 그렇게 할 수 있습니다.
az login --use-device-code
# potentially needed if commands below don't work: az acr login --name <ACR_NAME>
docker login # you will be prompted to enter your ACR credentials (username + password which can be found in the Azure portal)
docker tag < IMAGE_NAME > < ACR_NAME > .azurecr.io/ < IMAGE_NAME > : < TAG >
docker push < ACR_NAME > .azurecr.io/ < IMAGE_NAME > : < TAG >config.json 파일에 추가 키를 추가하십시오. {
... // Your previous configs
"AZURE_SUBSCRIPTION_ID" : " <YOUR_AZURE_SUBSCRIPTION_ID> " ,
"AZURE_ML_RESOURCE_GROUP" : " <YOUR_AZURE_ML_RESOURCE_GROUP> " ,
"AZURE_ML_WORKSPACE_NAME" : " <YOUR_AZURE_ML_WORKSPACE_NAME> "
}experiments.json 이라는 새 파일을 만듭니다. scripts/experiments.json 에서 실행하기위한 여러 실험으로 구성된 참조 experiments.json 찾을 수 있습니다. {
"experiment_1" : {
"ci_startup_script_path" : " Users/<YOUR_USER>/compute-instance-startup.sh " , // As seen in Section 1
"agent" : " navi " ,
"datastore_input_path" : " storage " ,
"docker_img_name" : " windowsarena/winarena:latest " ,
"exp_name" : " experiment_1 " ,
"num_workers" : 4 ,
"use_managed_identity" : false ,
"json_name" : " evaluation_examples_windows/test_all.json " ,
"model_name" : " gpt-4-1106-vision-preview " ,
"som_origin" : " oss " , // or a11y, or mixed-oss
"a11y_backend" : " win32 " // or uia
}
// ...
}run_azure.py 의 --experiments_json 및 --update_json 매개 변수를 모두 사용하여 experiments.json 생성 할 수도 있습니다. 위의 JSON은 다음 명령과 같습니다. cd scripts
python run_azure.py --experiments_json " experiments.json " --update_json --exp_name " experiment_1 " --ci_startup_script_path " Users/<YOUR_USER>/compute-instance-startup.sh " --agent " navi " --json_name " evaluation_examples_windows/test_all.json " --num_workers 4 --som_origin oss --a11y_backend win32az login --use-device-code # https://learn.microsoft.com/en-us/cli/azure/install-azure-cli
# If multiple tenants or subscriptions, make sure to select the right ones with:
# az login --use-device-code --tenant "<YOUR_AZURE_AD_TENANT_ID>"
# az account set --subscription "<YOUR_AZURE_AD_TENANT_ID>"
# Make sure you have installed the python requirements in your conda environment
# conda activate winarena
# pip install -r requirements.txt
# From your activated conda environment:
cd scripts
python run_azure.py --experiments_json " experiments.json " experiments.json 에서 미완성 된 실험의 경우, 스크립트는 다음과 같습니다.
<num_workers Azure Compute Instance vms를 작성하십시오.<exp_name> 이라는 ML 교육 작업 1 개를 실행하십시오. 실행의 로그는 Windows 11 이미지를 업로드 한 동일한 Blob 컨테이너의 agent_outputs 폴더에 저장됩니다. agent_outputs 폴더를 로컬 컴퓨터에 다운로드하고 show_azure.py 스크립트를 실행하여 모든 실험의 결과를 Markdown 테이블로 볼 수 있습니다.
cd scripts
python show_azure.py --json_config " experiments.json " --result_dir < path_to_downloaded_agent_outputs_folder > Windows Agent Arena에서 자신의 에이전트를 테스트하고 싶습니까? 기본 에이전트를 템플릿으로 사용하고 src/win-arena-container/client/mm_agents 에서 고유 한 폴더를 만들 수 있습니다. agent.py 파일 기능에 predict() 및 reset() 함수가 있는지 확인하면됩니다. 에이전트 개발에 대한 자세한 내용은 BYOA 문서를 확인하십시오.
Windows Agent Arena Project에 기여를 환영합니다. 특히 우리는 환영합니다.
기여에 관심이 있으시면 작업 개발 지침을 확인하십시오.
| 요소 | 비용 | 시간 |
|---|---|---|
| Azure Standard_D8_V3 VM | ~ $ 8 ($ 0.38/h * 40 * 0.5H) | |
| GPT-4V | $ 100 | 40 Vms의 ~ 35 분 |
| GPT-4O | $ 100 | 40 Vms의 ~ 35 분 |
| GPT-4O- 미니 | $ 15 | 40 Vms의 ~ 30 분 |
기본적으로 run-local.sh 스크립트는 8GB의 RAM과 8 CPU 코어가있는 QEMU VM을 생성하려고 시도합니다. 시스템이 제한된 리소스가있는 경우 원하는 RAM 및 CPU 할당을 지정하여 이러한 기본값을 대체 할 수 있습니다.
./run-local.sh --ram-size 4G --cpu-cores 4 시스템이 KVM 가속도를 지원하지 않으면 --use-kvm false 플래그를 지정하여 비활성화 할 수 있습니다.
./run-local.sh --use-kvm false성능 문제로 인해 KVM 가속없이 로컬로 벤치 마크를 실행하는 것은 권장되지 않습니다. 이 경우 Azure에서 벤치 마크를 실행하기 위해 Golden Image를 준비하는 것이 좋습니다.
이 프로젝트는 기여와 제안을 환영합니다. 대부분의 기부금은 귀하가 귀하가 귀하의 기부금을 사용할 권리를 부여 할 권리가 있다고 선언하는 기고자 라이센스 계약 (CLA)에 동의해야합니다. 자세한 내용은 https://cla.opensource.microsoft.com을 방문하십시오.
풀 요청을 제출할 때 CLA 봇은 CLA를 제공하고 PR을 적절하게 장식 해야하는지 자동으로 결정합니다 (예 : 상태 점검, 댓글). 봇이 제공 한 지침을 따르십시오. CLA를 사용하여 모든 저장소에서 한 번만이 작업을 수행하면됩니다.
이 프로젝트는 Microsoft 오픈 소스 행동 강령을 채택했습니다. 자세한 내용은 추가 질문이나 의견이 있으면 행동 강령 FAQ 또는 [email protected]에 문의하십시오.
이 프로젝트에는 프로젝트, 제품 또는 서비스에 대한 상표 또는 로고가 포함될 수 있습니다. Microsoft 상표 또는 로고의 승인 된 사용에는 Microsoft의 상표 및 브랜드 지침이 적용되며 따라야합니다. 이 프로젝트의 수정 된 버전에서 Microsoft 상표 또는 로고를 사용한다고해서 혼란을 일으키거나 Microsoft 후원을 암시해서는 안됩니다. 타사 상표 또는 로고를 사용하면 타사 정책이 적용됩니다.