From dceb33c57a42bfdd1baaf214b360fd4a6cfa7de2 Mon Sep 17 00:00:00 2001 From: Guang Yang Date: Mon, 16 Sep 2024 17:00:36 -0700 Subject: [PATCH] Add a README.md for benchmarking infra --- docs/source/_static/img/benchmark-infra.png | Bin 0 -> 91636 bytes extension/benchmark/README.md | 72 ++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 docs/source/_static/img/benchmark-infra.png create mode 100644 extension/benchmark/README.md diff --git a/docs/source/_static/img/benchmark-infra.png b/docs/source/_static/img/benchmark-infra.png new file mode 100644 index 0000000000000000000000000000000000000000..a5d30774257e67e4c8fc6a8df94b5fd91228cbce GIT binary patch literal 91636 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%0AEA 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

=&0;`$9R_R=TQg7$!qwimO7M%~=18gC_bE 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 **Disclaimer:** The infrastructure is new and experimental. We're working on improving its accessibility and stability over time. The models performance tuning is still a work in progress. The benchmark numbers presented in this document are not vetted yet and should be treated as preliminary results. + + +## Preliminary Benchmark Results + +Below is a table summarizing some example data points obtained via the infra. These numbers represent model load time and average inference latency across different platforms and backends. + +| Model | Backend | Model Load Time (ms) | Avg Inference Latency (ms) | Device | +|-----------------------|--------------|----------------------|----------------------------|------------------------| +| DeepLabV3 (dl3) | XNN Q8 | [90.616](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218985758) | [666.219](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218985758) | Samsung S22 | +| DeepLabV3 (dl3) | QNN FP16 | [182.207](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218985141) | [9.759](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218985141) | Samsung S22 | +| MobileNetV3 (mv3) | XNN Q8 | [34.024](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218988461) | [252.628](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218988461) | Samsung S22 | +| MobileNetV3 (mv3) | QNN FP16 | [168.414](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218987785) | [1.182](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218987785) | Samsung S22 | +| MobileNetV3 (mv3) | COREML FP16 | [61.583](https://github.com/pytorch/executorch/actions/runs/10836589365/job/30078681158) | [682.197](https://github.com/pytorch/executorch/actions/runs/10836589365/job/30078681158) | Apple iPhone 15 Pro | +| MobileNetV2 (mv2) | XNN Q8 | [14.397](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218987379) | [10.796](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218987379) | Samsung S22 | +| MobileNetV2 (mv2) | QNN FP16 | [136.862](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218987097) | [0.673](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218987097) | Samsung S22 | +| InceptionV4 (ic4) | XNN Q8 | [87.617](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218986716) | [117.937](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218986716) | Samsung S22 | +| InceptionV4 (ic4) | QNN FP16 | [163.943](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218986381) | [2.734](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218986381) | Samsung S22 | +| InceptionV3 (ic3) | XNN Q8 | [60.708](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218986023) | [98.390](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218986023) | Samsung S22 | +| InceptionV3 (ic3) | QNN FP16 | [134.732](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218985425) | [1.351](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218985425) | Samsung S22 | +| TorchVisionVit (vit) | QNN FP16 | [174.430](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218989581) | [199.279](https://github.com/pytorch/executorch/actions/runs/10875550238/job/30218989581) | Samsung S22 | +| ResNet50 (resnet50) | COREML FP16 | [84.453](https://github.com/pytorch/executorch/actions/runs/10836589365/job/30078680731) | [1329.846](https://github.com/pytorch/executorch/actions/runs/10836589365/job/30078680731) | Apple iPhone 15 Pro | +| Wave2Letter (w2l) | XNN Q8 | [33.913](https://github.com/pytorch/executorch/actions/runs/10857890364/job/30139445319) | [135.584](https://github.com/pytorch/executorch/actions/runs/10857890364/job/30139445319) | Apple iPhone 15 Pro | + + +## Supported Use Cases + +The benchmarking infrastructure currently supports two major use-cases: + +- **On-Demand Model Benchmarking:** Users can trigger benchmarking requests via GitHub Actions workflow dispatch UI. This feature will help backend developers collaborate with the ExecuTorch team to debug performance issues and advance state-of-the-art (SOTA) performance. + +- **Automated Nightly Batched Benchmarking:** The infrastructure performs automated nightly benchmarking to track and monitor performance over time. This allows for consistent performance monitoring and regression detection. + + +## High-Level Diagram + +![Benchmarking Infrastructure](../../docs/source/_static/img/benchmark-infra.png) + + +## Scheduling On-Demand Benchmarking + +Users can schedule a benchmarking workflow on a pull request through GitHub Actions using the workflow dispatch UI. Follow the steps below to trigger benchmarking: +1. Access `pytorch/executorch` repository on GitHub and navigate to the "Actions" tab. +2. Select `android-perf` or `apple-perf` workflow from the list of workflows. +3. Click "Run workflow" and fill in the required parameters for the model you want to benchmark, e.g. branch name, model name and delegate, and device pool, etc. + +> **Note:** Write permission to the repo will be needed in order to run the on-demand workflow. + + +## Retrieving Benchmark Results + +Currently, retrieving benchmark results involves manually extracting the `benchmark_results.txt` from the `Customer_Artifacts.zip` stored on AWS S3 from the benchmarking job. This process is not yet streamlined. We are working on simplifying this process and linking the results directly to the dashboard, which will be available soon. + + +## Feedback and Issue Reporting +We encourage users to share feedback or report any issues while using the infra. Please submit your feedback via GitHub Issues.