Skip to content

Added Resnet50 closed division github action #289

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Mar 11, 2025
Merged
Changes from 4 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
136 changes: 136 additions & 0 deletions .github/workflows/test-mlperf-inference-resnet50-closed-division.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
name: MLPerf inference ResNet50 Closed Division for testing Compliance

on:
schedule:
- cron: '0 0 * * 0' # Runs once a week
pull_request_target:
branches: [ "main", "dev" ]
paths:
- '.github/workflows/test-mlperf-inference-resnet50-closed-division.yml'
- '**'
- '!**.md'
workflow_dispatch: # Allows manual triggering of the workflow
jobs:
build:
name: MLPerf inference MLCommons ResNet50 Closed Division
runs-on: ${{ matrix.os }}
env:
MLC_INDEX: "on"
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: [ "3.12" ]
backend: [ "onnxruntime", "tf" ]
implementation: [ "python", "cpp" ]
exclude:
- backend: tf
implementation: cpp
- os: macos-latest
backend: tf
- os: windows-latest
implementation: cpp
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Check if the submission is for closed division
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this step doing? This is not a submission repo right?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, you are right. Earlier, I had the wrong impression that we needed to evaluate this action only for submissions in the closed division. However, as you correctly mentioned, this is not a submission repository, and we require this action to verify the correctness of the automation script. I have addressed this issue in the latest commit.

run: |
if git diff --name-only origin/${{ github.base_ref }}..HEAD | xargs grep -l "division=closed"; then
echo "DIVISION_CLOSED=true" >> $GITHUB_ENV
else
echo "DIVISION_CLOSED=false" >> $GITHUB_ENV
fi

- name: Check value for the divison
run: echo "DIVISION_CLOSED=${{ env.DIVISION_CLOSED }}"

- name: Skip workflow if its an open division submission as no compliance test is required
if: ${{ env.DIVISION_CLOSED == 'false' }}
run: |
echo "Skipping workflow because division=closed is not found in the changes."
exit 0

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
- name: Configure git longpaths (Windows)
if: matrix.os == 'windows-latest'
run: |
git config --system core.longpaths true

- name: Install mlcflow
run: |
pip install mlcflow
pip install tabulate

- name: Pull MLOps repo
run: |
mlc pull repo ${{ github.event.pull_request.head.repo.html_url }} --branch=${{ github.event.pull_request.head.ref }}

- name: Test MLPerf Inference ResNet50 (Windows)
if: matrix.os == 'windows-latest'
run: |
mlcr run-mlperf,inference,_submission,_short,_all-scenarios, division=closed, --submitter="MLCommons" --pull_changes=yes --pull_inference_changes=yes --hw_name="gh_${{ matrix.os }} x86" --model=resnet50 --adr.loadgen.tags=_from-pip --pip_loadgen=yes --implementation=${{ matrix.implementation }} --backend=${{ matrix.backend }} --device=cpu --scenario=Offline --test_query_count=500 --quiet

- name: Compliance Test MLPerf Inference ResNet50 (Windows)
if: matrix.os == 'windows-latest'
run: mlcr run-mlperf,inference,_submission,_short,_all-scenarios, division=closed, --submitter="MLCommons" --pull_changes=yes --pull_inference_changes=yes --hw_name="gh_${{ matrix.os }} x86" --model=resnet50 --adr.loadgen.tags=_from-pip --pip_loadgen=yes --implementation=${{ matrix.implementation }} --backend=${{ matrix.backend }} --device=cpu --scenario=Offline --test_query_count=500 --quiet --compliance=yes # mentioning only --compliance currently doesnt work needs to be --compliance=yes

- name: Test MLPerf Inference ResNet50 (Linux/macOS)
if: matrix.os != 'windows-latest'
run: |
mlcr run-mlperf,inference,_submission,_short,_all-scenarios, division=closed, --submitter="MLCommons" --pull_changes=yes --pull_inference_changes=yes --hw_name="gh_${{ matrix.os }} x86" --model=resnet50 --implementation=${{ matrix.implementation }} --backend=${{ matrix.backend }} --device=cpu --scenario=Offline --test_query_count=500 --target_qps=1 -v --quiet
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this command tested?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apologies for opening the PR without testing the GitHub action earlier. I wasn't completely aware of how the GitHub action workflow operated, which led to this oversight. Here are the test logs for the latest commit: Logs


- name: Compliance Test MLPerf Inference ResNet50 (Linux/macOS)
run: |
mlcr run-mlperf,inference,_submission,_short,_all-scenarios, division=closed, --submitter="MLCommons" --pull_changes=yes --pull_inference_changes=yes --hw_name="gh_${{ matrix.os }} x86" --model=resnet50 --implementation=${{ matrix.implementation }} --backend=${{ matrix.backend }} --device=cpu --scenario=Offline --test_query_count=500 --target_qps=1 -v --quiet --compliance=yes


# Step for Linux/MacOS
- name: Randomly Execute Step (Linux/MacOS)
if: runner.os != 'Windows'
run: |
RANDOM_NUMBER=$((RANDOM % 10))
echo "Random number is $RANDOM_NUMBER"
if [ "$RANDOM_NUMBER" -eq 0 ]; then
echo "run_step=true" >> $GITHUB_ENV
else
echo "run_step=false" >> $GITHUB_ENV
fi

# Step for Windows
- name: Randomly Execute Step (Windows)
if: runner.os == 'Windows'
run: |
$RANDOM_NUMBER = Get-Random -Maximum 10
Write-Host "Random number is $RANDOM_NUMBER"
if ($RANDOM_NUMBER -eq 0) {
Write-Host "run_step=true" | Out-File -FilePath $Env:GITHUB_ENV -Append
} else {
Write-Host "run_step=false" | Out-File -FilePath $Env:GITHUB_ENV -Append
}

- name: Retrieve secrets from Keeper
if: github.repository_owner == 'mlcommons' && env.run_step == 'true'
id: ksecrets
uses: Keeper-Security/ksm-action@master
with:
keeper-secret-config: ${{ secrets.KSM_CONFIG }}
secrets: |-
ubwkjh-Ii8UJDpG2EoU6GQ/field/Access Token > env:PAT
- name: Push Results
env:
GITHUB_TOKEN: ${{ env.PAT }}
if: github.repository_owner == 'mlcommons' && env.run_step == 'true'
run: |
git config --global user.name "mlcommons-bot"
git config --global user.email "mlcommons-bot@users.noreply.github.com"
git config --global credential.https://github.com.helper ""
git config --global credential.https://github.com.helper "!gh auth git-credential"
git config --global credential.https://gist.github.com.helper ""
git config --global credential.https://gist.github.com.helper "!gh auth git-credential"
mlcr push,github,mlperf,inference,submission --repo_url=https://github.com/mlcommons/mlperf_inference_test_submissions_v5.0 --repo_branch=auto-update --commit_message="Results from R50 GH action on ${{ matrix.os }}" --quiet

Loading