Skip to content

Commit

Permalink
fix guess two third example
Browse files Browse the repository at this point in the history
  • Loading branch information
panxuchen committed Aug 13, 2024
1 parent 69dfd50 commit 0eb5983
Show file tree
Hide file tree
Showing 15 changed files with 167 additions and 134 deletions.
24 changes: 14 additions & 10 deletions examples/game_guess_two_third/benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ def setup_agent_server(
) -> None:
"""Start agent servers"""
os.system(
f"./start_cluster_server.sh {','.join(hosts)}"
f"./scripts/start_cluster_server.sh {','.join(hosts)}"
f" {agent_server_num} {env_server_num}",
)
time.sleep(10)


def clean_environment(hosts: list) -> None:
"""Clean the environment of the last run"""
os.system(f"./stop_cluster_server.sh {','.join(hosts)}")
os.system(f"./scripts/stop_cluster_server.sh {','.join(hosts)}")


def simulation(
Expand All @@ -39,12 +39,12 @@ def simulation(
hosts: list,
round: int,
ratio: str,
use_llm: bool,
agent_type: str,
) -> None:
"""Run the simulation."""
hosts = " ".join(hosts)
os.system(
f"python main.py --role main --hosts {hosts} --base-port 12330 --participant-num {participant_num} --server-per-host {agent_server_num} --moderator-per-host {env_server_num} --model-per-host {model_per_host} --agent-type {'llm' if use_llm else 'random'} --max-value 100 --model-name {model_name} --ann-id {sys_id} --pmt-id {usr_id} --exp-name {exp_name} --ratio {ratio} --round {round}", # noqa
f"python main.py --role main --hosts {hosts} --base-port 12330 --participant-num {participant_num} --agent-server-per-host {agent_server_num} --env-server-per-host {env_server_num} --model-per-host {model_per_host} --agent-type {agent_type} --max-value 100 --model-name {model_name} --sys-id {sys_id} --usr-id {usr_id} --exp-name {exp_name} --ratio {ratio} --round {round}", # noqa
)


Expand All @@ -60,7 +60,7 @@ def run_case(
hosts: list,
round: int,
ratio: str,
use_llm: bool,
agent_type: str,
) -> None:
"""Run an experiment case."""
clean_environment(hosts=hosts)
Expand All @@ -77,7 +77,7 @@ def run_case(
hosts=hosts,
round=round,
ratio=ratio,
use_llm=use_llm,
agent_type=agent_type,
)


Expand All @@ -99,8 +99,9 @@ def main(name: str = None, config: str = None) -> None:
hosts = ["worker1", "worker2", "worker3", "worker4"]
configs = load_exp_config(config)
for cfg in configs:
print(cfg)
run_case(
participant_num=cfg["pariticipant_num"],
participant_num=cfg["participant_num"],
agent_server_num=cfg["agent_server_num"],
env_server_num=cfg["env_server_num"],
model_per_host=cfg["model_per_host"],
Expand All @@ -111,19 +112,22 @@ def main(name: str = None, config: str = None) -> None:
exp_name=name,
round=cfg["round"],
ratio=cfg["ratio"],
use_llm=cfg["use_llm"],
agent_type=cfg["agent_type"],
)


if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--name", "-n", type=str, default="simulation")
parser.add_argument("--exp", "-c", type=str, default="exp")
parser.add_argument("--config", "-c", type=str, default="exp")
parser.add_argument(
"--hosts",
type=str,
nargs="+",
default=["worker1", "worker2", "worker3", "worker4"],
)
args = parser.parse_args()
main(name=args.name, config=os.path.join("./configs", f"{args.exp}.csv"))
main(
name=args.name,
config=os.path.join("./configs", f"{args.config}.csv"),
)
4 changes: 2 additions & 2 deletions examples/game_guess_two_third/configs/experiment.csv
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
pariticipant_num,par_server_num,mod_server_num,model_per_host,model_name,ann_id,pmt_id,host_num,ratio,round
1000,8,1,2,qwen2_72b,17,5,1,2/3,5
participant_num,agent_type,agent_server_num,env_server_num,model_per_host,model_name,sys_id,usr_id,host_num,ratio,round
8,random,4,1,2,qwen2_72b,1,1,1,2/3,3
33 changes: 23 additions & 10 deletions examples/game_guess_two_third/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@
import os

import agentscope
from agentscope.agents.rpc_agent import RpcAgentServerLauncher
from agentscope.server import RpcAgentServerLauncher

from utils.participant import (
RandomParticipant,
LLMParticipant,
ParserAgent,
Group,
GuessTwoThirdGame,
)

Expand All @@ -36,7 +37,7 @@ def parse_args() -> argparse.Namespace:
)
parser.add_argument(
"--agent-type",
choices=["random", "llm"],
choices=["random", "llm", "background"],
default="random",
)
parser.add_argument("--max-value", type=int, default=100)
Expand All @@ -50,17 +51,18 @@ def parse_args() -> argparse.Namespace:
parser.add_argument("--participant-num", type=int, default=100)
parser.add_argument("--base-port", type=int, default=12010)
parser.add_argument(
"--server-per-host",
"--agent-server-per-host",
type=int,
)
parser.add_argument("--model-per-host", type=int, default=1)
parser.add_argument("--group-per-host", type=int, default=1)
parser.add_argument("--ann-id", type=str, default="1")
parser.add_argument("--pmt-id", type=str, default="3")
parser.add_argument("--env-server-per-host", type=int, default=1)
parser.add_argument("--sys-id", type=str, default="1")
parser.add_argument("--usr-id", type=str, default="1")
parser.add_argument("--model-name", type=str, default="llama3_8b")
parser.add_argument("--exp-name", type=str, default="simulation")
parser.add_argument("--ratio", type=str, default="2/3")
parser.add_argument("--round", type=int, default=1)
parser.add_argument("--participant")
return parser.parse_args()


Expand All @@ -74,17 +76,18 @@ def setup_participant_agent_server(host: str, port: int) -> None:
save_api_invoke=False,
model_configs="configs/model_configs.json",
use_monitor=False,
logger_level="ERROR",
logger_level="INFO",
save_dir=SAVE_DIR,
)
assistant_server_launcher = RpcAgentServerLauncher(
host=host,
port=port,
max_pool_size=16384,
custom_agents=[
custom_agent_classes=[
RandomParticipant,
LLMParticipant,
ParserAgent,
Group,
],
)
assistant_server_launcher.launch(in_subprocess=False)
Expand All @@ -96,13 +99,23 @@ def setup_participant_agent_server(host: str, port: int) -> None:
if args.role == "participant":
setup_participant_agent_server(args.hosts[0], args.base_port)
elif args.role == "main":
agentscope.init(
project="simulation",
name="main",
runtime_id="main",
save_code=False,
save_api_invoke=False,
use_monitor=False,
logger_level="INFO",
save_dir=SAVE_DIR,
)
GuessTwoThirdGame(
hosts=args.hosts,
base_port=args.base_port,
participant_num=args.participant_num,
server_per_host=args.server_per_host,
agent_server_per_host=args.agent_server_per_host,
env_server_per_host=args.env_server_per_host,
model_per_host=args.model_per_host,
group_per_host=args.group_per_host,
agent_type=args.agent_type,
sleep_time=args.sleep_time,
max_value=args.max_value,
Expand Down
7 changes: 0 additions & 7 deletions examples/game_guess_two_third/script/remote_start.sh

This file was deleted.

13 changes: 0 additions & 13 deletions examples/game_guess_two_third/script/remote_stop.sh

This file was deleted.

13 changes: 0 additions & 13 deletions examples/game_guess_two_third/script/start_cluster_server.sh

This file was deleted.

10 changes: 0 additions & 10 deletions examples/game_guess_two_third/script/stop_cluster_server.sh

This file was deleted.

23 changes: 14 additions & 9 deletions ...uess_two_third/script/start_all_server.sh → ...ess_two_third/scripts/start_all_server.sh
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -3,39 +3,44 @@
# default values
base_port=12330
host_name="localhost"
moderator_num=4
env_server_num=4

# get number of server
if ! [[ "$1" =~ ^[0-9]+$ ]]; then
echo "Usage: $0 <number-of-server-for-participant>"
echo "Usage: $0 <agent-server-num>"
exit 1
fi

if [ "$#" -ge 2 ]; then

if ! [[ "$2" =~ ^[0-9]+$ ]]; then
echo "Usage: $0 <number-of-server-for-participant> [<moderator-num>]"
echo "Usage: $0 <agent-server-num> [<env-server-num> <hostname>]"
exit 1
fi

moderator_num=$2
env_server_num=$2
fi

if [ "$#" -ge 3 ]; then
host_name=$3
fi

participant_server_num=$1
agent_server_num=$1

# create files for pid
script_path=$(readlink -f "$0")
script_dir=$(dirname "$script_path")
upper_dir=$(dirname "$script_dir")
cd $upper_dir
touch .pid
# create log dir
mkdir -p log

# activate your environment
source /root/miniconda3/bin/activate as

# start all agent servers
for ((i=0; i<(participant_server_num + moderator_num); i++)); do
for ((i=0; i<(agent_server_num + env_server_num); i++)); do
port=$((base_port + i))
python main.py --role participant --hosts ${host_name} --base-port ${port} > /dev/null 2>&1 &
python main.py --role participant --hosts ${host_name} --base-port ${port} > log/$port 2>&1 &
echo $! >> .pid
echo "Started agent server on ${host_name}:${port} with PID $!"
done
Expand Down
16 changes: 16 additions & 0 deletions examples/game_guess_two_third/scripts/start_cluster_server.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/bash

IFS=',' read -r -a HOSTS <<< "$1"

agent_server_num=$2
env_server_num=$3

script_path=$(readlink -f "$0")
script_dir=$(dirname "$script_path")

for HOST in "${HOSTS[@]}"; do
echo "Starting server on $HOST"
ssh root@$HOST "cd $script_dir; ./start_all_server.sh $agent_server_num $env_server_num $HOST" &
done

echo "All servers started."
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
#!/bin/bash

script_path=$(readlink -f "$0")
script_dir=$(dirname "$script_path")
upper_dir=$(dirname "$script_dir")
cd $upper_dir

if [ ! -f .pid ]; then
echo "PID file not found. Are the servers running?"
exit 1
Expand Down
13 changes: 13 additions & 0 deletions examples/game_guess_two_third/scripts/stop_cluster_server.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash

IFS=',' read -r -a HOSTS <<< "$1"

script_path=$(readlink -f "$0")
script_dir=$(dirname "$script_path")

for HOST in "${HOSTS[@]}"; do
echo "Stopping server on $HOST"
ssh root@$HOST "cd $script_dir && ./stop_all_server.sh"
done

echo "All servers stopped."
File renamed without changes.
Loading

0 comments on commit 0eb5983

Please sign in to comment.