-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathray_eval_server.py
More file actions
145 lines (137 loc) · 4.01 KB
/
ray_eval_server.py
File metadata and controls
145 lines (137 loc) · 4.01 KB
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
import os
import sys
import json
import ray
import argparse
current_dir = os.path.abspath(os.path.dirname(__file__))
sys.path.append(current_dir)
from genmanip.core.evaluator.eval_server import EvalServer
from genmanip.core.evaluator.isaac_worker_pool import IsaacWorkerPool
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser()
parser.add_argument(
"--host",
type=str,
default="0.0.0.0",
help="Host for the FastAPI server",
)
parser.add_argument(
"--port",
type=int,
default=8087,
help="Port for the FastAPI server",
)
parser.add_argument(
"--run_id",
default=None,
type=str,
help="Run id for the evaluation",
)
parser.add_argument(
"-l",
"--local",
action="store_true",
help="Run in local mode, a quick command to enable Isaac Sim GUI",
)
parser.add_argument(
"-n",
"--num_steps",
type=int,
default=None,
help="Number of steps to run the evaluation",
)
parser.add_argument(
"-ira",
"--is_relative_action",
action="store_true",
help="Run in relative action mode, the action is relative to the last action",
)
parser.add_argument(
"-wor",
"--without_render",
action="store_true",
help="Run in without render mode, only record the data",
)
parser.add_argument(
"-rr",
"--random_randomization",
action="store_true",
help="Run in random randomization mode, enable randomization configs in eval config",
)
parser.add_argument(
"--episode_recorder_save_every",
type=int,
default=0,
help="Save one episode recorder frame every N steps; 0 disables image saving (default: 0)",
)
parser.add_argument(
"--save_process",
dest="save_process",
action="store_true",
default=True,
help="Save server-side process artifacts such as trajectory metadata, videos, and RRD files (default: enabled)",
)
parser.add_argument(
"--no_save_process",
dest="save_process",
action="store_false",
help="Disable saving server-side process artifacts",
)
parser.add_argument(
"--step_timeout",
type=float,
default=600.0,
help="Server timeout for /step in seconds (default: 600)",
)
parser.add_argument(
"--reset_timeout",
type=float,
default=600.0,
help="Server timeout for /reset in seconds (default: 600)",
)
parser.add_argument(
"--create_timeout",
type=float,
default=600.0,
help="Server timeout for /create_workers in seconds (default: 600)",
)
parser.add_argument(
"--kill_timeout",
type=float,
default=120.0,
help="Server timeout for /kill in seconds (default: 120)",
)
parser.add_argument(
"--load_config_timeout",
type=float,
default=60.0,
help="Server timeout for /start_new_job in seconds (default: 60)",
)
parser.add_argument(
"--worker_restart_memory_gib",
type=float,
default=15.0,
help="Restart a worker actor during reset when its VmRSS exceeds this threshold in GiB; <=0 disables (default: 15)",
)
return parser.parse_args()
if __name__ == "__main__":
args = parse_args()
print("Starting Ray Eval Server...")
ray_context = ray.init()
print(ray.cluster_resources())
server = EvalServer(
args.host,
args.port,
workers=1,
step_timeout=args.step_timeout,
reset_timeout=args.reset_timeout,
create_timeout=args.create_timeout,
kill_timeout=args.kill_timeout,
load_config_timeout=args.load_config_timeout,
)
print("Creating Worker Pool...")
pool = IsaacWorkerPool(
args, current_dir, world_size=ray.cluster_resources().get("GPU", 0)
)
server.register_worker_pool(pool)
server.run()