File size: 2,721 Bytes
22de727
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/bash -l
# RQ1 own-loop baselines on one GPU: the agent's released loop (src/miniweb/evaluation/ownloop_runner.py) against MiniWeb.
#   ownloop.sh <gpu> <vllm port> <model> <served> <agent: uitars|molmoweb|fara7b|opencua> <out name> <miniweb ports> [args]
# The run folder must hold tasks.json (python -m miniweb.evaluation.fara_rq1 prep --out <run> --split all); grade where the API
# keys are: python -m miniweb.evaluation.fara_rq1 grade --out <run> --arm <served>. Serving defaults per agent (env overrides them):
#   uitars    MM_LIMIT {"image": 5}: the agent sends its last 5 screenshots
#   molmoweb  --trust-remote-code (Molmo2's processor), bf16 (the checkpoints are fp32), causal attention on image tokens
#             (vLLM serves Molmo2 as a prefix LM; MolmoWeb is trained causal), MAX_MODEL_LEN 10240
#   fara7b    MM_LIMIT {"image": 3}: Fara-7B sends its last 3 screenshots
#   opencua   --trust-remote-code with the tokenizer of src/miniwebagent/scripts/cluster/opencua (see its NOTE.txt) and the vLLM plugin
#             in src/miniwebagent/scripts/cluster/opencua/plugin, on this server only
# Agent code on sys.path (OWNLOOP_PATH): microsoft/fara a675d6d (src) + browserbase 1.20.0, xlang-ai/OSWorld b138d34
# (mm_agents/opencua) + loguru. Fara1.5-4B runs in its own venv instead (src/miniweb/evaluation/fara_runner.py).
source "$(dirname "$0")/env.sh"
GPU=$1; VPORT=$2; MODEL=$3; SERVED=$4; AGENT=$5; NAME=$6; PORTS=$7; shift 7
HERE=$B/miniweb/experiments/cluster
node_db
SERVE_ENV=(CUDA_VISIBLE_DEVICES=$GPU PORT=$VPORT MODEL=$MODEL SERVED=$SERVED NO_LORA=1 CHAT_KWARGS=none)
case "$AGENT" in
  uitars)   SERVE_ENV+=(MM_LIMIT="${MM_LIMIT:-{\"image\": 5, \"video\": 0\}}") ;;
  molmoweb) SERVE_ENV+=(EXTRA_ARGS="${EXTRA_ARGS:---trust-remote-code --dtype bfloat16 --hf-overrides {\"is_mm_prefix_lm\":false\}}"
                        MAX_MODEL_LEN="${MAX_MODEL_LEN:-10240}") ;;
  fara7b)   SERVE_ENV+=(MM_LIMIT="${MM_LIMIT:-{\"image\": 3, \"video\": 0\}}") ;;
  opencua)  SERVE_ENV+=(MM_LIMIT="${MM_LIMIT:-{\"image\": 3, \"video\": 0\}}" PYTHONPATH=$HERE/opencua/plugin
                        EXTRA_ARGS="${EXTRA_ARGS:---trust-remote-code --tokenizer $B/opencua_tokenizer}") ;;
  *) echo "unknown agent $AGENT"; exit 2 ;;
esac
cd $B/miniweb
serve $B/logs/vllm_$NAME.log "${SERVE_ENV[@]}"
echo "$(date +%F\ %T) $AGENT $NAME ($MODEL) on GPU $GPU, vLLM :$VPORT, MiniWeb $PORTS: $*"
$B/menv/bin/python -m miniweb.evaluation.ownloop_runner $AGENT --tasks $B/eval/$NAME/tasks.json --out $B/eval/$NAME --ports $PORTS \
  --endpoint http://127.0.0.1:$VPORT/v1 --model $SERVED --path "${OWNLOOP_PATH:-$B/fara7b_pkgs:$B/fara/src:$B/opencua_pkgs:$B/osworld}" "$@"
echo "$(date +%F\ %T) OWNLOOP_DONE $NAME"