diff --git a/.github/workflows/test-cm-script-features.yml b/.github/workflows/test-cm-script-features.yml index 026c79e74d..a0c9216aa6 100644 --- a/.github/workflows/test-cm-script-features.yml +++ b/.github/workflows/test-cm-script-features.yml @@ -29,7 +29,8 @@ jobs: - name: Install dependencies run: | python -m pip install cmind - cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + # cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} cm run script --quiet --tags=get,sys-utils-cm - name: Test CM Script Features run: | diff --git a/.github/workflows/test-cm-scripts.yml b/.github/workflows/test-cm-scripts.yml index fc00a22f5a..0bf0a066a0 100644 --- a/.github/workflows/test-cm-scripts.yml +++ b/.github/workflows/test-cm-scripts.yml @@ -29,7 +29,8 @@ jobs: - name: Install dependencies run: | python -m pip install cmind - cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + # cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} cm run script --quiet --tags=get,sys-utils-cm - name: Test CM Script Automation run: | diff --git a/.github/workflows/test-cm-tutorial-retinanet.yml b/.github/workflows/test-cm-tutorial-retinanet.yml index 8125920821..325e6357d6 100644 --- a/.github/workflows/test-cm-tutorial-retinanet.yml +++ b/.github/workflows/test-cm-tutorial-retinanet.yml @@ -28,7 +28,8 @@ jobs: - name: Install dependencies run: | python -m pip install cmind - cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + # cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} cm run script --quiet --tags=get,sys-utils-cm - name: Test CM Tutorial Retinanet run: | diff --git a/.github/workflows/test-cm-tutorial-tvm-pip.yml b/.github/workflows/test-cm-tutorial-tvm-pip.yml index f4fbbe8215..c5c2301246 100644 --- a/.github/workflows/test-cm-tutorial-tvm-pip.yml +++ b/.github/workflows/test-cm-tutorial-tvm-pip.yml @@ -28,7 +28,8 @@ jobs: - name: Install dependencies run: | python -m pip install cmind - cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + # cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} cm run script --quiet --tags=get,sys-utils-cm - name: Test CM Tutorial TVM pip install with VirtualMachine Runtime run: | @@ -50,7 +51,8 @@ jobs: - name: Install dependencies run: | python -m pip install cmind - cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + # cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} cm run script --quiet --tags=get,sys-utils-cm - name: Test CM Tutorial TVM pip install with GraphExecutor Runtime run: | diff --git a/.github/workflows/test-cm-tutorial-tvm.yml b/.github/workflows/test-cm-tutorial-tvm.yml index 5a08e3fc5a..1c09c3da8b 100644 --- a/.github/workflows/test-cm-tutorial-tvm.yml +++ b/.github/workflows/test-cm-tutorial-tvm.yml @@ -29,7 +29,8 @@ jobs: - name: Install dependencies run: | python -m pip install cmind - cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + # cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} cm run script --quiet --tags=get,sys-utils-cm - name: Test CM Tutorial TVM run: | diff --git a/.github/workflows/test-cm.yml b/.github/workflows/test-cm.yml index ce3ee706d7..30b2162e2c 100644 --- a/.github/workflows/test-cm.yml +++ b/.github/workflows/test-cm.yml @@ -34,7 +34,8 @@ jobs: cd cm python setup.py install python -m cmind - cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + # cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} - name: Lint with flake8 run: | # stop the build if there are Python syntax errors or undefined names @@ -62,7 +63,8 @@ jobs: run: | python -m pip install --upgrade pip python -m pip install cmind - cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + # cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} - name: Test CM run: | python tests/test_cm.py diff --git a/.github/workflows/test-image-classification-onnx.yml b/.github/workflows/test-image-classification-onnx.yml index 62049d1c51..461ec3b44f 100644 --- a/.github/workflows/test-image-classification-onnx.yml +++ b/.github/workflows/test-image-classification-onnx.yml @@ -29,7 +29,8 @@ jobs: - name: Install dependencies run: | python3 -m pip install cmind - cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + # cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} cm run script --quiet --tags=get,sys-utils-cm - name: Test image classification with ONNX run: | diff --git a/.github/workflows/test-mlperf-inference-bert-deepsparse-tf-onnxruntime-pytorch.yml b/.github/workflows/test-mlperf-inference-bert-deepsparse-tf-onnxruntime-pytorch.yml index 89760294a6..d4aa0bc8d9 100644 --- a/.github/workflows/test-mlperf-inference-bert-deepsparse-tf-onnxruntime-pytorch.yml +++ b/.github/workflows/test-mlperf-inference-bert-deepsparse-tf-onnxruntime-pytorch.yml @@ -37,7 +37,8 @@ jobs: - name: Install dependencies run: | python3 -m pip install cmind - cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + # cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} cm run script --quiet --tags=get,sys-utils-cm - name: Test MLPerf Inference Bert (DeepSparse, TF, ONNX, PyTorch) run: | diff --git a/.github/workflows/test-mlperf-inference-gptj.yml b/.github/workflows/test-mlperf-inference-gptj.yml index ea1a70fa86..c349d7ebaa 100644 --- a/.github/workflows/test-mlperf-inference-gptj.yml +++ b/.github/workflows/test-mlperf-inference-gptj.yml @@ -31,7 +31,8 @@ jobs: - name: Install dependencies run: | python3 -m pip install cmind - cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + # cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} cm run script --quiet --tags=get,sys-utils-cm - name: Test MLPerf Inference GPTJ run: | diff --git a/.github/workflows/test-mlperf-inference-mlcommons-cpp-resnet50.yml b/.github/workflows/test-mlperf-inference-mlcommons-cpp-resnet50.yml index a28e86825f..cb7661e652 100644 --- a/.github/workflows/test-mlperf-inference-mlcommons-cpp-resnet50.yml +++ b/.github/workflows/test-mlperf-inference-mlcommons-cpp-resnet50.yml @@ -30,7 +30,8 @@ jobs: - name: Install dependencies run: | python3 -m pip install cmind - cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + # cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} cm run script --quiet --tags=get,sys-utils-cm cm run script --quiet --tags=install,prebuilt,llvm --version=${{ matrix.llvm-version }} - name: Test MLPerf Inference MLCommons C++ ResNet50 diff --git a/.github/workflows/test-mlperf-inference-resnet50.yml b/.github/workflows/test-mlperf-inference-resnet50.yml index 29b7b3cb59..6f64f6d925 100644 --- a/.github/workflows/test-mlperf-inference-resnet50.yml +++ b/.github/workflows/test-mlperf-inference-resnet50.yml @@ -36,7 +36,8 @@ jobs: - name: Install dependencies run: | python3 -m pip install cmind - cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + # cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} cm run script --quiet --tags=get,sys-utils-cm - name: Test MLPerf Inference ResNet50 run: | diff --git a/.github/workflows/test-mlperf-inference-retinanet.yml b/.github/workflows/test-mlperf-inference-retinanet.yml index 4846aa2bd1..1952846d2b 100644 --- a/.github/workflows/test-mlperf-inference-retinanet.yml +++ b/.github/workflows/test-mlperf-inference-retinanet.yml @@ -34,7 +34,8 @@ jobs: - name: Install dependencies run: | python3 -m pip install cmind - cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + # cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} cm run script --quiet --tags=get,sys-utils-cm - name: Test MLPerf Inference Retinanet using ${{ matrix.backend }} run: | diff --git a/.github/workflows/test-mlperf-inference-rnnt.yml b/.github/workflows/test-mlperf-inference-rnnt.yml index d6c1ae6a2e..f0ec8f19af 100644 --- a/.github/workflows/test-mlperf-inference-rnnt.yml +++ b/.github/workflows/test-mlperf-inference-rnnt.yml @@ -31,7 +31,8 @@ jobs: - name: Install dependencies run: | python3 -m pip install cmind - cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + # cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} cm run script --quiet --tags=get,sys-utils-cm - name: Test MLPerf Inference RNNT run: | diff --git a/.github/workflows/test-mlperf-inference-tvm.yml b/.github/workflows/test-mlperf-inference-tvm.yml index 04c624513b..76328db02b 100644 --- a/.github/workflows/test-mlperf-inference-tvm.yml +++ b/.github/workflows/test-mlperf-inference-tvm.yml @@ -31,7 +31,8 @@ jobs: - name: Install dependencies run: | python3 -m pip install cmind - cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + # cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} cm run script --quiet --tags=get,sys-utils-cm - name: MLPerf Inference ResNet50 using TVM run: | diff --git a/.github/workflows/test-mlperf-loadgen-onnx-huggingface-bert-fp32-squad.yml b/.github/workflows/test-mlperf-loadgen-onnx-huggingface-bert-fp32-squad.yml index a66e40981c..092addfb7e 100644 --- a/.github/workflows/test-mlperf-loadgen-onnx-huggingface-bert-fp32-squad.yml +++ b/.github/workflows/test-mlperf-loadgen-onnx-huggingface-bert-fp32-squad.yml @@ -29,7 +29,8 @@ jobs: - name: Install dependencies run: | python3 -m pip install cmind - cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + # cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} --checkout=${{ github.event.pull_request.head.ref }} + cm pull repo --url=${{ github.event.pull_request.head.repo.html_url }} cm run script --quiet --tags=get,sys-utils-cm - name: Test MLPerf loadgen with HuggingFace bert onnx fp32 squad model run: | diff --git a/.github/workflows/update-script-dockerfiles.yml b/.github/workflows/update-script-dockerfiles.yml deleted file mode 100644 index 4c626b137e..0000000000 --- a/.github/workflows/update-script-dockerfiles.yml +++ /dev/null @@ -1,41 +0,0 @@ -# This workflow will add/update the default dockerfile for any updated CM scripts -name: Dockerfile update for CM scripts - -on: - push: - branches: [ "master", "dev" ] - paths: - - 'cm-mlops/script/**_cm.json' - -jobs: - dockerfile: - if: github.repository == 'mlcommons/ck' - runs-on: ubuntu-latest - steps: - - name: 'Checkout' - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Get changed files - id: getfile - run: | - echo "files=$(git diff --name-only ${{ github.event.before }} | xargs)" >> $GITHUB_OUTPUT - - name: Update dockerfile - run: | - for file in ${{ steps.getfile.outputs.files }}; do - echo $file - done - python3 -m pip install cmind - cm pull repo --url=https://github.com/${{ github.repository }} --checkout=${{ github.ref_name }} - python3 tests/script/process_dockerfile.py ${{ steps.getfile.outputs.files }} - - FOLDER=`cm find repo mlcommons@ck | cut -d' ' -f3` - - USER=ctuning-admin - EMAIL=admin@ctuning.org - - git config --global user.name "$USER" - git config --global user.email "$EMAIL" - git remote set-url origin https://x-access-token:${{ secrets.ACCESS_TOKEN }}@github.com/${{ github.repository }} - git add *.Dockerfile - git diff-index --quiet HEAD || (git commit -am "Updated dockerfile" && git push) diff --git a/.github/workflows/update-script-readme.yml b/.github/workflows/update-script-readme.yml deleted file mode 100644 index 8e795e4bb2..0000000000 --- a/.github/workflows/update-script-readme.yml +++ /dev/null @@ -1,46 +0,0 @@ -# This workflow will add/update the README.md files for any updated CM scripts -name: Readme update for CM scripts - -on: - push: - branches: [ "master", "dev" ] - paths: - - 'cm-mlops/script/**_cm.json' - -jobs: - doreadme: - runs-on: ubuntu-latest - if: github.repository == 'mlcommons/ck' - steps: - - name: 'Checkout' - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Get changed files - id: getfile - run: | - echo "files=$(git diff --name-only ${{ github.event.before }} | xargs)" >> $GITHUB_OUTPUT - - name: Update readme - run: | - echo ${{ steps.getfile.outputs.files }} - for file in ${{ steps.getfile.outputs.files }}; do - echo $file - done - python3 -m pip install cmind - cm pull repo --url=https://github.com/${{ github.repository }} --checkout=${{ github.ref_name }} - python3 tests/script/process_readme.py ${{ steps.getfile.outputs.files }} - #REPO=${{ github.repository }} - #CM_REPO=${REPO/\//@} - #FOLDER=`cm find repo ${CM_REPO} | cut -d' ' -f3` - FOLDER=`cm find repo mlcommons@ck | cut -d' ' -f3` - cd $FOLDER - echo "Changed to $FOLDER" - - USER=ctuning-admin - EMAIL=admin@ctuning.org - - git config --global user.name "$USER" - git config --global user.email "$EMAIL" - git remote set-url origin https://x-access-token:${{ secrets.ACCESS_TOKEN }}@github.com/${{ github.repository }} - git add *.md - git diff-index --quiet HEAD || (git commit -am "Updated docs" && git push && echo "Changes pushed") diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 82f9cc6b3c..508fd0e1ad 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,13 +14,11 @@ Modify the project in your own fork and issue a pull request once you want other to take a look at what you have done and discuss the proposed changes. Ensure that cla-bot and other checks pass for your Pull requests. -### Contributing to this project +## CM project coordinator -Please check the [MLCommons TaskForce on Automation and Reproducibility](docs/taskforce.md) -and join our [Discord server](https://discord.gg/JjWNWXKxwT) -to learn more about this project. +* Grigori Fursin (cTuning.org and cKnowledge.org) -### Contributors to the MLCommons Collective Mind project in alphabetical order +## CM contributors in alphabetical order (suggestions and/or scripts) * Resmi Arjun * Alice Cheng (Nvidia) diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt index 5f5fc42eff..80e8c506b8 100644 --- a/COPYRIGHT.txt +++ b/COPYRIGHT.txt @@ -1,5 +1,5 @@ Copyright (c) 2021-2024 MLCommons -cTuning foundation and OctoML donated this project to MLCommons to benefit everyone. +The cTuning foundation and OctoML donated this project to MLCommons to benefit everyone. Copyright (c) 2014-2021 cTuning foundation diff --git a/README.md b/README.md index d30c93489b..bc0852bffb 100755 --- a/README.md +++ b/README.md @@ -15,17 +15,20 @@ across diverse and continuously changing models, data, software and hardware. CK consists of several ongoing sub-projects: -* [Collective Mind framework (CM)](cm) - a very light-weight Python-based framework with minimal dependencies +* [Collective Mind framework (CM)](cm) (*~1MB*) - a very light-weight Python-based framework with minimal dependencies to help the community implement, share and reuse cross-platform automation recipes to build, benchmark and optimize applications on any platform - with any software and hardware. It extends the cmake concept with + with any software and hardware. Very simply, it extends the cmake concept with reusable automation recipes and workflows written in plain Python or native OS scripts, accessible via a human readable interface with simple tags, and shareable in public and private repositories in a decentralized way. + Furthermore, in comparison with cmake, these automation recipes can not only detect missing code + but also download artifacts (models, data sets), preprocess them, build missing + dependencies, install them and run the final code on diverse platforms in a unified and automated way. You can read more about the CM concept in this [presentation](https://doi.org/10.5281/zenodo.8105339). - * [CM automation recipes for MLOps and DevOps](cm-mlops) - a collection of portable, extensible and technology-agnostic automation recipes + * [CM automation recipes for MLOps and DevOps](cm-mlops) (*~6MB*) - a small collection of portable, extensible and technology-agnostic automation recipes with a human-friendly interface (aka CM scripts) to unify and automate all the manual steps required to compose, run, benchmark and optimize complex ML/AI applications on diverse platforms with any software and hardware: see [online catalog](https://access.cknowledge.org/playground/?action=scripts) and [source code](https://github.com/mlcommons/cm4mlops/blob/master/script). diff --git a/cm-mlops/script/app-loadgen-generic-python/customize.py b/cm-mlops/script/app-loadgen-generic-python/customize.py index c8810dcd7b..b9b490ceac 100644 --- a/cm-mlops/script/app-loadgen-generic-python/customize.py +++ b/cm-mlops/script/app-loadgen-generic-python/customize.py @@ -1,5 +1,7 @@ # Developer: Grigori Fursin +# + from cmind import utils import os import shutil diff --git a/cm/CHANGES.md b/cm/CHANGES.md index 0c09942878..8fbe61d9d8 100644 --- a/cm/CHANGES.md +++ b/cm/CHANGES.md @@ -1,3 +1,10 @@ +## V2.3.0 + - added automatic CM repo alias from mlcommons@ck to mlcommons@cm4mlops + unless branch and checkout are used! + - improved CM python package API generation and uploaded to https://cknowledge.org/docs/cm + (should move to MLCommons when ready) + - added timezone to utils.get_current_date_time to correctly time stamp various experiments! + ## V2.2.0 - fixed detection of a CM artifact using 'cm info .' when inside virtual env entries. - added "cmind.utils.debug_here" function to attach remote Python debugger diff --git a/cm/cmind/__init__.py b/cm/cmind/__init__.py index 1bd8ddb448..085327d4e8 100644 --- a/cm/cmind/__init__.py +++ b/cm/cmind/__init__.py @@ -1,4 +1,8 @@ -__version__ = "2.2.0" +# Collective Mind init +# +# Written by Grigori Fursin + +__version__ = "2.3.0" from cmind.core import access from cmind.core import error diff --git a/cm/cmind/__main__.py b/cm/cmind/__main__.py index 9e210c1f53..c0349fe282 100644 --- a/cm/cmind/__main__.py +++ b/cm/cmind/__main__.py @@ -1,3 +1,7 @@ +# Collective Mind CLI entry point +# +# Written by Grigori Fursin + import cmind.cli as cli cli.run() diff --git a/cm/cmind/artifact.py b/cm/cmind/artifact.py index 256c45e7da..f22a36c03b 100644 --- a/cm/cmind/artifact.py +++ b/cm/cmind/artifact.py @@ -1,4 +1,6 @@ # Collective Mind artifact +# +# Written by Grigori Fursin import os diff --git a/cm/cmind/automation.py b/cm/cmind/automation.py index f38447ba36..b96b08449f 100644 --- a/cm/cmind/automation.py +++ b/cm/cmind/automation.py @@ -1,4 +1,6 @@ # Collective Mind automation +# +# Written by Grigori Fursin import os @@ -120,9 +122,9 @@ def test(self, i): print ('') print ('GitHub for CM developments: https://github.com/mlcommons/ck/tree/master/cm') - print ('GitHub for CM automation scripts: https://github.com/mlcommons/ck/tree/master/cm-mlops') + print ('GitHub for CM automation scripts: https://github.com/mlcommons/cm4mlops') print ('Reporting issues and ideas: https://github.com/mlcommons/ck/issues') - print ('Joining the open MLPerf workgroup: https://cKnowledge.org/mlcommons-taskforce') + print ('MLCommons taskforce developing CM: https://github.com/mlcommons/ck/blob/master/docs/taskforce.md') return {'return':0} diff --git a/cm/cmind/cli.py b/cm/cmind/cli.py index 96a6917319..f433fb832b 100644 --- a/cm/cmind/cli.py +++ b/cm/cmind/cli.py @@ -1,4 +1,6 @@ # Collective Mind command line wrapper +# +# Written by Grigori Fursin import sys diff --git a/cm/cmind/config.py b/cm/cmind/config.py index f4a7c80809..db750ce70d 100644 --- a/cm/cmind/config.py +++ b/cm/cmind/config.py @@ -1,4 +1,6 @@ # Collective Mind configuration +# +# Written by Grigori Fursin import os diff --git a/cm/cmind/core.py b/cm/cmind/core.py index a008597cd5..2aae4be30c 100644 --- a/cm/cmind/core.py +++ b/cm/cmind/core.py @@ -1,4 +1,6 @@ # Collective Mind core functions +# +# Written by Grigori Fursin from cmind.config import Config from cmind.repos import Repos diff --git a/cm/cmind/index.py b/cm/cmind/index.py index fb643a66d9..5207a998b1 100644 --- a/cm/cmind/index.py +++ b/cm/cmind/index.py @@ -1,4 +1,6 @@ # Collective Mind index +# +# Written by Grigori Fursin import os import json diff --git a/cm/cmind/net.py b/cm/cmind/net.py index 725bdcf263..5cbc46368e 100644 --- a/cm/cmind/net.py +++ b/cm/cmind/net.py @@ -1,4 +1,6 @@ # Reused from the CK framework for compatibility +# +# Written by Grigori Fursin import urllib import json diff --git a/cm/cmind/repo.py b/cm/cmind/repo.py index e2230a5f1e..3a5ed1c1ab 100644 --- a/cm/cmind/repo.py +++ b/cm/cmind/repo.py @@ -1,4 +1,6 @@ # Collective Mind repository +# +# Written by Grigori Fursin import os diff --git a/cm/cmind/repo/automation/automation/README.md b/cm/cmind/repo/automation/automation/README.md index d2f69e84cd..870a42d8fd 100644 --- a/cm/cmind/repo/automation/automation/README.md +++ b/cm/cmind/repo/automation/automation/README.md @@ -64,4 +64,4 @@ ### Maintainers -* [Open MLCommons taskforce on automation and reproducibility](https://cKnowledge.org/mlcommons-taskforce) \ No newline at end of file +* [Open MLCommons taskforce on automation and reproducibility](https://github.com/mlcommons/ck/blob/master/docs/taskforce.md) \ No newline at end of file diff --git a/cm/cmind/repo/automation/automation/module.py b/cm/cmind/repo/automation/automation/module.py index 450bef7a75..cecb0964cc 100644 --- a/cm/cmind/repo/automation/automation/module.py +++ b/cm/cmind/repo/automation/automation/module.py @@ -1,3 +1,7 @@ +# CM automation module to add or document all automations +# +# Written by Grigori Fursin + import os from cmind.automation import Automation diff --git a/cm/cmind/repo/automation/automation/module_misc.py b/cm/cmind/repo/automation/automation/module_misc.py index b3a07be7c5..985cc9d70f 100644 --- a/cm/cmind/repo/automation/automation/module_misc.py +++ b/cm/cmind/repo/automation/automation/module_misc.py @@ -1,3 +1,7 @@ +# Documenting CM automations +# +# Written by Grigori Fursin + import os from cmind import utils @@ -187,7 +191,7 @@ def doc(i): # Add maintainers md_script_readme.append('### Maintainers') md_script_readme.append('') - md_script_readme.append('* [Open MLCommons taskforce on automation and reproducibility](https://cKnowledge.org/mlcommons-taskforce)') + md_script_readme.append('* [MLCommons taskforce on automation and reproducibility](https://github.com/mlcommons/ck/blob/master/docs/taskforce.md)') # Check README and if it's already automatically generated diff --git a/cm/cmind/repo/automation/ckx/README.md b/cm/cmind/repo/automation/ckx/README.md index 97d6969835..c7f4c2389e 100644 --- a/cm/cmind/repo/automation/ckx/README.md +++ b/cm/cmind/repo/automation/ckx/README.md @@ -24,4 +24,4 @@ ### Maintainers -* [Open MLCommons taskforce on automation and reproducibility](https://cKnowledge.org/mlcommons-taskforce) \ No newline at end of file +* [Open MLCommons taskforce on automation and reproducibility](https://github.com/mlcommons/ck/blob/master/docs/taskforce.md) \ No newline at end of file diff --git a/cm/cmind/repo/automation/ckx/module.py b/cm/cmind/repo/automation/ckx/module.py index 2cc348e3f6..97cc73f2bc 100644 --- a/cm/cmind/repo/automation/ckx/module.py +++ b/cm/cmind/repo/automation/ckx/module.py @@ -1,3 +1,7 @@ +# CM wrapper for older CK framework in case it is still needed +# +# Written by Grigori Fursin + import os from cmind.automation import Automation diff --git a/cm/cmind/repo/automation/core/README.md b/cm/cmind/repo/automation/core/README.md index 7a4c099fd3..e34c715c76 100644 --- a/cm/cmind/repo/automation/core/README.md +++ b/cm/cmind/repo/automation/core/README.md @@ -24,4 +24,4 @@ ### Maintainers -* [Open MLCommons taskforce on automation and reproducibility](https://cKnowledge.org/mlcommons-taskforce) \ No newline at end of file +* [Open MLCommons taskforce on automation and reproducibility](https://github.com/mlcommons/ck/blob/master/docs/taskforce.md) \ No newline at end of file diff --git a/cm/cmind/repo/automation/core/module.py b/cm/cmind/repo/automation/core/module.py index deeec54173..238091773f 100644 --- a/cm/cmind/repo/automation/core/module.py +++ b/cm/cmind/repo/automation/core/module.py @@ -1,3 +1,7 @@ +# CM core automation with a few universal functions +# +# Written by Grigori Fursin + import os from cmind.automation import Automation diff --git a/cm/cmind/repo/automation/core/module_misc.py b/cm/cmind/repo/automation/core/module_misc.py index 5bc87457b4..0fadae23b7 100644 --- a/cm/cmind/repo/automation/core/module_misc.py +++ b/cm/cmind/repo/automation/core/module_misc.py @@ -1,3 +1,7 @@ +# Generate CM UID +# +# Written by Grigori Fursin + import cmind.utils as utils ############################################################ diff --git a/cm/cmind/repo/automation/repo/README.md b/cm/cmind/repo/automation/repo/README.md index 459b023f06..8ca595b740 100644 --- a/cm/cmind/repo/automation/repo/README.md +++ b/cm/cmind/repo/automation/repo/README.md @@ -264,4 +264,4 @@ ### Maintainers -* [Open MLCommons taskforce on automation and reproducibility](https://cKnowledge.org/mlcommons-taskforce) \ No newline at end of file +* [Open MLCommons taskforce on automation and reproducibility](https://github.com/mlcommons/ck/blob/master/docs/taskforce.md) \ No newline at end of file diff --git a/cm/cmind/repo/automation/repo/_cm.json b/cm/cmind/repo/automation/repo/_cm.json index 6ba31783d8..100255b673 100644 --- a/cm/cmind/repo/automation/repo/_cm.json +++ b/cm/cmind/repo/automation/repo/_cm.json @@ -6,7 +6,6 @@ "automation_alias": "automation", "automation_uid": "bbeb15d8f0a944a4", "desc": "Managing CM repositories and software projects", - "developers": "[Grigori Fursin](https://cKnowledge.org/gfursin) and [Arjun Suresh](https://www.linkedin.com/in/arjunsuresh)", "sort": 2000, "tags": [ "automation", diff --git a/cm/cmind/repo/automation/repo/module.py b/cm/cmind/repo/automation/repo/module.py index 992dca9e3f..6522d09747 100644 --- a/cm/cmind/repo/automation/repo/module.py +++ b/cm/cmind/repo/automation/repo/module.py @@ -1,3 +1,7 @@ +# CM automation to manage CM repositories +# +# Written by Grigori Fursin + import os from cmind.automation import Automation @@ -99,10 +103,29 @@ def pull(self, i): pull_repos.append({'alias': os.path.basename(repo_path), 'path_to_repo': repo_path}) else: + # We are migrating cm-mlops repo from mlcommons@ck to a clean and new mlcommons@cm4mlops: + # https://github.com/mlcommons/ck/issues/1215 + # As discussed, we should have a transparent redirect with a warning + # unless branch/checkout is used - in such case we keep old repository + # for backwards compatibility and reproducibility + + branch = i.get('branch', '') + checkout = i.get('checkout', '') + + if alias == 'mlcommons@ck' and branch == '' and checkout == '': + print ('=========================================================================') + print ('Warning: mlcommons@ck was automatically changed to mlcommons@cm4mlops.') + print ('If you want to use older mlcommons@ck repository, use branch or checkout.') + print ('=========================================================================') + + alias = 'mlcommons@cm4mlops' + url = url.replace('mlcommons/ck', 'mlcommons/cm4mlops') + + pull_repos = [{'alias':alias, 'url':url, - 'branch': i.get('branch', ''), - 'checkout': i.get('checkout', ''), + 'branch': branch, + 'checkout': checkout, 'depth': i.get('depth', '')}] diff --git a/cm/cmind/repos.py b/cm/cmind/repos.py index e60ba55fc7..0926bb1974 100644 --- a/cm/cmind/repos.py +++ b/cm/cmind/repos.py @@ -1,4 +1,6 @@ # Collective Mind repositories +# +# Written by Grigori Fursin import os diff --git a/cm/cmind/utils.py b/cm/cmind/utils.py index 21e52952d6..a3d5dfb41a 100644 --- a/cm/cmind/utils.py +++ b/cm/cmind/utils.py @@ -1,6 +1,8 @@ # Auxilary functions for CM - +# # Some functionality was reused from the CK framework for compatibility +# +# Written by Grigori Fursin import os @@ -1215,7 +1217,8 @@ def get_current_date_time(i): Get current date and time. Args: - (CM input dict): empty dict + (CM input dict): + - (timezone) (str): timezone in pytz format: "Europe/Paris" Returns: (CM return dict): @@ -1239,7 +1242,14 @@ def get_current_date_time(i): a = {} - now1 = datetime.datetime.now() + tz = None + + tz_str = i.get('timezone', '').strip() + if tz_str != '': + import pytz + tz = pytz.timezone(tz_str) + + now1 = datetime.datetime.now(tz) now = now1.timetuple() a['date_year'] = now[0] diff --git a/docs/README.md b/docs/README.md index 2ba04c842e..9b77606738 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,19 +1,20 @@ # CM documentation -**We plan to rewrite and simplify the CM documentation and tutorials based on user feedback in Q2 2024 - please stay tuned for more details**. +**We plan to rewrite and simplify the CM documentation and tutorials based on user feedback in Q3 2024 - please stay tuned for more details**. Collective Mind (CM) is a lightweight, non-intrusive and technology-agnostic workflow automation framework being developed by the [MLCommons Task Force on Automation and Reproducibility](https://github.com/mlcommons/ck/blob/master/docs/taskforce.md) based on the feedback from the [the community, MLCommons members and individual contributors](CONTRIBUTING.md). -The goal is to provide a common, simple and human-readable interface to manage, run, reproduce -and customize diverse AI/ML apps, benchmarks and research projects across continuously changing -models, datasets, software and hardware from different vendors in a unified and automated way. +The goal is to provide a common, simple and human-readable interface to help users encode their knowledge +about how to build, run and customize diverse AI/ML apps, benchmarks and research projects across +continuously changing models, datasets, software and hardware from different vendors in a unified and automated way. * [Getting Started Guide and FAQ](getting-started.md) * [Introduction](introduction-cm.md) * [CM installation and customization](installation.md) * [Unified CLI and Python API](interface.md) + * [CM framework core API](https://cknowledge.org/docs/cm) * [CM "script" automation](https://github.com/mlcommons/ck/blob/master/cm-mlops/automation/script/README-extra.md) * [CM "cache" automation](https://github.com/mlcommons/ck/blob/master/cm-mlops/automation/cache/README-extra.md) * [CM "experiment" automation](https://github.com/mlcommons/ck/blob/master/cm-mlops/automation/experiment/README-extra.md) diff --git a/docs/_generator/api/conf.py b/docs/_generator/api/conf.py index 670db88ca0..fdd33bae7b 100644 --- a/docs/_generator/api/conf.py +++ b/docs/_generator/api/conf.py @@ -23,8 +23,8 @@ # -- Project information ----------------------------------------------------- -project = u'Collective Mind' -copyright = u'2022 MLCommons' +project = u'Collective Mind (CM)' +copyright = u'2022-2024 MLCommons' author = u'Grigori Fursin' version='' @@ -101,7 +101,7 @@ # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. -language = None +# language = # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. @@ -244,4 +244,5 @@ autoclass_content = 'both' def setup(app): - app.add_stylesheet('css/custom.css') +# app.add_stylesheet('css/custom.css') + app.add_css_file('css/custom.css') diff --git a/docs/_generator/api/generate.bat b/docs/_generator/api/generate.bat index 4cf8c63c60..0904630e0c 100644 --- a/docs/_generator/api/generate.bat +++ b/docs/_generator/api/generate.bat @@ -4,7 +4,7 @@ rd /Q /S api sphinx-apidoc -f -T -o api ../../../cm/cmind -cm replace_string_in_file utils --input=api/cmind.rst --string="cmind package" --replacement="CM API" +cm replace_string_in_file utils --input=api/cmind.rst --string="cmind package" --replacement="CM python package API" sphinx-build -M html . api diff --git a/docs/_generator/api/generate.sh b/docs/_generator/api/generate.sh index a07a8770b4..8c92cefc4a 100644 --- a/docs/_generator/api/generate.sh +++ b/docs/_generator/api/generate.sh @@ -1,6 +1,6 @@ rm -rf api -sphinx-apidoc -H "CM API" -f -T -o api ../../../cm/cmind +sphinx-apidoc -H "CM python package API" -f -T -o api ../../../cm/cmind sphinx-build -M html . api diff --git a/docs/_generator/api/index.rst b/docs/_generator/api/index.rst index 46c40c0ae1..d621a5d48f 100644 --- a/docs/_generator/api/index.rst +++ b/docs/_generator/api/index.rst @@ -1,4 +1,4 @@ -.. Copyright 2022 MLCommons +.. Copyright 2021-2024 MLCommons .. CM documentation master file diff --git a/docs/_generator/generate_api.bat b/docs/_generator/generate_api.bat index 3f0027c3b2..a1c92473b3 100644 --- a/docs/_generator/generate_api.bat +++ b/docs/_generator/generate_api.bat @@ -1,2 +1,4 @@ +pip install sphinx recommonmark sphinx_markdown_tables sphinx_rtd_theme + cd api generate.bat diff --git a/docs/_generator/generate_api.sh b/docs/_generator/generate_api.sh index 25f5918930..85eb8d168a 100644 --- a/docs/_generator/generate_api.sh +++ b/docs/_generator/generate_api.sh @@ -1,2 +1,4 @@ +pip install sphinx recommonmark sphinx_markdown_tables sphinx_rtd_theme + cd api ./generate.sh diff --git a/docs/archive/taskforce-2022.md b/docs/archive/taskforce-2022.md index 195a6948e9..787e736204 100644 --- a/docs/archive/taskforce-2022.md +++ b/docs/archive/taskforce-2022.md @@ -16,9 +16,9 @@ * help the community reproduce MLPerf benchmarks, prepare their own submissions and deploy Pareto-optimal ML/AI systems in the real world; * support student competitions, reproducibility initiatives and artifact evaluation at ML and Systems conferences using the rigorous MLPerf methodology and the MLCommons automation meta-framework. -## Moderators +## Co-chairs and tech leads -* [Grigori Fursin](https://cKnowledge.org/gfursin) +* [Grigori Fursin](https://cKnowledge.org/gfursin) (CM project coordinator) * [Arjun Suresh](https://www.linkedin.com/in/arjunsuresh) ## Discord server diff --git a/docs/debugging.md b/docs/debugging.md index 80e94f0918..41133f7097 100644 --- a/docs/debugging.md +++ b/docs/debugging.md @@ -19,4 +19,11 @@ When running MLPerf and other benchmarks, you can often use the `--debug` flag t start a shell with all environment variables prepared to run/debug the final OS command manually. You can also use GDB via environment variable `--env.CM_RUN_PREFIX="gdb --args "` +## Visual Studio Code +You can debug CM scripts using Visual Studio Code. See the [test-debug](https://github.com/mlcommons/cm4mlops/tree/main/script/test-debug) CM script +for a demo: + +* Debug CM internals and customize.py using [python entry point](https://github.com/mlcommons/cm4mlops/blob/main/script/test-debug/_demo.py#L8) +* Debug native python code wrapped by CM scripts using CM break points: [code](https://github.com/mlcommons/cm4mlops/blob/main/script/test-debug/python/main.py#L18), + [README](https://github.com/mlcommons/cm4mlops/blob/main/script/test-debug/README-extra.md) diff --git a/docs/installation.md b/docs/installation.md index 402c53e9f3..f6457128ba 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -76,13 +76,30 @@ Alternatively you can run source $HOME/.profile ``` -``` -gfursin@mlcommons-ck-cm-dev:~$ cm +You can check that CM is available and print internal status as follows: + +```bash +gfursin@mlcommons-ck-cm-dev:~$ cm test core + +CM version: 2.3.0 + +Python executable used by CK: C:\!Progs\Python310\python.exe + +Path to CM package: C:\!Progs\Python310\lib\site-packages\cmind +Path to CM core module: C:\!Progs\Python310\lib\site-packages\cmind\core.py +Path to CM internal repo: C:\!Progs\Python310\lib\site-packages\cmind\repo + +Path to CM repositories: D:\Work1\CM + +GitHub for CM developments: https://github.com/mlcommons/ck/tree/master/cm +GitHub for CM automation scripts: https://github.com/mlcommons/cm4mlops +Reporting issues and ideas: https://github.com/mlcommons/ck/issues +MLCommons taskforce developing CM: https://github.com/mlcommons/ck/blob/master/docs/taskforce.md -cm {action} {automation} {artifact(s)} {--flags} @input.yaml @input.json ``` -You are ready to use CM automation meta-framework. +You are ready to use CM automation meta-framework. + diff --git a/docs/interface.md b/docs/interface.md index 4e05ec35e5..69a7b47321 100644 --- a/docs/interface.md +++ b/docs/interface.md @@ -143,8 +143,6 @@ without breaking automation workflows): "desc": "Managing CM repositories and software projects", - "developers": "Grigori Fursin and Arjun Suresh", - "tags": [ "automation", "repo" diff --git a/docs/news.md b/docs/news.md index 16a34b3a88..94be3b1400 100644 --- a/docs/news.md +++ b/docs/news.md @@ -3,6 +3,7 @@ ### [News from the MLCommons Task Force on Automation and Reproducibility](taskforce.md) #### 202403 + * [cKnowledge](https://cKnowledge.org) has completed a collaborative engineering project with MLCommons to enhance CM workflow automation to run MLPerf inference benchmarks across different models, software and hardware from different vendors in a unified way: [GUI](https://access.cknowledge.org/playground/?action=howtorun). diff --git a/docs/taskforce.md b/docs/taskforce.md index 38cf31a163..20268c078e 100644 --- a/docs/taskforce.md +++ b/docs/taskforce.md @@ -2,24 +2,23 @@ # MLCommons Task force on Automation and Reproducibility -***Announcement: we are peparing new tasks for Q2-Q3 2024 with MLCommons and looking for volunteers and an extra co-chair. - Please get in touch via [email](mailto:gfursin@cknowledge.org) or [Discord](https://discord.gg/JjWNWXKxwT) for more details!*** +***Announcement: we are peparing new tasks for Q3-Q4 2024 - please stay tuned + or get in touch via [email](mailto:gfursin@cknowledge.org) for more details!*** ## Mission * Develop [reusable automation recipes and workflows](https://access.cknowledge.org/playground/?action=scripts) - with [a common and human-friendly interface (Collective Mind aka CM)](https://github.com/mlcommons/ck) + with [a common and human-friendly interface (Collective Mind aka CM)]( https://github.com/mlcommons/ck/tree/master/cm ) to support MLCommons projects and help everyone assemble, run, reproduce, customize and optimize ML(Perf) benchmarks in a unified and automated way across diverse models, data sets, software and hardware from different vendors. * Gradually extend a unified MLCommons CM interface to automate [all MLPerf inference submissions](https://github.com/mlcommons/ck/issues/1052) starting from v3.1. -* Continuously encode MLPerf rules and best practices in the [CM automation recipes and workflows for MLPerf](https://github.com/mlcommons/ck/tree/master/cm-mlops/script) +* Continuously encode MLPerf rules and best practices in the [CM automation recipes and workflows for MLPerf](https://github.com/mlcommons/cm4mlops/tree/main/script) to reduce the burden for submitters to go through numerous README files and track all the latest changes and updates. -* [Automatically compose high-performance and cost-efficient AI applications and systems using MLPerf and CM](https://doi.org/10.5281/zenodo.10786893). ## Chairs and Tech Leads -* [Grigori Fursin](https://cKnowledge.org/gfursin) +* [Grigori Fursin](https://cKnowledge.org/gfursin) (CM project coordinator) * [Arjun Suresh](https://www.linkedin.com/in/arjunsuresh) ## Discussions @@ -43,16 +42,14 @@ You can participate in our discussions via [public Discord server](https://disco * Develop a more universal Python and C++ wrapper for the MLPerf loadgen with the CM automation to support different models, data sets, software - and hardware: [Python prototype](https://github.com/mlcommons/ck/blob/master/docs/tutorials/scc23-mlperf-inference-bert.md); - [C++ prototype](https://github.com/mlcommons/ck/tree/master/cm-mlops/script/app-mlperf-inference-mlcommons-cpp). + and hardware: [Python prototype](https://github.com/mlcommons/cm4mlops/tree/main/script/app-loadgen-generic-python); + [C++ prototype](https://github.com/mlcommons/cm4mlops/tree/main/script/app-mlperf-inference-mlcommons-cpp). -* Introduce [CM automation badge](https://github.com/mlcommons/ck/tree/master/cm-mlops/script/app-mlperf-inference-mlcommons-cpp) - to MLPerf inference v4.1 submission - similar to ACM/IEEE/NeurIPS reproducibility badges to make it easier for - all submitters to re-run and reproduce each others’ results before the - publication date. +* Discuss how to introduce the [CM automation badge](https://github.com/mlcommons/ck/tree/master/cm-mlops/script/app-mlperf-inference-mlcommons-cpp) + to MLPerf inference v4.1 submission similar to ACM/IEEE/NeurIPS reproducibility badges to make it easier for + all submitters to re-run and reproduce each others’ results before the publication date. -* Collaborate with system vendors and cloud providers to quickly benchmark +* Collaborate with system vendors and cloud providers to help them benchmark their platforms using the best available MLPerf inference implementation. * Collaborate with other MLPerf working groups to modularize their @@ -103,7 +100,7 @@ You can participate in our discussions via [public Discord server](https://disco * [CM-MLPerf commands](https://github.com/mlcommons/ck/tree/master/docs/mlperf) * [CM-MLPerf GUI](https://access.cknowledge.org/playground/?action=howtorun) * [Invited talk at MLPerf-Bench @ HPCA'24 about Automatically Composing High-Performance and Cost-effective AI Systems with MLCommons' CM and MLPerf](https://doi.org/10.5281/zenodo.10786893) -* [Invited keynote about CM framework at ACM REP'23](https://doi.org/10.5281/zenodo.8105339) +* [Invited keynote about CM framework at ACM REP'23]( https://doi.org/10.5281/zenodo.8105339 ) * [ACM artifact review and badging methodology](https://www.acm.org/publications/policies/artifact-review-and-badging-current) * [Artifact Evaluation at ML and systems conferences](https://cTuning.org/ae) * [Terminology (ACM/NISO): Repeatability, Reproducibility and Replicability](artifact-evaluation/faq.md#what-is-the-difference-between-repeatability-reproducibility-and-replicability) diff --git a/docs/tutorials/mlperf-inference-submission.md b/docs/tutorials/mlperf-inference-submission.md index 4972213409..5f0623ad4c 100644 --- a/docs/tutorials/mlperf-inference-submission.md +++ b/docs/tutorials/mlperf-inference-submission.md @@ -351,8 +351,8 @@ See the development roadmap [here](https://github.com/mlcommons/ck/issues/536). # Authors -* [Grigori Fursin](https://cKnowledge.org/gfursin) (MLCommons, cTuning foundation, cKnowledge Ltd) -* [Arjun Suresh](https://www.linkedin.com/in/arjunsuresh) (MLCommons, cTuning foundation) +* [Grigori Fursin](https://cKnowledge.org/gfursin) (cTuning foundation and cKnowledge.org) +* [Arjun Suresh](https://www.linkedin.com/in/arjunsuresh) (cTuning foundation and cKnowledge.org) # Acknowledgments diff --git a/docs/tutorials/sc22-scc-mlperf-part2.md b/docs/tutorials/sc22-scc-mlperf-part2.md index f393b2e922..c0b788fae5 100644 --- a/docs/tutorials/sc22-scc-mlperf-part2.md +++ b/docs/tutorials/sc22-scc-mlperf-part2.md @@ -525,8 +525,8 @@ See the development roadmap [here](https://github.com/mlcommons/ck/issues/536). # Authors -* [Grigori Fursin](https://cKnowledge.org/gfursin) (cTuning foundation, cKnowledge Ltd, MLCommons) -* [Arjun Suresh](https://www.linkedin.com/in/arjunsuresh) (cTuning foundation, cKnowledge Ltd, MLCommons) +* [Grigori Fursin](https://cKnowledge.org/gfursin) (cTuning foundation and cKnowledge.org) +* [Arjun Suresh](https://www.linkedin.com/in/arjunsuresh) (cTuning foundation and cKnowledge.org) # Acknowledgments diff --git a/docs/tutorials/sc22-scc-mlperf-part3.md b/docs/tutorials/sc22-scc-mlperf-part3.md index b3363c368f..a2349bd650 100644 --- a/docs/tutorials/sc22-scc-mlperf-part3.md +++ b/docs/tutorials/sc22-scc-mlperf-part3.md @@ -426,8 +426,8 @@ See the development roadmap [here](https://github.com/mlcommons/ck/issues/536). # Authors -* [Grigori Fursin](https://cKnowledge.org/gfursin) (cTuning foundation, cKnowledge Ltd, MLCommons) -* [Arjun Suresh](https://www.linkedin.com/in/arjunsuresh) (cTuning foundation, cKnowledge Ltd, MLCommons) +* [Grigori Fursin](https://cKnowledge.org/gfursin) (cTuning foundation and cKnowledge.org) +* [Arjun Suresh](https://www.linkedin.com/in/arjunsuresh) (cTuning foundation and cKnowledge.org) # Acknowledgments diff --git a/docs/tutorials/sc22-scc-mlperf.md b/docs/tutorials/sc22-scc-mlperf.md index 89b12accad..b5797e7660 100644 --- a/docs/tutorials/sc22-scc-mlperf.md +++ b/docs/tutorials/sc22-scc-mlperf.md @@ -772,8 +772,8 @@ See the development roadmap [here](https://github.com/mlcommons/ck/issues/536). # Authors -* [Grigori Fursin](https://cKnowledge.org/gfursin) (cTuning foundation, cKnowledge Ltd, MLCommons) -* [Arjun Suresh](https://www.linkedin.com/in/arjunsuresh) (cTuning foundation, cKnowledge Ltd, MLCommons) +* [Grigori Fursin](https://cKnowledge.org/gfursin) (cTuning foundation and cKnowledge.org) +* [Arjun Suresh](https://www.linkedin.com/in/arjunsuresh) (cTuning foundation and cKnowledge.org) # Acknowledgments