Skip to content

Commit

Permalink
Handle pass through arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
debermudez committed Mar 5, 2024
1 parent b4d2992 commit ba0b428
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 21 deletions.
18 changes: 1 addition & 17 deletions src/c++/perf_analyzer/genai-pa/genai_pa/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,21 +50,6 @@
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,
Expand All @@ -89,8 +74,7 @@ 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)
args, extra_args = parser.parse_args(argv)
generate_inputs(args)
args.func(args, extra_args)
metrics = calculate_metrics(args.profile_export_file)
Expand Down
6 changes: 4 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 @@ -230,10 +230,12 @@ def parse_args(argv=None):
_add_endpoint_args(parser)
_add_dataset_args(parser)

args = parser.parse_args(argv)
args, extra_args = parser.parse_known_args(argv)
# strip off the "--" demarking the pass through arguments
extra_args = extra_args[1:]

args = _update_load_manager_args(args)
args = _verify_valid_arg_combination(args)
args = _prune_args(args)

return args
return args, extra_args
5 changes: 3 additions & 2 deletions src/c++/perf_analyzer/genai-pa/genai_pa/wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,9 @@ def build_cmd(model, args, extra_args):
arg = utils.convert_option_name(arg)
cmd += f"--{arg} {value} "

for arg in extra_args:
cmd += f"{arg} "
if extra_args is not None:
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"
Expand Down
7 changes: 7 additions & 0 deletions src/c++/perf_analyzer/genai-pa/tests/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,3 +97,10 @@ def test_arguments_model_not_provided(self):
def test_exception_on_nonzero_exit(self):
with pytest.raises(GenAiPAException) as e:
run(["-m", "nonexistent_model"])

def test_pass_through_args(self):
args = ["-m", "test_model", "--concurrency", "1"]
other_args = ["--", "With", "great", "power"]
_, pass_through_args = parser.parse_args(args + other_args)

assert pass_through_args == other_args[1:]

0 comments on commit ba0b428

Please sign in to comment.