Tiny support printing requests in bench_serving for observability (#14652)
This commit is contained in:
@@ -23,8 +23,10 @@ import shutil
|
|||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
|
import uuid
|
||||||
import warnings
|
import warnings
|
||||||
from argparse import ArgumentParser
|
from argparse import ArgumentParser
|
||||||
|
from copy import deepcopy
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from functools import lru_cache
|
from functools import lru_cache
|
||||||
@@ -319,6 +321,16 @@ async def async_request_openai_chat_completions(
|
|||||||
"chat/completions"
|
"chat/completions"
|
||||||
), "OpenAI Chat Completions API URL must end with 'chat/completions'."
|
), "OpenAI Chat Completions API URL must end with 'chat/completions'."
|
||||||
|
|
||||||
|
# TODO put it to other functions when `pbar` logic is refactored
|
||||||
|
if getattr(args, "print_requests", False):
|
||||||
|
rid = str(uuid.uuid4())
|
||||||
|
input_partial = deepcopy(request_func_input)
|
||||||
|
input_partial.prompt = "..."
|
||||||
|
request_start_time = time.time()
|
||||||
|
print(
|
||||||
|
f'rid={rid} time={request_start_time} message="request start" request_func_input="{str(input_partial)}"'
|
||||||
|
)
|
||||||
|
|
||||||
if request_func_input.image_data:
|
if request_func_input.image_data:
|
||||||
# Build multi-image content: a list of image_url entries followed by the text
|
# Build multi-image content: a list of image_url entries followed by the text
|
||||||
content_items = [
|
content_items = [
|
||||||
@@ -435,6 +447,15 @@ async def async_request_openai_chat_completions(
|
|||||||
exc_info = sys.exc_info()
|
exc_info = sys.exc_info()
|
||||||
output.error = "".join(traceback.format_exception(*exc_info))
|
output.error = "".join(traceback.format_exception(*exc_info))
|
||||||
|
|
||||||
|
# TODO put it to other functions when `pbar` logic is refactored
|
||||||
|
if getattr(args, "print_requests", False):
|
||||||
|
curr_t = time.time()
|
||||||
|
output_partial = deepcopy(output)
|
||||||
|
output_partial.generated_text = "..."
|
||||||
|
print(
|
||||||
|
f'rid={rid} time={curr_t} time_delta={curr_t - request_start_time} message="request end" output="{str(output_partial)}"'
|
||||||
|
)
|
||||||
|
|
||||||
if pbar:
|
if pbar:
|
||||||
pbar.update(1)
|
pbar.update(1)
|
||||||
return output
|
return output
|
||||||
@@ -2327,6 +2348,9 @@ def run_benchmark(args_: argparse.Namespace):
|
|||||||
if not hasattr(args, "served_model_name"):
|
if not hasattr(args, "served_model_name"):
|
||||||
args.served_model_name = None
|
args.served_model_name = None
|
||||||
|
|
||||||
|
if getattr(args, "print_requests", False):
|
||||||
|
assert args.backend == "sglang-oai-chat" # only support this now
|
||||||
|
|
||||||
print(f"benchmark_args={args}")
|
print(f"benchmark_args={args}")
|
||||||
|
|
||||||
# Set global environments
|
# Set global environments
|
||||||
@@ -2665,6 +2689,11 @@ if __name__ == "__main__":
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--output-details", action="store_true", help="Output details of benchmarking."
|
"--output-details", action="store_true", help="Output details of benchmarking."
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--print-requests",
|
||||||
|
action="store_true",
|
||||||
|
help="Print requests immediately during benchmarking. Useful to quickly realize issues.",
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--disable-tqdm",
|
"--disable-tqdm",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
|
|||||||
Reference in New Issue
Block a user