
Windowsエージェントアリーナ(WAA)?マルチモーダルのデスクトップAIエージェントをテストおよびベンチマークするためのスケーラブルなWindows AIエージェントプラットフォームです。 WAAは、研究者と開発者に、AI研究のための再現性のある現実的なWindows OS環境を提供します。そこでは、エージェントAIワークフローを多様な範囲のタスクでテストできます。
WAAは、Azure MLクラウドインフラストラクチャを使用して、エージェントの規模の展開をサポートし、複数のエージェントの並列実行を可能にし、数百のタスクのクイックベンチマーク結果を数日ではなく数分で提供します。
src/win-arena-container/start_client.shでデフォルトのdiff_lvl="normal"をdiff_lvl="hard"に変更することにより、新しい難易度モードを試すことができます。困難な困難なことに、多くのタスクでは、エージェントはタスクによってタスクを「設定」するのではなく、タスク自体(例えば、タスクの適切なプログラム/アプリケーションを見つけて開く)を学ぶ必要があります。 config。./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必要なキーを使用してプロジェクトのルートで新しいconfig.jsonを作成します(OpenaiまたはAzureエンドポイントから):
{
"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 Golden Imageとも呼ばれます)。この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には、次のファイルで構成される30GB WAAゴールデンイメージがあります。

src/win-arena-containerディレクトリで行われた変更を含めたい場合は、flag - run-local.sh --skip-build falseにfalseを指定してください(デフォルトで真実)。これにより、事前に構築されたwindowsarena/winarena:latest画像を使用する代わりに、新しいコンテナ画像が構築されることが保証されます。storageのコンテンツを削除してください。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を開き、エージェントが実行されているWindows VMを確認します。 Beefy 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コンテナ内で実行されているコードを開発/デバッグするのは難しいように思えるかもしれません。ただし、このプロセスを簡単にするためのヒントをいくつか提供しています。次のような詳細については、開発-TIPSドキュメントを確認してください。
Azure ML Compute VMSでWindowsエージェントアリーナを実行するシームレスな方法を提供します。このオプションは、すべてのベンチマークタスクでエージェントを数時間/日から数分までテストするのに必要な時間を大幅に短縮します。
AZURE_SUBSCRIPTION_IDとして使用します。agentsなど)を作成します。リソースグループ名に注意してください。セクション3のAZURE_ML_RESOURCE_GROUPとして使用します。agents_mlという名前)を作成します。 MLワークスペース名に注意して、セクション3のAZURE_ML_WORKSPACE_NAMEとして使用します。作成ウィザードの作成中に、新しい作成のためにボックスを確認してください。
agents )をクリックします
Notebooksタブに移動します。ユーザーが割り当てたフォルダー(下の図に示すように)で、 compute-instance-startup.shという名前の新しいbash(.sh)ファイルを作成します。 scripts/azure_files/compute-instance-startup.shのコンテンツをこのファイルにコピーして保存します。このスクリプトは、新しいVMがAzureで起動するたびに使用され、いくつかのベース構成を適用します。ファイルを保存するパス( Users/<YOUR_USER>/compute-instance-startup.sh )に注意して、セクション3でスクリプトを実行するためにそれを使用します。 
Standard_D8_v3 VMサイズを使用しています。これは、 Standard Dv3 Family Cluster Dedicated vCPUsカテゴリに該当します。各VMは8つのコアを使用します。使用するマシンタイプがネストされた仮想化をサポートしていることを確認してください。 
Windows 11ストレージフォルダーを、デフォルトのデータストアに関連付けられたBLOBコンテナにアップロードします。デフォルトでは、Azure ML Workspaceの基礎となるデータは、1つ以上のMLデータストアを介してストレージアカウントによって裏付けられています。 workspaceblobstoreという名前のデフォルトのデータストアは、ワークスペースのセットアップ中に作成され、Azureストレージアカウントの下の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レジストリにカスタム画像をアップロードできます。 Azure Containerレジストリドキュメントに従うことで、そうすることができます
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という名前の新しいファイルを作成して、展開するエージェントや使用する基礎となるLLMモデルなど、各実験に必要なパラメーターを指定します。参照experiments.json scripts/experiments.jsonで実行する複数の実験で構成されています。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インスタンスVMを作成します。<exp_name>という名前の1 mlのトレーニングジョブを実行します。実行からのログは、Windows 11イメージをアップロードした同じブロブコンテナのagent_outputsフォルダーに保存されます。 agent_outputsフォルダーをローカルマシンにダウンロードし、 show_azure.pyスクリプトを実行して、すべての実験の結果をマークダウンテーブルとして確認できます。
cd scripts
python show_azure.py --json_config " experiments.json " --result_dir < path_to_downloaded_agent_outputs_folder > Windowsエージェントアリーナで自分のエージェントをテストしたいですか?デフォルトエージェントをテンプレートとして使用し、 src/win-arena-container/client/mm_agentsの下に独自のフォルダーを作成できます。 agent.pyファイルがpredict()およびreset()関数を備えていることを確認する必要があります。エージェント開発の詳細については、BYOA Docをご覧ください。
Windowsエージェントアリーナプロジェクトへの貢献を歓迎します。特に、私たちは歓迎します:
貢献に興味がある場合は、タスク開発ガイドラインをご覧ください。
| 成分 | 料金 | 時間 |
|---|---|---|
| Azure Standard_D8_V3 VM | 〜$ 8($ 0.38/h * 40 * 0.5h) | |
| GPT-4V | 100ドル | 40 VMで〜35分 |
| GPT-4O | 100ドル | 40 VMで〜35分 |
| GPT-4O-MINI | 15ドル | 40 VMで〜30分 |
デフォルトでは、 run-local.shスクリプトは、8 GBの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でベンチマークを実行するためにゴールデンイメージを準備することをお勧めします。
このプロジェクトは、貢献と提案を歓迎します。ほとんどの貢献では、貢献者ライセンス契約(CLA)に同意する必要があります。詳細については、https://cla.opensource.microsoft.comをご覧ください。
プルリクエストを送信すると、CLAボットはCLAを提供し、PRを適切に飾る必要があるかどうかを自動的に決定します(たとえば、ステータスチェック、コメント)。ボットが提供する指示に従うだけです。 CLAを使用して、すべてのレポでこれを1回だけ行う必要があります。
このプロジェクトは、Microsoftのオープンソース行動規範を採用しています。詳細については、FAQのコードを参照するか、追加の質問やコメントについては[email protected]にお問い合わせください。
このプロジェクトには、プロジェクト、製品、またはサービスの商標またはロゴが含まれる場合があります。 Microsoftの商標またはロゴの承認された使用は、Microsoftの商標およびブランドガイドラインに従うものであり、従わなければなりません。このプロジェクトの変更されたバージョンでのMicrosoft商標またはロゴの使用は、混乱を引き起こしたり、Microsoftのスポンサーシップを暗示したりしてはなりません。サードパーティの商標またはロゴの使用は、これらのサードパーティのポリシーの対象となります。