63 lines
2.1 KiB
Python
63 lines
2.1 KiB
Python
"""
|
|
blaze build -c opt //experimental/users/jietan/ARS:ars_server
|
|
|
|
blaze-bin/experimental/users/jietan/ARS/ars_server \
|
|
--config_name=MINITAUR_GYM_CONFIG
|
|
"""
|
|
|
|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
|
|
import time
|
|
from absl import app
|
|
from absl import flags
|
|
from concurrent import futures
|
|
import grpc
|
|
from grpc import loas2
|
|
from google3.robotics.reinforcement_learning.minitaur.envs import minitaur_gym_env
|
|
from google3.robotics.reinforcement_learning.minitaur.envs import minitaur_reactive_env
|
|
from google3.robotics.reinforcement_learning.minitaur.envs.env_randomizers import minitaur_env_randomizer
|
|
from google3.robotics.reinforcement_learning.minitaur.envs.env_randomizers import minitaur_env_randomizer_from_config as randomizer_config_lib
|
|
from google3.experimental.users.jietan.ARS import ars_evaluation_service_pb2_grpc
|
|
from google3.experimental.users.jietan.ARS import ars_evaluation_service
|
|
|
|
FLAGS = flags.FLAGS
|
|
flags.DEFINE_integer("server_id", 0, "number of servers")
|
|
flags.DEFINE_integer("port", 20000, "port number.")
|
|
flags.DEFINE_string("config_name", None, "The name of the config dictionary.")
|
|
flags.DEFINE_bool('run_on_borg', False,
|
|
'Whether the servers are running on borg.')
|
|
|
|
_ONE_DAY_IN_SECONDS = 60 * 60 * 24
|
|
|
|
|
|
def main(unused_argv):
|
|
servers = []
|
|
server_creds = loas2.loas2_server_credentials()
|
|
port = FLAGS.port
|
|
if not FLAGS.run_on_borg:
|
|
port = 20000 + FLAGS.server_id
|
|
server = grpc.server(
|
|
futures.ThreadPoolExecutor(max_workers=10), ports=(port,))
|
|
servicer = ars_evaluation_service.ParameterEvaluationServicer(
|
|
FLAGS.config_name, worker_id=FLAGS.server_id)
|
|
ars_evaluation_service_pb2_grpc.add_EvaluationServicer_to_server(
|
|
servicer, server)
|
|
server.add_secure_port("[::]:{}".format(port), server_creds)
|
|
servers.append(server)
|
|
server.start()
|
|
print("Start server {}".format(FLAGS.server_id))
|
|
|
|
# prevent the main thread from exiting
|
|
try:
|
|
while True:
|
|
time.sleep(_ONE_DAY_IN_SECONDS)
|
|
except KeyboardInterrupt:
|
|
for server in servers:
|
|
server.stop(0)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app.run(main)
|