Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/mlperf-inference-resnet50.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ jobs:
- name: Test MLPerf inference ResNet50 on Windows (prebuilt loadgen)
if: runner.os == 'Windows'
run: |
git config --system core.longpaths true
mlc run script --tags=run-mlperf,inference,_submission,_short --submitter="MLCommons" --hw_name=gh_action --model=resnet50 --implementation=${{ matrix.implementation }} --backend=${{ matrix.backend }} --device=cpu --scenario=Offline --test_query_count=100 --target_qps=1 -v --quiet --adr.loadgen.tags=_from-pip --pip_loadgen=yes

- name: Test MLPerf inference ResNet50 on Unix systems
Expand Down
9 changes: 9 additions & 0 deletions mlc/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,14 @@ def process_console_output(res, target, action, run_args):
log_flag_aliases = {'-v': '--verbose', '-s': '--silent'}
log_levels = {'--verbose': logging.DEBUG, '--silent': logging.WARNING}

def convert_hyphen_to_underscore_in_args():
for i, arg in enumerate(sys.argv):
if arg.startswith("--") and "=" not in arg:
prefix = "--"
rest = arg[2:].replace("-", "_")
a = prefix + rest
sys.argv[i] = a


def build_pre_parser():
pre_parser = argparse.ArgumentParser(add_help=False)
Expand Down Expand Up @@ -265,6 +273,7 @@ def main():
"""

check_raw_arguments_for_non_ascii()
convert_hyphen_to_underscore_in_args()

pre_parser = build_pre_parser()
pre_args, remaining_args = pre_parser.parse_known_args()
Expand Down
8 changes: 8 additions & 0 deletions mlc/repo_action.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,10 +143,13 @@ def register_repo(self, repo_path, repo_meta):
with open(repos_file_path, 'w') as f:
json.dump(repos_list, f, indent=2)
logger.info(f"Updated repos.json at {repos_file_path}")


return {'return': 0}

def unregister_repo(self, repo_path):
repos_file_path = os.path.join(self.repos_path, 'repos.json')

return unregister_repo(repo_path, repos_file_path)


Expand Down Expand Up @@ -366,6 +369,7 @@ def pull_repo(self, repo_url, branch=None, checkout = None, tag = None, pat = No
r = self.register_repo(repo_path, meta_data)
if r['return'] > 0:
return r

return {"return": 0}

except subprocess.CalledProcessError as e:
Expand Down Expand Up @@ -441,6 +445,7 @@ def pull(self, run_args):
if res['return'] > 0:
return res


return {'return': 0}


Expand Down Expand Up @@ -546,6 +551,8 @@ def rm_repo(repo_path, repos_file_path, force_remove):
unregister_repo(repo_path, repos_file_path)
else:
logger.info("rm repo ooperation cancelled by user!")


else:
logger.warning(f"Repo {repo_name} was not found in the repo folder. repos.json will be checked for any corrupted entry. If any, that will be removed.")
unregister_repo(repo_path, repos_file_path)
Expand All @@ -565,5 +572,6 @@ def unregister_repo(repo_path, repos_file_path):
logger.info(f"Path: {repo_path} has been removed.")
else:
logger.info(f"Path: {repo_path} not found in {repos_file_path}. Nothing to be unregistered!")

return {'return': 0}

16 changes: 15 additions & 1 deletion mlc/script_action.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
import os
import sys
import importlib
import json
from .index import Index
from . import utils
from .logger import logger

Expand Down Expand Up @@ -228,8 +230,11 @@ def call_script_module_function(self, function_name, run_args):
"repo": "mlcommons@mlperf-automations",
"branch": "dev"
})

if result['return'] == 0:
self.repos = self.load_repos_and_meta()
self.index = Index(self.repos_path, self.repos)

# Try to find the script path again after pulling
script_path = self.find_target_folder("script")
if not script_path:
Expand Down Expand Up @@ -267,6 +272,15 @@ def call_script_module_function(self, function_name, run_args):
if result['return'] > 0:
error = result.get('error', "")
raise ScriptExecutionError(f"Script {function_name} execution failed. Error : {error}")

if str(run_args.get("mlc_output")).lower() in ["on", "true", "yes", "1"]:
with open("tmp-state.json", "w") as f:
json.dump(result['new_state'], f, indent=2)

with open("tmp-run-env.out", "w") as f:
for key,val in result['new_env'].items():
f.write(f"""{key}="{val}"\n""")

return result
else:
logger.info("ScriptAutomation class not found in the script.")
Expand Down
Loading