Skip to content

Commit d709975

Browse files
committed
[LLM] update random port
1 parent f7d5e20 commit d709975

File tree

6 files changed

+33
-19
lines changed

6 files changed

+33
-19
lines changed

fastdeploy/engine/args_utils.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,9 @@ class EngineArgs:
123123
Ratio of tokens to process in a block.
124124
"""
125125

126-
dist_init_addr: Optional[str] = None
126+
dist_init_ip: Optional[str] = None
127127
"""
128-
The master node address of multinode deployment
128+
The master node ip of multinode deployment
129129
"""
130130

131131
nnodes: int = 1
@@ -509,7 +509,7 @@ def add_cli_args(parser: FlexibleArgumentParser) -> FlexibleArgumentParser:
509509
system_group = parser.add_argument_group("System Configuration")
510510
system_group.add_argument(
511511
"--dist-init-addr",
512-
default=EngineArgs.dist_init_addr,
512+
default=EngineArgs.dist_init_ip,
513513
help=
514514
"IP addresses of master node.")
515515

@@ -816,7 +816,7 @@ def create_engine_config(self) -> Config:
816816
max_num_seqs=self.max_num_seqs,
817817
speculative_config=speculative_cfg,
818818
max_num_batched_tokens=self.max_num_batched_tokens,
819-
dist_init_addr=self.dist_init_addr,
819+
dist_init_ip=self.dist_init_ip,
820820
nnodes=self.nnodes,
821821
node_rank=self.node_rank,
822822
use_warmup=self.use_warmup,

fastdeploy/engine/config.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from fastdeploy.platforms import current_platform
2525
from fastdeploy.scheduler import SchedulerConfig
2626
from fastdeploy.utils import (ceil_div, check_unified_ckpt, get_host_ip,
27-
is_port_available, llm_logger)
27+
is_port_available, get_random_port, llm_logger)
2828

2929
TaskOption = Literal["generate"]
3030

@@ -571,7 +571,7 @@ def __init__(
571571
max_model_len: int = 8192,
572572
max_num_seqs: int = 8,
573573
max_num_batched_tokens: Optional[int] = None,
574-
dist_init_addr: str = None,
574+
dist_init_ip: str = None,
575575
nnodes: int = 1,
576576
node_rank: int = 0,
577577
speculative_config: Optional[Dict[str, Any]] = None,
@@ -631,13 +631,13 @@ def __init__(
631631
self.max_num_batched_tokens = max_num_batched_tokens
632632
self.tensor_parallel_size = tensor_parallel_size
633633

634-
self.dist_init_addr = dist_init_addr
635634
self.nnode = nnodes
636635
self.node_rank = node_rank
637-
if self.dist_init_addr is None:
636+
if self.dist_init_ip is None:
638637
self.master_ip = "0.0.0.0"
639638
else:
640-
self.master_ip = self.dist_init_addr.split(":")[0]
639+
self.master_ip = self.dist_init_ip
640+
self.dist_init_addr = f"{self.dist_init_ip}:{get_random_port()}"
641641

642642
self.max_model_len = max_model_len
643643
self.max_num_seqs = max_num_seqs
@@ -713,7 +713,7 @@ def postprocess(self):
713713

714714
self.host_ip = get_host_ip()
715715

716-
if self.dist_init_addr is None or self.host_ip == self.master_ip:
716+
if self.dist_init_ip is None or self.host_ip == self.master_ip:
717717
self.is_master = True
718718
else:
719719
self.is_master = False

fastdeploy/entrypoints/openai/api_server.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,8 @@ async def lifespan(app: FastAPI):
121121
args.mm_processor_kwargs, args.enable_mm,
122122
args.reasoning_parser)
123123
app.state.dynamic_load_weight = args.dynamic_load_weight
124-
chat_handler = OpenAIServingChat(engine_client, pid, args.dist_init_addr)
125-
completion_handler = OpenAIServingCompletion(engine_client, pid, args.dist_init_addr)
124+
chat_handler = OpenAIServingChat(engine_client, pid, args.dist_init_ip)
125+
completion_handler = OpenAIServingCompletion(engine_client, pid, args.dist_init_ip)
126126
engine_client.create_zmq_client(model=pid, mode=zmq.PUSH)
127127
engine_client.pid = pid
128128
app.state.engine_client = engine_client

fastdeploy/entrypoints/openai/serving_chat.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,16 @@ class OpenAIServingChat:
3939
OpenAI-style chat completions serving
4040
"""
4141

42-
def __init__(self, engine_client, pid, dist_init_addr):
42+
def __init__(self, engine_client, pid, dist_init_ip):
4343
self.engine_client = engine_client
4444
self.pid = pid
45-
self.master_ip = dist_init_addr
45+
self.master_ip = dist_init_ip
4646
self.host_ip = get_host_ip()
4747

4848
def _check_master(self):
4949
if self.master_ip is None:
5050
return True
51-
if self.host_ip == self.master_ip.split(":")[0]:
51+
if self.host_ip == self.master_ip
5252
return True
5353
return False
5454

fastdeploy/entrypoints/openai/serving_completion.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,16 @@
4444

4545

4646
class OpenAIServingCompletion:
47-
def __init__(self, engine_client, pid, dist_init_addr):
47+
def __init__(self, engine_client, pid, dist_init_ip):
4848
self.engine_client = engine_client
4949
self.pid = pid
50-
self.master_ip = dist_init_addr
50+
self.master_ip = dist_init_ip
5151
self.host_ip = get_host_ip()
5252

5353
def _check_master(self):
5454
if self.master_ip is None:
5555
return True
56-
if self.host_ip == self.master_ip.split(":")[0]:
56+
if self.host_ip == self.master_ip
5757
return True
5858
return False
5959

fastdeploy/utils.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
from logging.handlers import BaseRotatingHandler
2828
from pathlib import Path
2929
from typing import Literal, TypeVar, Union
30-
30+
import random
31+
import socket
3132
import requests
3233
import yaml
3334
from aistudio_sdk.snapshot_download import snapshot_download
@@ -443,6 +444,19 @@ def get_host_ip():
443444
return ip
444445

445446

447+
448+
449+
def get_random_port():
450+
while True:
451+
port = random.randint(49152, 65535)
452+
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
453+
try:
454+
s.bind(("0.0.0.0", port))
455+
return port
456+
except OSError:
457+
continue
458+
459+
446460
def is_port_available(host, port):
447461
"""
448462
Check the port is available

0 commit comments

Comments
 (0)