Skip to content

Commit ba55116

Browse files
committed
fix(pd): initialize model metadata on master
1 parent 031d915 commit ba55116

2 files changed

Lines changed: 27 additions & 2 deletions

File tree

lightllm/server/api_http.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,9 @@ def set_args(self, args: StartArgs):
9898
CompletionRequest.load_generation_cfg(args.model_dir)
9999
ChatCompletionRequest.load_generation_cfg(args.model_dir)
100100

101+
if self.model_created is None:
102+
self.model_created = int(time.time())
103+
101104
if args.run_mode == "pd_master":
102105
self.metric_client = MetricClient(get_shm_port_args().metric_port)
103106
self.httpserver_manager = HttpServerManagerForPDMaster(
@@ -108,8 +111,6 @@ def set_args(self, args: StartArgs):
108111
self.httpserver_manager = HttpServerManager(args=args)
109112
dp_size_in_node = max(1, args.dp // args.nnodes) # 兼容多机纯tp的运行模式,这时候 1 // 2 == 0, 需要兼容
110113
self.shared_token_load = TokenLoad(f"{get_unique_server_name()}_shared_token_load", dp_size_in_node)
111-
if self.model_created is None:
112-
self.model_created = int(time.time())
113114

114115

115116
g_objs = G_Objs()

unit_tests/server/test_pd_master_mode.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,30 @@
88
from lightllm.server.httpserver_for_pd_master.manager import HttpServerManagerForPDMaster, PDManager
99

1010

11+
def test_pd_master_models_endpoint_has_created_timestamp(monkeypatch):
12+
from lightllm.server import api_http
13+
14+
args = StartArgs(run_mode="pd_master", model_dir="/tmp/test-model", model_name="test-model")
15+
manager = SimpleNamespace(get_real_supported_max_req_total_len=lambda: 1024)
16+
monkeypatch.setattr(api_http, "init_tokenizer", lambda *_args, **_kwargs: None)
17+
monkeypatch.setattr(api_http.SamplingParams, "load_generation_cfg", lambda _model_dir: None)
18+
monkeypatch.setattr(api_http.CompletionRequest, "load_generation_cfg", lambda _model_dir: None)
19+
monkeypatch.setattr(api_http.ChatCompletionRequest, "load_generation_cfg", lambda _model_dir: None)
20+
monkeypatch.setattr(api_http, "MetricClient", lambda _port: object())
21+
monkeypatch.setattr(api_http, "get_shm_port_args", lambda: SimpleNamespace(metric_port=1234))
22+
monkeypatch.setattr(api_http, "HttpServerManagerForPDMaster", lambda args: manager)
23+
monkeypatch.setattr(api_http, "get_unique_server_name", lambda: "test-server")
24+
monkeypatch.setattr(api_http.setproctitle, "setproctitle", lambda _title: None)
25+
monkeypatch.setattr(api_http.time, "time", lambda: 1234.9)
26+
27+
global_objs = api_http.G_Objs()
28+
global_objs.set_args(args)
29+
monkeypatch.setattr(api_http, "g_objs", global_objs)
30+
31+
response = asyncio.run(api_http.get_models(None))
32+
assert response.data[0].created == 1234
33+
34+
1135
def test_elastic_pd_nodes_are_ready_with_at_least_one_node_of_each_role():
1236
manager = PDManager(StartArgs(pd_master_mode="elastic"))
1337
assert manager.is_pd_nodes_ready() is False

0 commit comments

Comments
 (0)