| 27 | |
| 28 | |
| 29 | def start_servers( |
| 30 | server_count=None, |
| 31 | device_count=None, |
| 32 | server_args=None, |
| 33 | ports=None, |
| 34 | metrics_ports=None, |
| 35 | controller_ports=None, |
| 36 | ): |
| 37 | ports = ports.split(",") |
| 38 | if not check_param(ports, server_count): |
| 39 | return |
| 40 | |
| 41 | if metrics_ports != "-1": |
| 42 | metrics_ports = metrics_ports.split(",") |
| 43 | if not check_param(metrics_ports, server_count): |
| 44 | return |
| 45 | |
| 46 | if controller_ports != "-1": |
| 47 | controller_ports = controller_ports.split(",") |
| 48 | if not check_param(controller_ports, server_count): |
| 49 | return |
| 50 | else: |
| 51 | controller_ports = [-1] * server_count |
| 52 | |
| 53 | logger.info(f"Starting servers on ports: {ports} with args: {server_args} and metrics ports: {metrics_ports}") |
| 54 | port_idx = {} |
| 55 | for i in range(len(server_args)): |
| 56 | if server_args[i] == "--engine-worker-queue-port": |
| 57 | port_idx["engine_worker_queue_port"] = i + 1 |
| 58 | if server_args[i] == "--cache-queue-port": |
| 59 | port_idx["cache_queue_port"] = i + 1 |
| 60 | if server_args[i] == "--pd-comm-port": |
| 61 | port_idx["pd_comm_port"] = i + 1 |
| 62 | if server_args[i] == "--rdma-comm-ports": |
| 63 | port_idx["rdma_comm_ports"] = i + 1 |
| 64 | |
| 65 | if "engine_worker_queue_port" not in port_idx: |
| 66 | port = find_free_ports(num_ports=server_count) |
| 67 | server_args += ["--engine-worker-queue-port", ",".join(map(str, port))] |
| 68 | port_idx["engine_worker_queue_port"] = len(server_args) - 1 |
| 69 | logger.info(f"No --engine-worker-queue-port specified, using random ports: {port}") |
| 70 | engine_worker_queue_port = server_args[port_idx["engine_worker_queue_port"]].split(",") |
| 71 | if not check_param(engine_worker_queue_port, server_count): |
| 72 | return |
| 73 | |
| 74 | if "cache_queue_port" not in port_idx: |
| 75 | port = find_free_ports(num_ports=server_count) |
| 76 | server_args += ["--cache-queue-port", ",".join(map(str, port))] |
| 77 | port_idx["cache_queue_port"] = len(server_args) - 1 |
| 78 | logger.info(f"No --cache-queue-port specified, using random ports: {port}") |
| 79 | cache_queue_port = server_args[port_idx["cache_queue_port"]].split(",") |
| 80 | if not check_param(cache_queue_port, server_count): |
| 81 | return |
| 82 | |
| 83 | if "pd_comm_port" not in port_idx: |
| 84 | port = find_free_ports(num_ports=server_count) |
| 85 | server_args += ["--pd-comm-port", ",".join(map(str, port))] |
| 86 | port_idx["pd_comm_port"] = len(server_args) - 1 |