Skip to content

Commit

Permalink
Add comment for silencing and handle extra args
Browse files Browse the repository at this point in the history
  • Loading branch information
debermudez committed Mar 5, 2024
1 parent 432dc3c commit b4d2992
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 6 deletions.
1 change: 1 addition & 0 deletions src/c++/perf_analyzer/genai-pa/genai_pa/llm_metrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
18 changes: 17 additions & 1 deletion src/c++/perf_analyzer/genai-pa/genai_pa/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,21 @@
logger = logging.getLogger(LOGGER_NAME)


def handle_pass_through_args(args):
if args == None:

Check notice

Code scanning / CodeQL

Testing equality to None Note

Testing for None should use the 'is' operator.
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,
Expand All @@ -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:
Expand Down
4 changes: 2 additions & 2 deletions src/c++/perf_analyzer/genai-pa/genai_pa/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 ###
Expand Down
9 changes: 6 additions & 3 deletions src/c++/perf_analyzer/genai-pa/genai_pa/wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -56,14 +56,17 @@ 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"
cmd += f"--input-data ./input_data.json -p 10000 -s 99"
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)

0 comments on commit b4d2992

Please sign in to comment.