A validation and profiling tool for AI infrastructure
Перейти к файлу
Yifan Xiong af6eb004df
CI/CD - Add GitHub Action to build and push image (#70)
* add GitHub Action to build and push image
* update Dockerfile to copy from context
2021-05-17 21:34:15 +08:00
.azure-pipelines CI/CD - Speedup CPU pipeline (#61) 2021-04-21 11:58:55 +08:00
.github CI/CD - Add GitHub Action to build and push image (#70) 2021-05-17 21:34:15 +08:00
dockerfile CI/CD - Add GitHub Action to build and push image (#70) 2021-05-17 21:34:15 +08:00
examples/benchmarks Benchmarks: Code Revision - Revise the settings of CNN example models. (#65) 2021-04-26 21:23:11 +08:00
superbench Benchmarks: Add Feature - Add script to build all cmake benchmark projects. (#72) 2021-05-17 18:16:54 +08:00
tests Benchmarks: Code Revision - Revise MicroBenchmark class to be more flexible. (#66) 2021-05-13 18:58:47 +08:00
.clang-format Setup - Add lint for cpp sources (#73) 2021-05-17 11:36:41 +08:00
.codecov.yml Setup: Code Revision - Rename dev branch to main in config and readme (#55) 2021-04-14 17:40:34 +08:00
.dockerignore Setup: Init - Initialize setup.py and basic configs (#4) 2021-01-28 21:01:28 +08:00
.editorconfig Setup - Add lint for cpp sources (#73) 2021-05-17 11:36:41 +08:00
.flake8 Setup: Revision - Update lint rules (#7) 2021-02-01 14:12:02 +08:00
.gitattributes Setup: Init - Initialize setup.py and basic configs (#4) 2021-01-28 21:01:28 +08:00
.gitignore Setup: Init - Initialize setup.py and basic configs (#4) 2021-01-28 21:01:28 +08:00
.mypy.ini Setup: Revision - Update lint rules (#7) 2021-02-01 14:12:02 +08:00
.pre-commit-config.yaml Setup: Init - Initialize setup.py and basic configs (#4) 2021-01-28 21:01:28 +08:00
.style.yapf Setup: Revision - Update lint rules (#7) 2021-02-01 14:12:02 +08:00
CODE_OF_CONDUCT.md Initial CODE_OF_CONDUCT.md commit 2020-12-16 18:22:21 -08:00
LICENSE Initial LICENSE commit 2020-12-16 18:22:25 -08:00
MANIFEST.in CLI - Add command sb [version,deploy,exec,run] (#10) 2021-03-12 13:16:43 +08:00
Makefile Setup - Add lint for cpp sources (#73) 2021-05-17 11:36:41 +08:00
README.md Setup: Code Revision - Rename dev branch to main in config and readme (#55) 2021-04-14 17:40:34 +08:00
SECURITY.md Setup: Init - Initialize setup.py and basic configs (#4) 2021-01-28 21:01:28 +08:00
SUPPORT.md Docs - Initialize README (#6) 2021-02-01 20:21:12 +08:00
setup.py CLI - Integration with Executor and Runner (#26) 2021-04-12 17:38:17 +08:00

README.md

SuperBenchmark

Lint Codecov

Azure Pipelines Build Status
cpu-unit-test Build Status
gpu-unit-test Build Status

SuperBench is a benchmarking and diagnosis tool for AI infrastructure, which supports:

  • Comprehensive AI infrastructure validation
    • Distributed validation tools to validate hundreds or thousands of servers automatically
    • Consider both raw hardware and E2E model performance with ML workload patterns
    • Provide a fast and accurate way to detect and locate hardware problems
    • Performance/Quality Gates for hardware and system release
  • Benchmarking with typical AI workload patterns
    • Provide comprehensive performance comparison between different existing hardware
    • Give a better understanding for new DL software & hardware
  • Detailed performance analysis and diagnosis
    • Provide detailed performance report and advanced analysis tool  

It includes micro-benchmark for primitive computation and communication benchmarking, and model-benchmark to measure domain-aware end-to-end deep learning workloads.

🔴 Note: SuperBench is in the early pre-alpha stage for open source, and not ready for general public yet. If you want to jump in early, you can try building latest code yourself.

Installation

Using Docker (Preferred)

System Requirements

  • Platform: Ubuntu 18.04 or later (64-bit)
  • Docker: Docker CE 19.03 or later

Install SuperBench

  • Using Pre-Build Images

    docker pull superbench/superbench:dev-cuda11.1.1
    docker run -it --rm \
        --privileged --net=host --ipc=host --gpus=all \
        superbench/superbench:dev-cuda11.1.1 bash
    
  • Building the Image

    docker build -f dockerfile/cuda11.1.1.dockerfile -t superbench/superbench:dev .
    

Using Python

System Requirements

  • Platform: Ubuntu 18.04 or later (64-bit); Windows 10 (64-bit) with WSL2

  • Python: Python 3.6 or later, pip 18.0 or later

    Check whether Python environment is already configured:

    # check Python version
    python3 --version
    # check pip version
    python3 -m pip --version
    

    If not, install the followings:

    It's recommended to use a virtual environment (optional):

    # create a new virtual environment
    python3 -m venv --system-site-packages ./venv
    # activate the virtual environment
    source ./venv/bin/activate
    
    # exit the virtual environment later
    # after you finish running superbench
    deactivate
    

Install SuperBench

  • PyPI Binary

    # not available yet
    
  • From Source

    # get source code
    git clone https://github.com/microsoft/superbenchmark
    cd superbenchmark
    
    # install superbench
    python3 -m pip install .
    

Usage

Run SuperBench

# run benchmarks in default settings
sb exec

# use a custom config
sb exec --config-file ./superbench/config/default.yaml

Benchmark Gallary

Please find more benchmark examples here.

Developer Guide

Follow Installation using Python.

Set Up

# get latest code
git clone https://github.com/microsoft/superbenchmark
cd superbenchmark

# install superbench
python3 -m pip install -e .[dev,test]

Lint and Test

# format code using yapf
python3 setup.py format

# check code style with mypy and flake8
python3 setup.py lint

# run all unit tests
python3 setup.py test

Submit a Pull Request

Please install pre-commit before git commit to run all pre-checks.

pre-commit install

Open a pull request to main branch on GitHub.

Contributing

Contributor License Agreement

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Contributing principles

SuperBenchmark is an open-source project. Your participation and contribution are highly appreciated. There are several important things you need know before contributing to this project:

What content can be added to SuperBenchmark

  1. Bug fixes for existing features.

  2. New features for benchmark module (micro-benchmark, model-benchmark, etc.)

    If you would like to contribute a new feature on SuperBenchmark, please submit your proposal first. In GitHub Issues module, choose Enhancement Request to finish the submission. If the proposal is accepted, you can submit pull requests to origin main branch.

Contribution steps

If you would like to contribute to the project, please follow below steps of joint development on GitHub.

  1. Fork the repo first to your personal GitHub account.
  2. Checkout from main branch for feature development.
  3. When you finish the feature, please fetch the latest code from origin repo, merge to your branch and resolve conflict.
  4. Submit pull requests to origin main branch.
  5. Please note that there might be comments or questions from reviewers. It will need your help to update the pull request.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.