Use ipc instead of tcp in zmq (#1566)
This commit is contained in:
@@ -19,9 +19,10 @@ import argparse
|
||||
import dataclasses
|
||||
import logging
|
||||
import random
|
||||
from typing import List, Optional, Union
|
||||
import tempfile
|
||||
from typing import List, Optional
|
||||
|
||||
from sglang.srt.utils import is_hip, is_ipv6
|
||||
from sglang.srt.utils import is_hip, is_ipv6, is_port_available
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -46,7 +47,6 @@ class ServerArgs:
|
||||
# Port
|
||||
host: str = "127.0.0.1"
|
||||
port: int = 30000
|
||||
additional_ports: Optional[Union[List[int], int]] = None
|
||||
|
||||
# Memory and scheduling
|
||||
mem_fraction_static: Optional[float] = None
|
||||
@@ -134,11 +134,6 @@ class ServerArgs:
|
||||
else:
|
||||
self.mem_fraction_static = 0.88
|
||||
|
||||
if isinstance(self.additional_ports, int):
|
||||
self.additional_ports = [self.additional_ports]
|
||||
elif self.additional_ports is None:
|
||||
self.additional_ports = []
|
||||
|
||||
if self.random_seed is None:
|
||||
self.random_seed = random.randint(0, 1 << 30)
|
||||
|
||||
@@ -199,13 +194,6 @@ class ServerArgs:
|
||||
parser.add_argument(
|
||||
"--port", type=int, default=ServerArgs.port, help="The port of the server."
|
||||
)
|
||||
parser.add_argument(
|
||||
"--additional-ports",
|
||||
type=int,
|
||||
nargs="*",
|
||||
default=[],
|
||||
help="The additional ports specified for the server.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--tokenizer-mode",
|
||||
type=str,
|
||||
@@ -625,16 +613,31 @@ def prepare_server_args(argv: List[str]) -> ServerArgs:
|
||||
|
||||
@dataclasses.dataclass
|
||||
class PortArgs:
|
||||
# The port for tokenizer to receive inputs from detokenizer (zmq)
|
||||
tokenizer_port: int
|
||||
# The port for scheduler (rank 0) to receive inputs from tokenizer (zmq)
|
||||
scheduler_input_port: int
|
||||
# The port for detokenizer to receive inputs from scheduler (zmq)
|
||||
detokenizer_port: int
|
||||
# The ipc filename for tokenizer to receive inputs from detokenizer (zmq)
|
||||
tokenizer_ipc_name: str
|
||||
# The ipc filename for scheduler (rank 0) to receive inputs from tokenizer (zmq)
|
||||
scheduler_input_ipc_name: str
|
||||
# The ipc filename for detokenizer to receive inputs from scheduler (zmq)
|
||||
detokenizer_ipc_name: str
|
||||
|
||||
# The port for nccl initialization for multiple TP groups (torch.dist)
|
||||
nccl_ports: List[int]
|
||||
|
||||
@classmethod
|
||||
def init_new(self, server_args):
|
||||
port = server_args.port + 1
|
||||
while True:
|
||||
if is_port_available(port):
|
||||
break
|
||||
port += 1
|
||||
|
||||
return PortArgs(
|
||||
tokenizer_ipc_name=tempfile.NamedTemporaryFile(delete=False).name,
|
||||
scheduler_input_ipc_name=tempfile.NamedTemporaryFile(delete=False).name,
|
||||
detokenizer_ipc_name=tempfile.NamedTemporaryFile(delete=False).name,
|
||||
nccl_ports=[port],
|
||||
)
|
||||
|
||||
|
||||
class LoRAPathAction(argparse.Action):
|
||||
def __call__(self, parser, namespace, values, option_string=None):
|
||||
|
||||
Reference in New Issue
Block a user