From b4d299217a7ac1467bf4195ca05b0b05a3c03d1d Mon Sep 17 00:00:00 2001 From: Elias Bermudez Date: Mon, 4 Mar 2024 18:12:48 -0800 Subject: [PATCH] Add comment for silencing and handle extra args --- .../genai-pa/genai_pa/llm_metrics.py | 1 + .../perf_analyzer/genai-pa/genai_pa/main.py | 18 +++++++++++++++++- .../perf_analyzer/genai-pa/genai_pa/parser.py | 4 ++-- .../perf_analyzer/genai-pa/genai_pa/wrapper.py | 9 ++++++--- 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/c++/perf_analyzer/genai-pa/genai_pa/llm_metrics.py b/src/c++/perf_analyzer/genai-pa/genai_pa/llm_metrics.py index 2716a799f..80230d176 100755 --- a/src/c++/perf_analyzer/genai-pa/genai_pa/llm_metrics.py +++ b/src/c++/perf_analyzer/genai-pa/genai_pa/llm_metrics.py @@ -34,6 +34,7 @@ import numpy as np from genai_pa.utils import load_json +# Silence tokenizer warning on import with contextlib.redirect_stdout(io.StringIO()) as stdout, contextlib.redirect_stderr( io.StringIO() ) as stderr: diff --git a/src/c++/perf_analyzer/genai-pa/genai_pa/main.py b/src/c++/perf_analyzer/genai-pa/genai_pa/main.py index c620ea415..62de8b809 100755 --- a/src/c++/perf_analyzer/genai-pa/genai_pa/main.py +++ b/src/c++/perf_analyzer/genai-pa/genai_pa/main.py @@ -50,6 +50,21 @@ logger = logging.getLogger(LOGGER_NAME) +def handle_pass_through_args(args): + if args == None: + args = sys.argv + + extra_args = [] + if "--" in args: + index = args.index("--") + if index != (len(args) - 1): + extra_args = args[index + 1 : -1] + args = args[1:index] + else: + args = args[1:] + return args, extra_args + + def generate_inputs(args): LlmInputs.create_openai_llm_inputs( args.dataset, @@ -74,9 +89,10 @@ def report_output(metrics: LLMProfileData): # Optional argv used for testing - will default to sys.argv if None. def run(argv=None): try: + argv, extra_args = handle_pass_through_args(argv) args = parser.parse_args(argv) generate_inputs(args) - args.func(args) + args.func(args, extra_args) metrics = calculate_metrics(args.profile_export_file) report_output(metrics) except Exception as e: diff --git a/src/c++/perf_analyzer/genai-pa/genai_pa/parser.py b/src/c++/perf_analyzer/genai-pa/genai_pa/parser.py index 6a1ba6a28..d88d33dad 100644 --- a/src/c++/perf_analyzer/genai-pa/genai_pa/parser.py +++ b/src/c++/perf_analyzer/genai-pa/genai_pa/parser.py @@ -73,10 +73,10 @@ def _verify_valid_arg_combination( ### Handlers ### -def handler(args): +def handler(args, extra_args): from genai_pa.wrapper import Profiler - Profiler.run(model=args.model, args=args) + Profiler.run(model=args.model, args=args, extra_args=extra_args) ### Parsers ### diff --git a/src/c++/perf_analyzer/genai-pa/genai_pa/wrapper.py b/src/c++/perf_analyzer/genai-pa/genai_pa/wrapper.py index d74284b9a..d71a921ee 100644 --- a/src/c++/perf_analyzer/genai-pa/genai_pa/wrapper.py +++ b/src/c++/perf_analyzer/genai-pa/genai_pa/wrapper.py @@ -35,7 +35,7 @@ class Profiler: @staticmethod - def build_cmd(model, args): + def build_cmd(model, args, extra_args): skip_args = ["model", "func", "dataset"] if hasattr(args, "version"): cmd = f"perf_analyzer --version" @@ -56,6 +56,9 @@ def build_cmd(model, args): else: arg = utils.convert_option_name(arg) cmd += f"--{arg} {value} " + + for arg in extra_args: + cmd += f"{arg} " # TODO: Once the OpenAI endpoint support is in place in PA core, # update the input-data option arg # cmd += f"--input-data {DEFAULT_INPUT_DATA_JSON} -p 10000 -s 99" @@ -63,7 +66,7 @@ def build_cmd(model, args): return cmd @staticmethod - def run(model, args=None): - cmd = Profiler.build_cmd(model, args) + def run(model, args=None, extra_args=None): + cmd = Profiler.build_cmd(model, args, extra_args) logger.info(f"Running Perf Analyzer : '{cmd}'") subprocess.run(cmd, shell=True, check=True)