From b11224dba33492f012c863ce51c09937fb7c5cd9 Mon Sep 17 00:00:00 2001 From: Jonathan Ding Date: Wed, 11 Feb 2026 21:41:43 +0800 Subject: [PATCH 1/2] initial commit - first version explainer.md and daop-illustration project --- .gitignore | 154 +++++ LICENSE.md | 10 + daop-illustration/IMPLEMENTATION.md | 122 ++++ daop-illustration/LICENSE | 201 ++++++ daop-illustration/README.md | 78 +++ daop-illustration/demo-server.js | 63 ++ .../background-blur/background-blur-demo.html | 641 ++++++++++++++++++ .../examples/background-blur/blur-renderer.js | 151 +++++ .../examples/background-blur/meeting.jpg | Bin 0 -> 455059 bytes .../examples/background-blur/selfie-model.js | 349 ++++++++++ daop-illustration/package.json | 14 + daop-illustration/src/daop-context.js | 131 ++++ daop-illustration/src/daop-graph-builder.js | 209 ++++++ daop-illustration/src/daop-graph.js | 281 ++++++++ daop-illustration/src/index.js | 18 + daop-illustration/src/ir/graph-ir.js | 149 ++++ daop-illustration/src/ir/shape-inference.js | 280 ++++++++ daop-illustration/src/polyfill.js | 102 +++ .../src/qos/estimate-qos-interp.js | 56 ++ .../src/qos/interpolation/poly-fit.js | 130 ++++ .../src/qos/interpolation/time-model.js | 206 ++++++ .../src/qos/microbench/bench-runner.js | 264 ++++++++ .../src/qos/microbench/op-benchmarks.js | 577 ++++++++++++++++ explainer.md | 420 ++++++++++++ 24 files changed, 4606 insertions(+) create mode 100644 LICENSE.md create mode 100644 daop-illustration/IMPLEMENTATION.md create mode 100644 daop-illustration/LICENSE create mode 100644 daop-illustration/README.md create mode 100644 daop-illustration/demo-server.js create mode 100644 daop-illustration/examples/background-blur/background-blur-demo.html create mode 100644 daop-illustration/examples/background-blur/blur-renderer.js create mode 100644 daop-illustration/examples/background-blur/meeting.jpg create mode 100644 daop-illustration/examples/background-blur/selfie-model.js create mode 100644 daop-illustration/package.json create mode 100644 daop-illustration/src/daop-context.js create mode 100644 daop-illustration/src/daop-graph-builder.js create mode 100644 daop-illustration/src/daop-graph.js create mode 100644 daop-illustration/src/index.js create mode 100644 daop-illustration/src/ir/graph-ir.js create mode 100644 daop-illustration/src/ir/shape-inference.js create mode 100644 daop-illustration/src/polyfill.js create mode 100644 daop-illustration/src/qos/estimate-qos-interp.js create mode 100644 daop-illustration/src/qos/interpolation/poly-fit.js create mode 100644 daop-illustration/src/qos/interpolation/time-model.js create mode 100644 daop-illustration/src/qos/microbench/bench-runner.js create mode 100644 daop-illustration/src/qos/microbench/op-benchmarks.js create mode 100644 explainer.md diff --git a/.gitignore b/.gitignore index e69de29..bf3579a 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,154 @@ +daop-illustration/docs +.vscode + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.* +!.env.example + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp +.cache + +# Sveltekit cache directory +.svelte-kit/ + +# vitepress build output +**/.vitepress/dist + +# vitepress cache directory +**/.vitepress/cache + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# Firebase cache directory +.firebase/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v3 +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions + +# Vite logs files +vite.config.js.timestamp-* +vite.config.ts.timestamp-* + +# AI coding agents +AGENTS.md +.cursor/ +.cursorrules +.github/copilot-instructions.md +.copilot/ +.aider* +.cline/ +.windsurf/ +.augment/ + diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..d63efea --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,10 @@ +All Reports in this Repository are licensed by Contributors +under the +[W3C Software and Document License](https://www.w3.org/copyright/software-license/). + +Contributions to Specifications are made under the +[W3C CLA](https://www.w3.org/community/about/agreements/cla/). + +Contributions to Test Suites are made under the +[W3C 3-clause BSD License](https://www.w3.org/copyright/3-clause-bsd-license-2008/) + diff --git a/daop-illustration/IMPLEMENTATION.md b/daop-illustration/IMPLEMENTATION.md new file mode 100644 index 0000000..5169397 --- /dev/null +++ b/daop-illustration/IMPLEMENTATION.md @@ -0,0 +1,122 @@ +# DAOP Illustration: Reference Implementation + +> **Note on Illustration Purposes**: This implementation is provided for **illustration purposes** to demonstrate the feasibility of the `estimateQoS()` API. It uses a simplified log-log polynomial interpolation approach. A production implementation could employ other strategies — such as Roofline models, learned cost models, hardware-specific operator libraries, or ML-based performance predictors — depending on the target platform and accuracy requirements. + +## 1. Overview +This document describes the implementation strategy for the `estimateQoS()` API in the DAOP (Dynamic AI Offloading Protocol) illustration. The estimation strategy uses **log-log polynomial interpolation** based on operator-level micro-benchmarks. + +The internals of these estimations are entirely opaque to the application. The application receives only a high-level performance tier (e.g., "excellent" or "fair"), allowing for hardware-agnostic offloading decisions without exposing raw timing data or device-specific characteristics. + +## 2. Performance Tiers +The implementation categorizes the estimated graph latency into one of seven performance tiers. These tiers correspond to typical user experience expectations: + +| Tier | Latency Threshold | Description | +|------|-------------------|-------------| +| excellent | < 16ms | Real-time (60fps) performance | +| good | < 100ms | Interactive / seamless UI | +| fair | < 1s | Responsive but noticeable | +| moderate | < 10s | Tolerable for background tasks | +| slow | < 30s | Significant wait time | +| very-slow | < 60s | Approaching timeout limits | +| poor | ≥ 60s | Unacceptable performance | + +## 3. Estimation Strategy: Log-Log Polynomial Interpolation +Empirical observations show that operator execution time on modern hardware often follows a power-law relationship with the total number of processed elements: +`time ≈ a · (totalElements)^b` + +By taking the logarithm of both sides, this relationship becomes linear in log-log space: +`log(time) = log(a) + b · log(totalElements)` + +This implementation fits a **degree-1 polynomial** (linear) in log-log space: +`log(time) = c0 + c1 · log(n)` + +The coefficients (`c0`, `c1`) are found using least-squares normal equations, solved via **Gaussian elimination with partial pivoting**. + +#### Small-Size Noise Handling (Clamp) + +At small input sizes, GPU dispatch overhead can dominate actual computation time, producing a U-shaped curve in log-log space — small inputs appear slower than medium ones. Left unchecked, a polynomial fit on this data extrapolates catastrophically for very small inputs. + +To address this, the fitter applies a **left-side clamp**: +1. Find the measured point with the **minimum medianMs** (the "valley" of the U). +2. **Clamp** all points to the left of it to that minimum value. +3. **Fit** the degree-1 polynomial using only points from the minimum onward — clamped points are excluded from the fit. +4. At **prediction time**, any input size at or below the minimum-point's size returns the flat clamp value instead of polynomial extrapolation. + +This ensures monotonic (non-decreasing) predictions: small inputs never produce absurdly high time estimates. + +**Prediction Process:** +1. Calculate the natural log of the input element count: `ln_n = log(totalElements)`. +2. If `ln_n` is at or below the clamp boundary, return the clamped floor value directly. +3. Otherwise, evaluate the fitted polynomial: `ln_time = polyEval(coeffs, ln_n)`. +4. Revert to time domain: `estimatedTime = exp(ln_time)`. + +If a polynomial has not yet been fitted for an operator (e.g., during the first calibration run), the system falls back to piecewise linear interpolation on the raw benchmarked data points. + +## 4. Shape-Aware Micro-Benchmarks +To populate the estimation models, the implementation runs a suite of micro-benchmarks for supported operators across six size variants. + +### Size Variants +Benchmarking across multiple sizes captures the "utilization curve" where small tensors may not fully saturate compute units. + +| Variant | Representative Shape | Total Elements | +|---------|----------------------|----------------| +| xs | [1, 16, 16, 8] | 2,048 | +| small | [1, 32, 32, 16] | 16,384 | +| medium | [1, 64, 64, 24] | 98,304 | +| large | [1, 128, 128, 32] | 524,288 | +| xl | [1, 256, 256, 32] | 2,097,152 | +| xxl | [1, 512, 512, 32] | 8,388,608 | + +### Benchmark Methodology +The system benchmarks 7 operator types: `conv2d`, `add`, `mul`, `relu`, `sigmoid`, `clamp`, and `averagePool2d`. + +1. **Baseline Overhead Subtraction**: Before benchmarking real operators, the runner measures the dispatch + readTensor overhead using a trivial (reshape) graph at a small fixed size. To improve accuracy, this measurement is repeated across 3 independent rounds (each with 50 batched iterations), and the median-of-medians is used. This baseline is subtracted from each operator's measured time to isolate pure compute cost. +2. **Amortized Readback**: The runner dispatches 10 operations (batchSize=10) before a single `readTensor` call, further reducing per-dispatch synchronization overhead. +3. **Iterations**: Each benchmark performs 5 warmup runs followed by 30 timed iterations to find the median latency. +4. **Storage**: Raw data points `{ totalElements, medianMs }` are stored in the `TimeModelDatabase`. + +## 5. End-to-End Estimation Flow + +### Benchmark Phase (Offline/Calibration) +1. Measure baseline dispatch + readTensor overhead using a trivial graph. +2. Iterate through supported operator types and size variants. +3. Execute benchmarks, subtract baseline overhead, and record median latencies. +4. Store results in `TimeModelDatabase` and fit log-log polynomials. +5. Persist models to `localStorage` under the key `"daop_time_models"`. + +### Estimation Phase (Online) +1. **Traverse Graph**: Walk the IR of the weightless graph. +2. **Sum Node Latencies**: For each node, look up the operator in `TimeModelDatabase`. + - Call `predict(opType, inputElements)` to get the estimated time. +3. **Add Overhead**: Add a graph dispatch overhead: `0.5 + numNodes * 0.005 ms`. +4. **Assign Tier**: Map the total estimated latency to a performance tier string. + +## 6. Project Structure + +``` +daop-illustration/ + src/ + index.js # Public API entry point + polyfill.js # WebNN feature detection and DAOP initialization + daop-context.js # Wraps native MLContext; delegates to interpolation estimator + daop-graph-builder.js # IR graph builder supporting weightless constants + daop-graph.js # IR graph representation and Mermaid export + ir/ + graph-ir.js # Core IR definitions (TensorDesc, IRNode) + shape-inference.js # Shape inference logic for operators + qos/ + estimate-qos-interp.js # Interpolation-based QoS estimator + interpolation/ + poly-fit.js # Polynomial fitting (Normal Equations, Gaussian) + time-model.js # TimeModelDatabase (stores points, fits, predicts) + microbench/ + bench-runner.js # Hardware-specific benchmark execution engine + op-benchmarks.js # Operator configurations (xs, small, medium, large, xl, xxl) + examples/ + background-blur/ + background-blur-demo.html # Interactive two-column demo page + selfie-model.js # Model graph definition + weight loader + blur-renderer.js # Image processing + blur compositing + meeting.jpg # Sample input image +``` + diff --git a/daop-illustration/LICENSE b/daop-illustration/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/daop-illustration/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/daop-illustration/README.md b/daop-illustration/README.md new file mode 100644 index 0000000..3c9ae3f --- /dev/null +++ b/daop-illustration/README.md @@ -0,0 +1,78 @@ +# DAOP Illustration + +A working JavaScript illustration of the +[Dynamic AI Offloading Protocol (DAOP)](../explainer.md) using the WebNN API. + +This project demonstrates how the proposed `estimateQoS()` API can work in practice: +an application builds a **weightless** computation graph, estimates performance via +operator micro-benchmarks and polynomial interpolation, decides whether to run locally +or offload to the cloud, and — if local — downloads weights and executes inference. + +## Prerequisites + +- A WebNN-capable browser (e.g., Chrome Canary with WebNN flags enabled). + See [installation guide](https://webnn.io/en/learn/get-started/installation). +- Node.js (for the static file server). + +## Running the Demo + +```bash +npm install +npm start # starts http://localhost:8080 +``` + +Open `http://localhost:8080/examples/background-blur/background-blur-demo.html` in the WebNN-capable +browser. + +### Background Blur Demo + +The demo applies AI-powered background blur to a meeting photo using the MediaPipe Selfie +Segmentation model. The workflow follows the DAOP protocol: + +1. **Build weightless graph** — the model topology is recorded without downloading weights. +2. **Estimate QoS** — per-operator micro-benchmarks and interpolation produce a performance tier. +3. **Offloading decision** — if the tier is acceptable (< 10 s), run locally; otherwise + offload to cloud. +4. **Execute** — download weights, compile the native WebNN graph, run inference, apply blur. + +The right column of the demo exposes DAOP internals: operator benchmarks, estimation +curves, computation graph visualization, and a timing comparison between estimated and +actual latency. + +## Implementation Details + +See [IMPLEMENTATION.md](./IMPLEMENTATION.md) for a detailed description of the estimation +strategy, including shape-aware micro-benchmarks, polynomial interpolation, and the 7-tier +performance classification. + +## Project Structure + +``` +src/ # DAOP library (reusable) + index.js # Public API + polyfill.js # WebNN detection + DAOP initialization + daop-context.js # Wraps native MLContext with estimateQoS / bindConstants / compute + daop-graph-builder.js # IR graph builder (weightless constants) + daop-graph.js # IR graph + Mermaid visualization + ir/ + graph-ir.js # TensorDesc, IROperand, IRNode, IRGraph + shape-inference.js # Shape inference for conv2d, pool, resample, etc. + qos/ + estimate-qos-interp.js # Interpolation-based QoS estimation + tier assignment + interpolation/ + poly-fit.js # Polynomial fitting (Normal Equations, Gaussian) + time-model.js # TimeModelDatabase (stores points, fits, predicts) + microbench/ + bench-runner.js # Multi-size benchmark runner + op-benchmarks.js # Per-op benchmark configurations (xs–xxl) +examples/ + background-blur/ # Background blur demo (self-contained) + background-blur-demo.html # Interactive two-column demo page + selfie-model.js # Model graph definition + weight loader + blur-renderer.js # Image processing + blur compositing + meeting.jpg # Sample input image +``` + +## License + +Apache 2.0 diff --git a/daop-illustration/demo-server.js b/daop-illustration/demo-server.js new file mode 100644 index 0000000..34f57bc --- /dev/null +++ b/daop-illustration/demo-server.js @@ -0,0 +1,63 @@ +import http from "http"; +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const PORT = 8080; + +const MIME_TYPES = { + ".html": "text/html", + ".js": "text/javascript", + ".css": "text/css", + ".json": "application/json", + ".png": "image/png", + ".jpg": "image/jpg", + ".jpeg": "image/jpeg", + ".gif": "image/gif", + ".svg": "image/svg+xml", + ".webp": "image/webp", + ".wasm": "application/wasm", +}; + +const server = http.createServer((req, res) => { + console.log(`${req.method} ${req.url}`); + + // Default to the background blur demo + let filePath = req.url === "/" ? "/examples/background-blur/background-blur-demo.html" : req.url; + + // Remove query strings or hashes if present + filePath = filePath.split("?")[0].split("#")[0]; + + // Ensure we don't try to access files outside the directory + // Remove leading slash for path.join to behave consistently + const safePath = path.normalize(filePath).replace(/^[\/\\]+/, ""); + let fullPath = path.join(__dirname, safePath); + + console.log(`Serving: ${fullPath}`); + + const extname = path.extname(fullPath); + let contentType = MIME_TYPES[extname] || "application/octet-stream"; + + fs.readFile(fullPath, (error, content) => { + if (error) { + if (error.code === "ENOENT") { + res.writeHead(404); + res.end("File not found"); + } else { + res.writeHead(500); + res.end(`Server error: ${error.code}`); + } + } else { + res.writeHead(200, { "Content-Type": contentType }); + res.end(content, "utf-8"); + } + }); +}); + +server.listen(PORT, () => { + console.log(`Server running at http://localhost:${PORT}/`); + console.log(`Demo page: http://localhost:${PORT}/examples/background-blur/background-blur-demo.html`); +}); diff --git a/daop-illustration/examples/background-blur/background-blur-demo.html b/daop-illustration/examples/background-blur/background-blur-demo.html new file mode 100644 index 0000000..06497a4 --- /dev/null +++ b/daop-illustration/examples/background-blur/background-blur-demo.html @@ -0,0 +1,641 @@ + + + + + + DAOP: Background Blur Demo + + + + + + + + + + + + +
+ +
+ +
+
+

Web Application

+
+
+

Background Blur with WebNN

+

This demo applies AI-powered background blur using the WebNN API. The application only sees a high-level performance tier — all estimation internals are opaque.

+ + + +
+ +
+ +
+
+
+ + +
+
+

Under the Hood — DAOP Internals

+

One possible implementation strategy (for illustration only)

+
+ + +
+

⚙️ Operator Micro-benchmarks

+
+ + + +
+
+ + +
+ + + + + + + + + + + + + +
+
+ + + + \ No newline at end of file diff --git a/daop-illustration/examples/background-blur/blur-renderer.js b/daop-illustration/examples/background-blur/blur-renderer.js new file mode 100644 index 0000000..ba57d4e --- /dev/null +++ b/daop-illustration/examples/background-blur/blur-renderer.js @@ -0,0 +1,151 @@ +// src/demo/background-blur/blur-renderer.js + +/** + * BlurRenderer — image processing for background blur demo. + * + * Handles: image loading → resize → model input prep → mask application → display + */ +export class BlurRenderer { + /** + * @param {HTMLCanvasElement} canvas - Display canvas + */ + constructor(canvas) { + this.canvas = canvas; + this.ctx = canvas.getContext("2d"); + this._originalImage = null; + } + + /** + * Load an image from URL into the canvas. + */ + async loadImage(url) { + return new Promise((resolve, reject) => { + const img = new Image(); + img.crossOrigin = "anonymous"; + img.onload = () => { + this._originalImage = img; + this.canvas.width = img.width; + this.canvas.height = img.height; + this.ctx.drawImage(img, 0, 0); + resolve(img); + }; + img.onerror = reject; + img.src = url; + }); + } + + /** + * Get the current image as a Float32Array suitable for model input. + * Resizes to modelWidth × modelHeight and normalizes to [0, 1]. + * + * @param {number} modelWidth + * @param {number} modelHeight + * @param {string} layout - "nchw" or "nhwc" + * @returns {Float32Array} + */ + getModelInput(modelWidth, modelHeight, layout = "nchw") { + if (!this._originalImage) throw new Error("No image loaded"); + + // Create offscreen canvas for resize + const offscreen = document.createElement("canvas"); + offscreen.width = modelWidth; + offscreen.height = modelHeight; + const offCtx = offscreen.getContext("2d"); + offCtx.drawImage(this._originalImage, 0, 0, modelWidth, modelHeight); + + const imageData = offCtx.getImageData(0, 0, modelWidth, modelHeight); + const { data } = imageData; // RGBA uint8 + + const size = modelWidth * modelHeight; + const float32 = new Float32Array(1 * 3 * size); + + if (layout === "nchw") { + // [1, 3, H, W] + for (let i = 0; i < size; i++) { + float32[i] = data[i * 4] / 255.0; // R + float32[size + i] = data[i * 4 + 1] / 255.0; // G + float32[2 * size + i] = data[i * 4 + 2] / 255.0; // B + } + } else { + // [1, H, W, 3] + for (let i = 0; i < size; i++) { + float32[i * 3] = data[i * 4] / 255.0; + float32[i * 3 + 1] = data[i * 4 + 1] / 255.0; + float32[i * 3 + 2] = data[i * 4 + 2] / 255.0; + } + } + + return float32; + } + + /** + * Apply segmentation mask to blur the background. + * + * @param {Float32Array} mask - 256x256 segmentation mask (0=bg, 1=fg) + * @param {number} blurRadius - CSS blur radius in px + */ + applyBlur(mask, blurRadius = 15) { + if (!this._originalImage) throw new Error("No image loaded"); + + const { width, height } = this.canvas; + + // 1. Draw blurred version + const blurCanvas = document.createElement("canvas"); + blurCanvas.width = width; + blurCanvas.height = height; + const blurCtx = blurCanvas.getContext("2d"); + blurCtx.filter = `blur(${blurRadius}px)`; + blurCtx.drawImage(this._originalImage, 0, 0, width, height); + + // 2. Scale mask to original image size + const maskCanvas = document.createElement("canvas"); + maskCanvas.width = 256; + maskCanvas.height = 256; + const maskCtx = maskCanvas.getContext("2d"); + const maskImageData = maskCtx.createImageData(256, 256); + + for (let i = 0; i < 256 * 256; i++) { + const val = Math.round(mask[i] * 255); + maskImageData.data[i * 4] = val; + maskImageData.data[i * 4 + 1] = val; + maskImageData.data[i * 4 + 2] = val; + maskImageData.data[i * 4 + 3] = 255; + } + maskCtx.putImageData(maskImageData, 0, 0); + + // Scale mask to image size + const scaledMaskCanvas = document.createElement("canvas"); + scaledMaskCanvas.width = width; + scaledMaskCanvas.height = height; + const scaledMaskCtx = scaledMaskCanvas.getContext("2d"); + scaledMaskCtx.drawImage(maskCanvas, 0, 0, width, height); + + // 3. Composite: foreground (original) where mask=1, background (blurred) where mask=0 + this.ctx.drawImage(blurCanvas, 0, 0); // Start with blurred + + // Use mask as alpha for original image + const origCanvas = document.createElement("canvas"); + origCanvas.width = width; + origCanvas.height = height; + const origCtx = origCanvas.getContext("2d"); + origCtx.drawImage(this._originalImage, 0, 0, width, height); + + const origData = origCtx.getImageData(0, 0, width, height); + const scaledMask = scaledMaskCtx.getImageData(0, 0, width, height); + + // Apply mask alpha + for (let i = 0; i < origData.data.length; i += 4) { + origData.data[i + 3] = scaledMask.data[i]; // Use R channel of mask as alpha + } + origCtx.putImageData(origData, 0, 0); + + this.ctx.drawImage(origCanvas, 0, 0); + } + + /** Reset to original image */ + reset() { + if (this._originalImage) { + this.ctx.drawImage(this._originalImage, 0, 0); + } + } +} diff --git a/daop-illustration/examples/background-blur/meeting.jpg b/daop-illustration/examples/background-blur/meeting.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1627b8114f65200c8dc1490b0f5e44b3f235fee2 GIT binary patch literal 455059 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

ay5vO!!%>HMuou_V`Y`NY8Ax_4m}BI6Ry= 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 1; + const convOut = builder.conv2d(input, weight, { + ...options, + bias, + inputLayout: "nhwc", + filterLayout: isDepthwise ? "ihwo" : "ohwi", + }); + + if (activation === "relu") return builder.relu(convOut); + if (activation === "sigmoid") return builder.sigmoid(convOut); + return convOut; +} + +/** + * SubGraphA — hardswish-like activation fused with convolution: + * out = conv(input) * clamp(conv(input) + 3, 0, 6) * (1/6) + */ +function subGraphA(builder, input, convIndex, addB, mulA, convOptions = {}) { + const c = conv(builder, input, convIndex, "", convOptions); + const added = builder.add(c, addB); + const clamped = builder.clamp(added, { minValue: 0, maxValue: 6 }); + const scaled = builder.mul(mulA, clamped); + return builder.mul(c, scaled); +} + +/** + * SubGraphB — SE-like attention block: + * avgPool → conv(relu) → conv(sigmoid) → mul(mulTarget || input) + */ +function subGraphB(builder, input, convIndex, poolStride, mulTarget) { + const strides = [poolStride, poolStride]; + const pooled = builder.averagePool2d(input, { + windowDimensions: strides, + strides, + layout: "nhwc", + }); + const reduced = conv(builder, pooled, convIndex, "relu"); + const gate = conv(builder, reduced, convIndex + 1, "sigmoid"); + return builder.mul(mulTarget || input, gate); +} + +/** + * Build the full Selfie Segmentation General graph. + * + * Weight constants include correct tensor shapes (from the official model + * metadata) but no buffer data — they are "weightless". This enables shape + * inference and QoS estimation before any weight download. Actual weight + * buffers are attached later via graph.bindConstants(). + * + * @param {MLGraphBuilder} builder - DAOP or native graph builder + * @returns {{ graph: Object, weightMeta: null }} + */ +export function buildSelfieSegmentationGraph(builder) { + const input = builder.input("input", { dataType: "float32", shape: [1, 256, 256, 3] }); + + const addB = builder.constant( + { shape: [1, 1, 1, 1], dataType: "float32", label: null }, + new Float32Array([3]), + ); + const mulA = builder.constantScalar("float32", 0.1666666716337204); + + // ── Encoder ────────────────────────────────────────────── + + const sgA0 = subGraphA(builder, input, 0, addB, mulA, { + strides: [2, 2], + padding: [0, 1, 0, 1], + }); + + const c1 = conv(builder, sgA0, 1, "relu"); + const c2 = conv(builder, c1, 2, "relu", { + strides: [2, 2], + padding: [0, 1, 0, 1], + groups: 16, + }); + + const sgB0 = subGraphB(builder, c2, 3, 64); + + const c5 = conv(builder, sgB0, 5, ""); + const c6 = conv(builder, c5, 6, "relu"); + const c7 = conv(builder, c6, 7, "relu", { + strides: [2, 2], + padding: [0, 1, 0, 1], + groups: 72, + }); + const c8 = conv(builder, c7, 8, ""); + + const c9 = conv(builder, c8, 9, "relu"); + const c10 = conv(builder, c9, 10, "relu", { + padding: [1, 1, 1, 1], + groups: 88, + }); + const c11 = conv(builder, c10, 11, ""); + const add0 = builder.add(c11, c8); + + const sgA1 = subGraphA(builder, add0, 12, addB, mulA); + const sgA2 = subGraphA(builder, sgA1, 13, addB, mulA, { + strides: [2, 2], + padding: [1, 2, 1, 2], + groups: 96, + }); + const sgB1 = subGraphB(builder, sgA2, 14, 16); + const c16 = conv(builder, sgB1, 16, ""); + + const sgA3 = subGraphA(builder, c16, 17, addB, mulA); + const sgA4 = subGraphA(builder, sgA3, 18, addB, mulA, { + padding: [2, 2, 2, 2], + groups: 128, + }); + const sgB2 = subGraphB(builder, sgA4, 19, 16); + const c21 = conv(builder, sgB2, 21, ""); + const add1 = builder.add(c21, c16); + + const sgA5 = subGraphA(builder, add1, 22, addB, mulA); + const sgA6 = subGraphA(builder, sgA5, 23, addB, mulA, { + padding: [2, 2, 2, 2], + groups: 128, + }); + const sgB3 = subGraphB(builder, sgA6, 24, 16); + const c26 = conv(builder, sgB3, 26, ""); + const add2 = builder.add(c26, add1); + + const sgA7 = subGraphA(builder, add2, 27, addB, mulA); + const sgA8 = subGraphA(builder, sgA7, 28, addB, mulA, { + padding: [2, 2, 2, 2], + groups: 96, + }); + const sgB4 = subGraphB(builder, sgA8, 29, 16); + const c31 = conv(builder, sgB4, 31, ""); + const add3 = builder.add(c31, add2); + + const sgA9 = subGraphA(builder, add3, 32, addB, mulA); + const sgA10 = subGraphA(builder, sgA9, 33, addB, mulA, { + padding: [2, 2, 2, 2], + groups: 96, + }); + const sgB5 = subGraphB(builder, sgA10, 34, 16); + const c36 = conv(builder, sgB5, 36, ""); + const add4 = builder.add(c36, add3); + + // ── Decoder ────────────────────────────────────────────── + + const c37 = conv(builder, add4, 37, "relu"); + const avgPool0 = builder.averagePool2d(add4, { + windowDimensions: [16, 16], + strides: [16, 16], + layout: "nhwc", + }); + const c38 = conv(builder, avgPool0, 38, "sigmoid"); + const mul0 = builder.mul(c37, c38); + + const resample0 = builder.resample2d(mul0, { + sizes: [32, 32], + mode: "linear", + axes: [1, 2], + }); + const c39 = conv(builder, resample0, 39, ""); + const add5 = builder.add(c39, add0); + + const sgB6 = subGraphB(builder, add5, 40, 32, add0); + const add6 = builder.add(sgB6, c39); + + const c42 = conv(builder, add6, 42, "relu"); + const c43 = conv(builder, c42, 43, "relu", { + padding: [1, 1, 1, 1], + groups: 24, + }); + const add7 = builder.add(c42, c43); + + const resample1 = builder.resample2d(add7, { + sizes: [64, 64], + mode: "linear", + axes: [1, 2], + }); + const c44 = conv(builder, resample1, 44, ""); + const add8 = builder.add(c5, c44); + + const sgB7 = subGraphB(builder, add8, 45, 64, c5); + const add9 = builder.add(sgB7, c44); + + const c47 = conv(builder, add9, 47, "relu"); + const c48 = conv(builder, c47, 48, "relu", { + padding: [1, 1, 1, 1], + groups: 16, + }); + const add10 = builder.add(c47, c48); + + const resample2 = builder.resample2d(add10, { + sizes: [128, 128], + mode: "linear", + axes: [1, 2], + }); + const c49 = conv(builder, resample2, 49, ""); + const add11 = builder.add(sgA0, c49); + + const sgB8 = subGraphB(builder, add11, 50, 128, sgA0); + const add12 = builder.add(sgB8, c49); + + const c52 = conv(builder, add12, 52, "relu"); + const c53 = conv(builder, c52, 53, "relu", { + padding: [1, 1, 1, 1], + groups: 16, + }); + const add13 = builder.add(c52, c53); + + // ── Final: convTranspose2d 128→256 + sigmoid ─────────── + + const convTransposeWeight = builder.constant({ + shape: [1, 2, 2, 16], dataType: "float32", label: "convTranspose0_weight", + }); + const convTransposeBias = builder.constant( + { shape: [1], dataType: "float32", label: null }, + new Float32Array([0.53271484375]), + ); + const convTranspose = builder.convTranspose2d(add13, convTransposeWeight, { + bias: convTransposeBias, + padding: [0, 0, 0, 0], + strides: [2, 2], + outputSizes: [256, 256], + filterLayout: "ohwi", + inputLayout: "nhwc", + }); + + const output = builder.sigmoid(convTranspose); + + const graph = builder.build({ output }); + return { graph, weightMeta: null }; +} + +/** + * @param {Function} [onProgress] - ({ label, phase }) callback + * @returns {Promise>} + */ +export async function loadWeights(onProgress) { + const [weightsInfo, biasesInfo] = await Promise.all([ + fetch(`${WEIGHTS_BASE_URL}/weights_nhwc.json`).then(r => r.json()), + fetch(`${WEIGHTS_BASE_URL}/biases.json`).then(r => r.json()), + ]); + + const [weightsBin, biasesBin] = await Promise.all([ + fetch(`${WEIGHTS_BASE_URL}/weights_nhwc.bin`).then(r => r.arrayBuffer()), + fetch(`${WEIGHTS_BASE_URL}/biases.bin`).then(r => r.arrayBuffer()), + ]); + + const weights = {}; + + for (const [name, meta] of Object.entries(weightsInfo)) { + const label = `${name}_weight`; + weights[label] = new Float32Array(weightsBin, meta.dataOffset, meta.byteLength / 4); + if (onProgress) onProgress({ label, phase: "weight" }); + } + + for (const [name, meta] of Object.entries(biasesInfo)) { + const label = `${name}_bias`; + weights[label] = new Float32Array(biasesBin, meta.dataOffset, meta.byteLength / 4); + if (onProgress) onProgress({ label, phase: "bias" }); + } + + return weights; +} diff --git a/daop-illustration/package.json b/daop-illustration/package.json new file mode 100644 index 0000000..e6b519c --- /dev/null +++ b/daop-illustration/package.json @@ -0,0 +1,14 @@ +{ + "name": "daop-illustration", + "version": "1.0.0", + "description": "DAOP (Dynamic AI Offloading Protocol) illustration using WebNN", + "main": "src/daop/index.js", + "type": "module", + "scripts": { + "start": "node demo-server.js", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC" +} diff --git a/daop-illustration/src/daop-context.js b/daop-illustration/src/daop-context.js new file mode 100644 index 0000000..a4d8f73 --- /dev/null +++ b/daop-illustration/src/daop-context.js @@ -0,0 +1,131 @@ +// src/daop-context.js + +import { estimateQoSInterp } from "./qos/estimate-qos-interp.js"; +import { DAOPGraphBuilder } from "./daop-graph-builder.js"; + +/** + * DAOPContext — wraps native MLContext with DAOP extensions. + * + * Provides the standard MLContext interface plus: + * - estimateQoS(graph, options) — QoS estimation on weightless graph + * - bindConstants(graph, constants) — late-bind weight buffers + * - compute(graph, inputs) — replay IR → native WebNN → execute + */ +export class DAOPContext { + /** + * @param {MLContext} nativeContext - The real browser-provided MLContext + * @param {Object} options - Creation options (deviceType, etc.) + */ + constructor(nativeContext, options = {}) { + this._native = nativeContext; + this.deviceType = options.deviceType || "gpu"; + } + + /** Access the underlying native MLContext */ + get nativeContext() { + return this._native; + } + + /** + * DAOP Extension: Estimate QoS for a weightless graph. + * + * @param {import("./daop-graph.js").DAOPGraph} graph + * @param {Object} [options={}] + * @returns {Object} QoS report with performanceTier + */ + async estimateQoS(graph, options = {}) { + return estimateQoSInterp(graph, options); + } + + /** + * DAOP Extension: Bind constants to a weightless graph. + * + * @param {import("./daop-graph.js").DAOPGraph} graph + * @param {Object} constants - label → typed array + */ + async bindConstants(graph, constants) { + graph.bindConstants(constants); + return { status: "success" }; + } + + /** + * DAOP Extension: Pre-compile a fully-bound graph for execution. + * + * Replays the IR into native WebNN and compiles it. Call this before + * compute() to separate compilation latency from inference latency. + * + * @param {import("./daop-graph.js").DAOPGraph} graph + * @returns {Promise} + */ + async compileGraph(graph) { + if (!graph.isFullyBound()) { + throw new Error("[DAOP] Cannot compile: not all constants are bound. Call bindConstants() first."); + } + await graph.compile(this._native); + } + + /** + * Compile and execute a fully-bound graph. + * + * Replays IR into native WebNN, compiles, dispatches, and returns results. + * + * @param {import("./daop-graph.js").DAOPGraph} graph + * @param {Object} inputs + * @returns {Promise>} + */ + async compute(graph, inputs) { + if (!graph.isFullyBound()) { + throw new Error("[DAOP] Cannot compute: not all constants are bound. Call bindConstants() first."); + } + + // Compile (replay IR → native WebNN graph) + const { graph: nativeGraph, nativeContext } = await graph.compile(this._native); + + // Create input/output tensors + const inputTensors = {}; + const outputTensors = {}; + + // Create input MLTensors + for (const irInput of graph.ir.getInputs()) { + const inputData = inputs[irInput.name]; + if (!inputData) { + throw new Error(`[DAOP] Missing input "${irInput.name}"`); + } + const tensor = await nativeContext.createTensor({ + dataType: irInput.desc.dataType, + shape: irInput.desc.shape, + writable: true, + readable: false, + }); + nativeContext.writeTensor(tensor, inputData); + inputTensors[irInput.name] = tensor; + } + + // Create output MLTensors + for (const [outName, outOpId] of graph.ir.outputs) { + const outOp = graph.ir.getOperand(outOpId); + const tensor = await nativeContext.createTensor({ + dataType: outOp.desc.dataType, + shape: outOp.desc.shape, + writable: false, + readable: true, + }); + outputTensors[outName] = tensor; + } + + // Dispatch + nativeContext.dispatch(nativeGraph, inputTensors, outputTensors); + + // Read back results + const results = {}; + for (const [name, tensor] of Object.entries(outputTensors)) { + results[name] = await nativeContext.readTensor(tensor); + } + + // Cleanup tensors + for (const t of Object.values(inputTensors)) t.destroy(); + for (const t of Object.values(outputTensors)) t.destroy(); + + return results; + } +} diff --git a/daop-illustration/src/daop-graph-builder.js b/daop-illustration/src/daop-graph-builder.js new file mode 100644 index 0000000..f5b1180 --- /dev/null +++ b/daop-illustration/src/daop-graph-builder.js @@ -0,0 +1,209 @@ +// src/daop-graph-builder.js + +import { TensorDesc, IROperand, IRNode, IRGraph, generateId } from "./ir/graph-ir.js"; +import { inferShape } from "./ir/shape-inference.js"; +import { DAOPGraph } from "./daop-graph.js"; + +/** + * DAOPGraphBuilder — mirrors WebNN MLGraphBuilder API. + * + * Builds an IR graph for weightless QoS estimation. When the application + * later binds constants and calls compute(), the IR is replayed into a + * real native MLGraphBuilder. + */ +export class DAOPGraphBuilder { + /** + * @param {DAOPContext} context + */ + constructor(context) { + this.context = context; + this._ir = new IRGraph(); + } + + /** + * Declare a named input operand. + * Mirrors: MLGraphBuilder.input(name, descriptor) + */ + input(name, descriptor) { + const desc = new TensorDesc(descriptor); + const operand = new IROperand({ + id: name, + kind: "input", + desc, + name, + }); + this._ir.addOperand(operand); + return name; + } + + /** + * Declare a constant operand (optionally weightless). + * Mirrors: MLGraphBuilder.constant(descriptor, bufferView?) + * + * DAOP Extension: When called with only a descriptor (no buffer), + * creates a "weightless" constant that can be bound later via + * context.bindConstants(). The descriptor MUST include a `label` + * for late-binding identification. + */ + constant(descriptorOrType, bufferOrValue = null) { + // Support native 2-arg scalar form: constant(dataType, value) + if (typeof descriptorOrType === "string") { + return this.constantScalar(descriptorOrType, bufferOrValue); + } + const desc = new TensorDesc(descriptorOrType); + const label = descriptorOrType.label || null; + const id = label || generateId("const"); + const operand = new IROperand({ + id, + kind: "constant", + desc, + label, + buffer: bufferOrValue || null, + }); + this._ir.addOperand(operand); + return id; + } + + /** + * Scalar constant helper. + * Mirrors: MLGraphBuilder.constant(dataType, value) + */ + constantScalar(dataType, value) { + const id = generateId("scalar"); + const desc = new TensorDesc({ shape: [], dataType }); + const operand = new IROperand({ + id, + kind: "constant", + desc, + buffer: value, // Store scalar value directly + }); + this._ir.addOperand(operand); + return id; + } + + // ─── Operators ─────────────────────────────────────────── + + conv2d(input, filter, options = {}) { + return this._addOp("conv2d", [input, filter], options); + } + + convTranspose2d(input, filter, options = {}) { + return this._addOp("convTranspose2d", [input, filter], options); + } + + add(a, b) { + return this._addOp("add", [a, b]); + } + + sub(a, b) { + return this._addOp("sub", [a, b]); + } + + mul(a, b) { + return this._addOp("mul", [a, b]); + } + + div(a, b) { + return this._addOp("div", [a, b]); + } + + relu(input) { + return this._addOp("relu", [input]); + } + + sigmoid(input) { + return this._addOp("sigmoid", [input]); + } + + tanh(input) { + return this._addOp("tanh", [input]); + } + + clamp(input, options = {}) { + return this._addOp("clamp", [input], options); + } + + averagePool2d(input, options = {}) { + return this._addOp("averagePool2d", [input], options); + } + + maxPool2d(input, options = {}) { + return this._addOp("maxPool2d", [input], options); + } + + matmul(a, b) { + return this._addOp("matmul", [a, b]); + } + + softmax(input, axis) { + return this._addOp("softmax", [input], { axis }); + } + + reshape(input, newShape) { + return this._addOp("reshape", [input], { newShape }); + } + + transpose(input, options = {}) { + return this._addOp("transpose", [input], options); + } + + concat(inputs, axis) { + return this._addOp("concat", inputs, { axis }); + } + + resample2d(input, options = {}) { + return this._addOp("resample2d", [input], options); + } + + // ─── Build ─────────────────────────────────────────────── + + /** + * Build the graph. + * Mirrors: MLGraphBuilder.build(outputs) + * + * @param {Object} outputs - Map of output name → operand ID + * @returns {DAOPGraph} + */ + build(outputs) { + for (const [name, operandId] of Object.entries(outputs)) { + this._ir.outputs.set(name, operandId); + } + return new DAOPGraph(this._ir, this.context); + } + + // ─── Internal ──────────────────────────────────────────── + + /** + * Add an operator node to the IR, infer output shape, return output operand ID. + */ + _addOp(opType, inputIds, attrs = {}) { + const inputDescs = inputIds.map(id => { + const operand = this._ir.getOperand(id); + if (!operand) { + throw new Error(`[DAOP] Unknown operand ID: ${id}`); + } + return { shape: operand.desc.shape, dataType: operand.desc.dataType }; + }); + + const outputDescs = inferShape(opType, inputDescs, attrs); + const outputIds = outputDescs.map((desc, i) => { + const id = generateId(opType); + const operand = new IROperand({ + id, + kind: "intermediate", + desc: new TensorDesc(desc), + }); + this._ir.addOperand(operand); + return id; + }); + + this._ir.addNode(new IRNode({ + opType, + inputs: inputIds, + outputs: outputIds, + attrs, + })); + + return outputIds.length === 1 ? outputIds[0] : outputIds; + } +} diff --git a/daop-illustration/src/daop-graph.js b/daop-illustration/src/daop-graph.js new file mode 100644 index 0000000..da94e8d --- /dev/null +++ b/daop-illustration/src/daop-graph.js @@ -0,0 +1,281 @@ +// src/daop-graph.js + +import { getNativeMLGraphBuilder } from "./polyfill.js"; + +/** + * DAOPGraph — IR graph container with replay capability. + * + * Holds the recorded IR from DAOPGraphBuilder. Provides: + * - Topology inspection for QoS estimation and visualization + * - Weight binding for labeled constants + * - Replay into native WebNN for real execution + */ +export class DAOPGraph { + /** + * @param {import("./ir/graph-ir.js").IRGraph} ir + * @param {import("./daop-context.js").DAOPContext} context + */ + constructor(ir, context) { + this._ir = ir; + this._context = context; + this._boundWeights = new Map(); + this._compiledGraph = null; // Cached native MLGraph + this._compiledTensors = null; // Cached native MLTensors for constants + } + + /** Access the IR for estimation and visualization */ + get ir() { + return this._ir; + } + + /** Get all nodes (operators) for iteration */ + get nodes() { + return this._ir.nodes; + } + + /** Get all operands */ + get operands() { + return this._ir.operands; + } + + /** + * Bind weight buffers to labeled constants. + * + * @param {Object} constants - label → buffer map + */ + bindConstants(constants) { + for (const [label, buffer] of Object.entries(constants)) { + const operand = this._ir.getOperand(label); + if (!operand) { + console.warn(`[DAOP] bindConstants: no operand with label "${label}"`); + continue; + } + if (operand.kind !== "constant") { + console.warn(`[DAOP] bindConstants: operand "${label}" is not a constant`); + continue; + } + operand.buffer = buffer; + this._boundWeights.set(label, buffer); + } + // Invalidate cached compilation + this._compiledGraph = null; + this._compiledTensors = null; + } + + /** + * Check if all constants have been bound. + */ + isFullyBound() { + return this._ir.isFullyBound(); + } + + /** + * Replay the IR into a native WebNN graph and compile it. + * + * @param {MLContext} nativeContext - The real native WebNN context + * @returns {Promise<{graph: MLGraph, nativeContext: MLContext}>} + */ + async compile(nativeContext) { + if (this._compiledGraph) { + return this._compiledGraph; + } + + // Verify all constants are bound + const unbound = this._ir.getWeightlessConstants(); + if (unbound.length > 0) { + const labels = unbound.map(op => op.label || op.id).join(", "); + throw new Error(`[DAOP] Cannot compile: unbound constants: ${labels}`); + } + + const NativeBuilder = getNativeMLGraphBuilder(); + const nativeBuilder = new NativeBuilder(nativeContext); + const operandMap = new Map(); // IR operand ID → native MLOperand + + // 1. Create input operands + for (const irOp of this._ir.getInputs()) { + const nativeOperand = nativeBuilder.input(irOp.name, { + dataType: irOp.desc.dataType, + shape: irOp.desc.shape, + }); + operandMap.set(irOp.id, nativeOperand); + } + + // 2. Create constant operands (with bound buffers) + for (const irOp of this._ir.getConstants()) { + let nativeOperand; + if (irOp.buffer !== null && typeof irOp.buffer === "number") { + // Scalar constant + nativeOperand = nativeBuilder.constant(irOp.desc.dataType, irOp.buffer); + } else if (irOp.buffer !== null) { + // Constant with buffer data + nativeOperand = nativeBuilder.constant( + { dataType: irOp.desc.dataType, shape: irOp.desc.shape }, + irOp.buffer + ); + } else { + throw new Error(`[DAOP] Constant "${irOp.label || irOp.id}" has no buffer`); + } + operandMap.set(irOp.id, nativeOperand); + } + + // 3. Replay operator nodes in topological order (they're already recorded in order) + for (const node of this._ir.nodes) { + const nativeInputs = node.inputs.map(id => { + const op = operandMap.get(id); + if (!op) throw new Error(`[DAOP] Replay: missing operand ${id} for ${node.opType}`); + return op; + }); + + let nativeOutput; + const resolvedAttrs = { ...node.attrs }; + if (resolvedAttrs.bias && typeof resolvedAttrs.bias === "string") { + resolvedAttrs.bias = operandMap.get(resolvedAttrs.bias); + if (!resolvedAttrs.bias) { + throw new Error(`[DAOP] Replay: missing bias operand for ${node.opType}`); + } + } + + switch (node.opType) { + case "conv2d": + nativeOutput = nativeBuilder.conv2d(nativeInputs[0], nativeInputs[1], resolvedAttrs); + break; + case "convTranspose2d": + nativeOutput = nativeBuilder.convTranspose2d(nativeInputs[0], nativeInputs[1], resolvedAttrs); + break; + case "add": + nativeOutput = nativeBuilder.add(nativeInputs[0], nativeInputs[1]); + break; + case "sub": + nativeOutput = nativeBuilder.sub(nativeInputs[0], nativeInputs[1]); + break; + case "mul": + nativeOutput = nativeBuilder.mul(nativeInputs[0], nativeInputs[1]); + break; + case "div": + nativeOutput = nativeBuilder.div(nativeInputs[0], nativeInputs[1]); + break; + case "relu": + nativeOutput = nativeBuilder.relu(nativeInputs[0]); + break; + case "sigmoid": + nativeOutput = nativeBuilder.sigmoid(nativeInputs[0]); + break; + case "tanh": + nativeOutput = nativeBuilder.tanh(nativeInputs[0]); + break; + case "clamp": + nativeOutput = nativeBuilder.clamp(nativeInputs[0], resolvedAttrs); + break; + case "averagePool2d": + nativeOutput = nativeBuilder.averagePool2d(nativeInputs[0], resolvedAttrs); + break; + case "maxPool2d": + nativeOutput = nativeBuilder.maxPool2d(nativeInputs[0], resolvedAttrs); + break; + case "matmul": + nativeOutput = nativeBuilder.matmul(nativeInputs[0], nativeInputs[1]); + break; + case "softmax": + nativeOutput = nativeBuilder.softmax(nativeInputs[0], resolvedAttrs.axis); + break; + case "reshape": + nativeOutput = nativeBuilder.reshape(nativeInputs[0], resolvedAttrs.newShape); + break; + case "transpose": + nativeOutput = nativeBuilder.transpose(nativeInputs[0], resolvedAttrs); + break; + case "concat": + nativeOutput = nativeBuilder.concat(nativeInputs, resolvedAttrs.axis); + break; + case "resample2d": + nativeOutput = nativeBuilder.resample2d(nativeInputs[0], resolvedAttrs); + break; + default: + throw new Error(`[DAOP] Replay: unsupported op "${node.opType}"`); + } + + // Map IR output IDs to native operands + if (Array.isArray(nativeOutput)) { + node.outputs.forEach((id, i) => operandMap.set(id, nativeOutput[i])); + } else { + node.outputs.forEach(id => operandMap.set(id, nativeOutput)); + } + } + + // 4. Build the native graph + const nativeOutputs = {}; + for (const [name, operandId] of this._ir.outputs) { + nativeOutputs[name] = operandMap.get(operandId); + } + + const nativeGraph = await nativeBuilder.build(nativeOutputs); + + this._compiledGraph = { graph: nativeGraph, nativeContext }; + return this._compiledGraph; + } + + /** + * Generate Mermaid diagram code for this graph. + * Used by the demo's right panel for visualization. + * + * @param {Object[]} [qosBreakdown] - Optional per-node QoS data for annotations + * @returns {string} Mermaid flowchart code + */ + toMermaid(qosBreakdown = null) { + let code = "graph TD\n"; + code += " classDef computeBound fill:#ffcdd2,stroke:#e53935,stroke-width:2px;\n"; + code += " classDef memoryBound fill:#bbdefb,stroke:#1e88e5,stroke-width:2px;\n"; + code += " classDef inputNode fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px;\n"; + code += " classDef constantNode fill:#fff3e0,stroke:#ef6c00,stroke-width:1px;\n"; + + // Track which operand IDs are produced by which node + const producedBy = new Map(); + + this._ir.nodes.forEach((node, i) => { + const nodeId = `op${i}`; + let label; + if (qosBreakdown && qosBreakdown[i]) { + const est = qosBreakdown[i]; + const boundIcon = est.bottleneck === "compute" ? "COMPUTE" : "MEMORY"; + label = `"${boundIcon}
${node.opType.toUpperCase()}
${est.timeMs.toFixed(2)}ms"`; + const cls = est.bottleneck === "compute" ? "computeBound" : "memoryBound"; + code += ` ${nodeId}[${label}]:::${cls}\n`; + } else { + // Show shapes in label + const outOp = this._ir.getOperand(node.outputs[0]); + const shapeStr = outOp ? outOp.desc.shape.join("x") : "?"; + label = `"${node.opType.toUpperCase()}
[${shapeStr}]"`; + code += ` ${nodeId}[${label}]\n`; + } + + node.outputs.forEach(outId => producedBy.set(outId, nodeId)); + }); + + // Add edges + this._ir.nodes.forEach((node, i) => { + const nodeId = `op${i}`; + node.inputs.forEach(inputId => { + const sourceNode = producedBy.get(inputId); + if (sourceNode) { + code += ` ${sourceNode} --> ${nodeId}\n`; + } else { + // It's a graph input or constant + const operand = this._ir.getOperand(inputId); + if (operand) { + const displayName = operand.name || operand.label || inputId; + if (operand.kind === "input") { + code += ` ${inputId}([${displayName}]):::inputNode --> ${nodeId}\n`; + } else if (operand.kind === "constant") { + // Don't clutter graph with every constant; only show labeled ones + if (operand.label) { + code += ` ${inputId}[/${operand.label}/]:::constantNode --> ${nodeId}\n`; + } + } + } + } + }); + }); + + return code; + } +} diff --git a/daop-illustration/src/index.js b/daop-illustration/src/index.js new file mode 100644 index 0000000..0ad1175 --- /dev/null +++ b/daop-illustration/src/index.js @@ -0,0 +1,18 @@ +// src/index.js + +/** + * DAOP Library — Public API + * + * Usage: + * import { initDAOP, detectWebNNSupport } from "./src/index.js"; + * const result = initDAOP(); + * if (!result.ok) { showError(result.error); return; } + * // Now use standard WebNN API — DAOP layer is active + */ + +export { initDAOP, detectWebNNSupport, getNativeML } from "./polyfill.js"; +export { DAOPContext } from "./daop-context.js"; +export { DAOPGraphBuilder } from "./daop-graph-builder.js"; +export { DAOPGraph } from "./daop-graph.js"; +export { timeModelDatabase } from "./qos/interpolation/time-model.js"; +export { estimateQoSInterp } from "./qos/estimate-qos-interp.js"; diff --git a/daop-illustration/src/ir/graph-ir.js b/daop-illustration/src/ir/graph-ir.js new file mode 100644 index 0000000..8b84630 --- /dev/null +++ b/daop-illustration/src/ir/graph-ir.js @@ -0,0 +1,149 @@ +// src/ir/graph-ir.js + +/** + * DAOP Intermediate Representation for WebNN Graphs + * + * Records graph topology (operators, operands, connections) without + * requiring actual weight buffers — enabling "weightless" QoS estimation. + */ + +let _nextId = 0; + +/** Generate a unique operand ID */ +export function generateId(prefix = "op") { + return `${prefix}_${_nextId++}`; +} + +/** Reset ID counter (useful for testing) */ +export function resetIdCounter() { + _nextId = 0; +} + +/** + * Describes a tensor's metadata (no buffer data). + */ +export class TensorDesc { + /** + * @param {Object} opts + * @param {number[]} opts.shape + * @param {string} [opts.dataType="float32"] + */ + constructor({ shape, dataType = "float32" }) { + this.shape = [...shape]; + this.dataType = dataType; + } + + /** Total number of elements */ + get elements() { + return this.shape.reduce((a, b) => a * b, 1); + } + + /** Bytes per element for this dataType */ + get bytesPerElement() { + switch (this.dataType) { + case "float32": return 4; + case "float16": return 2; + case "int32": return 4; + case "int8": return 1; + case "uint8": return 1; + default: return 4; + } + } + + /** Total byte size */ + get byteSize() { + return this.elements * this.bytesPerElement; + } +} + +/** + * An operand in the IR graph. + */ +export class IROperand { + /** + * @param {Object} opts + * @param {string} opts.id - Unique identifier + * @param {string} opts.kind - "input" | "constant" | "intermediate" + * @param {TensorDesc} opts.desc - Tensor descriptor + * @param {string} [opts.name] - User-facing name (for inputs) + * @param {string} [opts.label] - Label for late-binding (for constants) + * @param {ArrayBufferView|null} [opts.buffer] - Actual data (null for weightless) + */ + constructor({ id, kind, desc, name = null, label = null, buffer = null }) { + this.id = id; + this.kind = kind; + this.desc = desc; + this.name = name; + this.label = label; + this.buffer = buffer; + } + + get isWeightless() { + return this.kind === "constant" && this.buffer === null; + } +} + +/** + * An operator node in the IR graph. + */ +export class IRNode { + /** + * @param {Object} opts + * @param {string} opts.opType - WebNN op name ("conv2d", "add", etc.) + * @param {string[]} opts.inputs - Input operand IDs + * @param {string[]} opts.outputs - Output operand IDs + * @param {Object} [opts.attrs={}] - Op-specific attributes (strides, pads, etc.) + */ + constructor({ opType, inputs, outputs, attrs = {} }) { + this.opType = opType; + this.inputs = [...inputs]; + this.outputs = [...outputs]; + this.attrs = { ...attrs }; + } +} + +/** + * Complete IR graph: operands + operators in topological order. + */ +export class IRGraph { + constructor() { + /** @type {Map} */ + this.operands = new Map(); + /** @type {IRNode[]} */ + this.nodes = []; + /** @type {Map} output name → operand ID */ + this.outputs = new Map(); + } + + addOperand(operand) { + this.operands.set(operand.id, operand); + } + + addNode(node) { + this.nodes.push(node); + } + + getOperand(id) { + return this.operands.get(id); + } + + /** All input operands */ + getInputs() { + return [...this.operands.values()].filter(op => op.kind === "input"); + } + + /** All constant operands */ + getConstants() { + return [...this.operands.values()].filter(op => op.kind === "constant"); + } + + /** All weightless constants (need binding before compute) */ + getWeightlessConstants() { + return this.getConstants().filter(op => op.isWeightless); + } + + /** Check if all constants have buffers bound */ + isFullyBound() { + return this.getConstants().every(op => !op.isWeightless); + } +} diff --git a/daop-illustration/src/ir/shape-inference.js b/daop-illustration/src/ir/shape-inference.js new file mode 100644 index 0000000..8c18edb --- /dev/null +++ b/daop-illustration/src/ir/shape-inference.js @@ -0,0 +1,280 @@ +// src/ir/shape-inference.js + +/** + * Shape inference for WebNN operators. + * + * Given input shapes and op attributes, computes the output shape(s). + * Supports the operator subset used by Selfie Segmentation + common ops. + */ + +/** + * Infer output shape for a WebNN operator. + * + * @param {string} opType - Operator name + * @param {Array<{shape: number[], dataType: string}>} inputs - Input descriptors + * @param {Object} attrs - Operator attributes + * @returns {{shape: number[], dataType: string}[]} Output descriptor(s) + */ +export function inferShape(opType, inputs, attrs = {}) { + const fn = SHAPE_FNS[opType]; + if (!fn) { + throw new Error(`[DAOP] Shape inference not implemented for op: ${opType}`); + } + return fn(inputs, attrs); +} + +/** + * Check if shape inference is available for an op type. + */ +export function hasShapeInference(opType) { + return opType in SHAPE_FNS; +} + +const SHAPE_FNS = { + conv2d(inputs, attrs) { + // inputs[0] = input tensor, inputs[1] = filter tensor + // WebNN conv2d supports both NCHW and NHWC layouts + const layout = attrs.inputLayout || "nchw"; + const input = inputs[0].shape; + const filter = inputs[1].shape; + + let batch, inH, inW, outChannels, filterH, filterW; + if (layout === "nchw") { + [batch, , inH, inW] = input; + // filter layout for nchw: [outChannels, inChannels/groups, filterH, filterW] + const filterLayout = attrs.filterLayout || "oihw"; + if (filterLayout === "oihw") { + [outChannels, , filterH, filterW] = filter; + } else if (filterLayout === "hwio") { + [filterH, filterW, , outChannels] = filter; + } else { + [outChannels, , filterH, filterW] = filter; + } + } else { + // nhwc + [batch, inH, inW, ] = input; + const filterLayout = attrs.filterLayout || "ohwi"; + if (filterLayout === "ohwi") { + [outChannels, filterH, filterW, ] = filter; + } else if (filterLayout === "hwio") { + [filterH, filterW, , outChannels] = filter; + } else if (filterLayout === "ihwo") { + // [inputChannels/groups, filterH, filterW, outputChannels] + outChannels = filter[3]; + filterH = filter[1]; + filterW = filter[2]; + } else { + [outChannels, filterH, filterW, ] = filter; + } + } + + const padding = attrs.padding || [0, 0, 0, 0]; // [top, bottom, left, right] + const strides = attrs.strides || [1, 1]; + const dilations = attrs.dilations || [1, 1]; + + const effectiveFilterH = (filterH - 1) * dilations[0] + 1; + const effectiveFilterW = (filterW - 1) * dilations[1] + 1; + const outH = Math.floor((inH + padding[0] + padding[1] - effectiveFilterH) / strides[0]) + 1; + const outW = Math.floor((inW + padding[2] + padding[3] - effectiveFilterW) / strides[1]) + 1; + + const outShape = layout === "nchw" + ? [batch, outChannels, outH, outW] + : [batch, outH, outW, outChannels]; + + return [{ shape: outShape, dataType: inputs[0].dataType }]; + }, + + // Element-wise binary ops: output shape = broadcast(input shapes) + add: (inputs) => [{ shape: broadcastShape(inputs[0].shape, inputs[1].shape), dataType: inputs[0].dataType }], + sub: (inputs) => [{ shape: broadcastShape(inputs[0].shape, inputs[1].shape), dataType: inputs[0].dataType }], + mul: (inputs) => [{ shape: broadcastShape(inputs[0].shape, inputs[1].shape), dataType: inputs[0].dataType }], + div: (inputs) => [{ shape: broadcastShape(inputs[0].shape, inputs[1].shape), dataType: inputs[0].dataType }], + + // Element-wise unary ops: output shape = input shape + relu: (inputs) => [{ shape: [...inputs[0].shape], dataType: inputs[0].dataType }], + sigmoid: (inputs) => [{ shape: [...inputs[0].shape], dataType: inputs[0].dataType }], + tanh: (inputs) => [{ shape: [...inputs[0].shape], dataType: inputs[0].dataType }], + clamp: (inputs) => [{ shape: [...inputs[0].shape], dataType: inputs[0].dataType }], + + averagePool2d(inputs, attrs) { + return [poolShape(inputs[0], attrs)]; + }, + + maxPool2d(inputs, attrs) { + return [poolShape(inputs[0], attrs)]; + }, + + matmul(inputs) { + const a = inputs[0].shape; + const b = inputs[1].shape; + // Support batched matmul: [...batch, M, K] x [...batch, K, N] -> [...batch, M, N] + const m = a[a.length - 2]; + const n = b[b.length - 1]; + const batchDims = a.length > 2 ? a.slice(0, -2) : []; + return [{ shape: [...batchDims, m, n], dataType: inputs[0].dataType }]; + }, + + softmax(inputs) { + return [{ shape: [...inputs[0].shape], dataType: inputs[0].dataType }]; + }, + + reshape(inputs, attrs) { + const newShape = attrs.newShape || attrs.shape; + if (!newShape) { + throw new Error("[DAOP] reshape requires newShape attribute"); + } + return [{ shape: [...newShape], dataType: inputs[0].dataType }]; + }, + + transpose(inputs, attrs) { + const perm = attrs.permutation; + if (!perm) { + // Default: reverse dimensions + const shape = [...inputs[0].shape].reverse(); + return [{ shape, dataType: inputs[0].dataType }]; + } + const shape = perm.map(i => inputs[0].shape[i]); + return [{ shape, dataType: inputs[0].dataType }]; + }, + + concat(inputs, attrs) { + const axis = attrs.axis || 0; + const shape = [...inputs[0].shape]; + shape[axis] = inputs.reduce((sum, inp) => sum + inp.shape[axis], 0); + return [{ shape, dataType: inputs[0].dataType }]; + }, + + resample2d(inputs, attrs) { + const layout = attrs.layout || "nchw"; + const shape = [...inputs[0].shape]; + + if (attrs.axes && attrs.sizes) { + const out = [...inputs[0].shape]; + attrs.axes.forEach((axis, i) => { + out[axis] = attrs.sizes[i]; + }); + return [{ shape: out, dataType: inputs[0].dataType }]; + } + if (attrs.axes && attrs.scales) { + const out = [...inputs[0].shape]; + attrs.axes.forEach((axis, i) => { + out[axis] = Math.floor(out[axis] * attrs.scales[i]); + }); + return [{ shape: out, dataType: inputs[0].dataType }]; + } + + if (attrs.sizes) { + // Explicit output sizes [outH, outW] + if (layout === "nchw") { + shape[2] = attrs.sizes[0]; + shape[3] = attrs.sizes[1]; + } else { + shape[1] = attrs.sizes[0]; + shape[2] = attrs.sizes[1]; + } + } else if (attrs.scales) { + // Scale factors [scaleH, scaleW] + if (layout === "nchw") { + shape[2] = Math.floor(shape[2] * attrs.scales[0]); + shape[3] = Math.floor(shape[3] * attrs.scales[1]); + } else { + shape[1] = Math.floor(shape[1] * attrs.scales[0]); + shape[2] = Math.floor(shape[2] * attrs.scales[1]); + } + } + return [{ shape, dataType: inputs[0].dataType }]; + }, + convTranspose2d(inputs, attrs) { + const layout = attrs.inputLayout || "nchw"; + const input = inputs[0].shape; + const filter = inputs[1].shape; + + let batch, inH, inW, outChannels, filterH, filterW; + if (layout === "nchw") { + [batch, , inH, inW] = input; + [, outChannels, filterH, filterW] = filter; + } else { + // nhwc + [batch, inH, inW, ] = input; + const filterLayout = attrs.filterLayout || "ihwo"; + if (filterLayout === "ihwo") { + outChannels = filter[3]; + filterH = filter[1]; + filterW = filter[2]; + } else if (filterLayout === "ohwi") { + [outChannels, filterH, filterW, ] = filter; + } else { + outChannels = filter[3]; + filterH = filter[1]; + filterW = filter[2]; + } + } + + const strides = attrs.strides || [1, 1]; + const padding = attrs.padding || [0, 0, 0, 0]; + const outputPadding = attrs.outputPadding || [0, 0]; + const dilations = attrs.dilations || [1, 1]; + + if (attrs.outputSizes) { + const [outH, outW] = attrs.outputSizes; + const outShape = layout === "nchw" + ? [batch, outChannels, outH, outW] + : [batch, outH, outW, outChannels]; + return [{ shape: outShape, dataType: inputs[0].dataType }]; + } + + const outH = (inH - 1) * strides[0] - padding[0] - padding[1] + + (filterH - 1) * dilations[0] + outputPadding[0] + 1; + const outW = (inW - 1) * strides[1] - padding[2] - padding[3] + + (filterW - 1) * dilations[1] + outputPadding[1] + 1; + + const outShape = layout === "nchw" + ? [batch, outChannels, outH, outW] + : [batch, outH, outW, outChannels]; + return [{ shape: outShape, dataType: inputs[0].dataType }]; + }, +}; + +/** + * Compute broadcast-compatible output shape. + */ +function broadcastShape(a, b) { + const rank = Math.max(a.length, b.length); + const result = new Array(rank); + for (let i = 0; i < rank; i++) { + const dimA = i < a.length ? a[a.length - 1 - i] : 1; + const dimB = i < b.length ? b[b.length - 1 - i] : 1; + if (dimA !== dimB && dimA !== 1 && dimB !== 1) { + throw new Error(`[DAOP] Shape broadcast failed: ${a} vs ${b}`); + } + result[rank - 1 - i] = Math.max(dimA, dimB); + } + return result; +} + +/** + * Pool output shape helper. + */ +function poolShape(input, attrs) { + const layout = attrs.layout || "nchw"; + const shape = input.shape; + const windowDimensions = attrs.windowDimensions || [2, 2]; + const strides = attrs.strides || windowDimensions; + const padding = attrs.padding || [0, 0, 0, 0]; + + let batch, channels, inH, inW; + if (layout === "nchw") { + [batch, channels, inH, inW] = shape; + } else { + [batch, inH, inW, channels] = shape; + } + + const outH = Math.floor((inH + padding[0] + padding[1] - windowDimensions[0]) / strides[0]) + 1; + const outW = Math.floor((inW + padding[2] + padding[3] - windowDimensions[1]) / strides[1]) + 1; + + const outShape = layout === "nchw" + ? [batch, channels, outH, outW] + : [batch, outH, outW, channels]; + + return { shape: outShape, dataType: input.dataType }; +} diff --git a/daop-illustration/src/polyfill.js b/daop-illustration/src/polyfill.js new file mode 100644 index 0000000..9a3db70 --- /dev/null +++ b/daop-illustration/src/polyfill.js @@ -0,0 +1,102 @@ +// src/polyfill.js + +import { DAOPContext } from "./daop-context.js"; +import { DAOPGraphBuilder } from "./daop-graph-builder.js"; + +/** + * DAOP Polyfill — intercepts WebNN API to add DAOP extensions. + * + * When initialized: + * 1. Checks for native WebNN (navigator.ml). If missing → returns error. + * 2. Saves references to native ML/MLGraphBuilder. + * 3. Replaces window.MLGraphBuilder with DAOPGraphBuilder. + * 4. Wraps navigator.ml.createContext() to return DAOPContext. + */ + +let _initialized = false; +let _nativeML = null; +let _NativeMLGraphBuilder = null; + +/** + * Detect if native WebNN is available. + * + * Checks for the presence of navigator.ml and window.MLGraphBuilder. + * This function only tests the NATIVE API — if DAOP has already been + * initialized it still returns true (the native references are saved + * internally). + */ +export function detectWebNNSupport() { + if (typeof navigator === "undefined") { + return { supported: false, reason: "No navigator object" }; + } + if (!navigator.ml) { + return { supported: false, reason: "navigator.ml not available" }; + } + if (typeof MLGraphBuilder === "undefined") { + return { supported: false, reason: "MLGraphBuilder not available" }; + } + return { supported: true }; +} + +/** + * Initialize the DAOP polyfill layer. + * + * @returns {{ok: boolean, error?: string}} + */ +export function initDAOP() { + if (_initialized) { + return { ok: true }; + } + + const support = detectWebNNSupport(); + if (!support.supported) { + return { + ok: false, + error: `WebNN is not available: ${support.reason}. ` + + `Please install a WebNN-capable browser: https://webnn.io/en/learn/get-started/installation`, + }; + } + + // Save native references + _nativeML = navigator.ml; + _NativeMLGraphBuilder = window.MLGraphBuilder; + + // Wrap navigator.ml.createContext to return DAOPContext + const originalCreateContext = _nativeML.createContext.bind(_nativeML); + + const wrappedML = { + async createContext(options = {}) { + const nativeContext = await originalCreateContext(options); + return new DAOPContext(nativeContext, options); + }, + __daopPolyfill: true, + }; + + // Replace globals + // navigator.ml is a read-only getter on the Navigator prototype — + // a plain assignment throws. Use Object.defineProperty to override. + Object.defineProperty(navigator, "ml", { + value: wrappedML, + writable: true, + configurable: true, + }); + window.MLGraphBuilder = DAOPGraphBuilder; + + _initialized = true; + return { ok: true }; +} + +/** + * Get a reference to the native (un-wrapped) MLGraphBuilder. + * Used internally by DAOPGraph.compile() for replay. + */ +export function getNativeMLGraphBuilder() { + return _NativeMLGraphBuilder || window.MLGraphBuilder; +} + +/** + * Get a reference to the native ML API. + */ +export function getNativeML() { + return _nativeML || navigator.ml; +} diff --git a/daop-illustration/src/qos/estimate-qos-interp.js b/daop-illustration/src/qos/estimate-qos-interp.js new file mode 100644 index 0000000..f540169 --- /dev/null +++ b/daop-illustration/src/qos/estimate-qos-interp.js @@ -0,0 +1,56 @@ +// src/qos/estimate-qos-interp.js + +import { timeModelDatabase } from "./interpolation/time-model.js"; + +/** + * Estimate QoS using direct interpolation from measured benchmark data. + * + * This estimator directly predicts per-operator execution time from + * measured (inputSize -> time) data points using polynomial regression. + * + * @param {import("../daop-graph.js").DAOPGraph} daopGraph + * @param {Object} [options={}] + * @returns {Object} QoS report + */ +export function estimateQoSInterp(daopGraph, options = {}) { + const ir = daopGraph.ir; + let totalTimeMs = 0; + const breakdown = []; + + for (const node of ir.nodes) { + const inputDescs = node.inputs.map(id => ir.getOperand(id)); + const primaryElements = (inputDescs[0] && inputDescs[0].desc) + ? inputDescs[0].desc.elements : 0; + + const predictedMs = timeModelDatabase.predict(node.opType, primaryElements); + totalTimeMs += predictedMs; + + breakdown.push({ + opType: node.opType, + timeMs: predictedMs, + inputElements: primaryElements, + }); + } + + // Graph-level dispatch overhead (single dispatch for compiled graph) + const graphDispatchOverheadMs = 0.5 + ir.nodes.length * 0.005; + totalTimeMs += graphDispatchOverheadMs; + + const performanceTier = totalTimeMs < 16 ? "excellent" + : totalTimeMs < 100 ? "good" + : totalTimeMs < 1000 ? "fair" + : totalTimeMs < 10000 ? "moderate" + : totalTimeMs < 30000 ? "slow" + : totalTimeMs < 60000 ? "very-slow" + : "poor"; + + return { + performanceTier, + internal: { + totalTimeMs, + graphDispatchOverheadMs, + breakdown, + method: "interpolation", + }, + }; +} diff --git a/daop-illustration/src/qos/interpolation/poly-fit.js b/daop-illustration/src/qos/interpolation/poly-fit.js new file mode 100644 index 0000000..f394d8b --- /dev/null +++ b/daop-illustration/src/qos/interpolation/poly-fit.js @@ -0,0 +1,130 @@ +// src/qos/interpolation/poly-fit.js + +/** + * Polynomial least-squares regression. + * + * Fits y = c0 + c1*x + c2*x^2 + ... + cn*x^n to minimize squared error. + * Uses the normal equations approach (sufficient for degree 2-3 with <20 points). + */ + +/** + * Fit a polynomial of given degree to (x, y) data points. + * + * @param {number[]} xs - Independent variable values + * @param {number[]} ys - Dependent variable values + * @param {number} degree - Polynomial degree (2 or 3 recommended) + * @returns {number[]} Coefficients [c0, c1, c2, ...] where y = c0 + c1*x + c2*x^2 + ... + */ +export function polyFit(xs, ys, degree = 2) { + if (xs.length !== ys.length) { + throw new Error("polyFit: xs and ys must have same length"); + } + if (xs.length <= degree) { + // Not enough points for this degree — fall back to lower degree + degree = Math.max(1, xs.length - 1); + } + + const n = xs.length; + const m = degree + 1; // number of coefficients + + // Build normal equations: A^T A c = A^T y + // ATA[i][j] = sum(x^(i+j)), ATy[i] = sum(y * x^i) + const ATA = Array.from({ length: m }, () => new Array(m).fill(0)); + const ATy = new Array(m).fill(0); + + // Pre-compute x^p for each data point (p = 0..2*degree) + for (let k = 0; k < n; k++) { + const xPows = new Array(2 * degree + 1); + xPows[0] = 1; + for (let p = 1; p < xPows.length; p++) { + xPows[p] = xPows[p - 1] * xs[k]; + } + for (let i = 0; i < m; i++) { + ATy[i] += ys[k] * xPows[i]; + for (let j = i; j < m; j++) { + ATA[i][j] += xPows[i + j]; + } + } + } + + // Fill symmetric lower triangle + for (let i = 1; i < m; i++) { + for (let j = 0; j < i; j++) { + ATA[i][j] = ATA[j][i]; + } + } + + // Solve via Gaussian elimination with partial pivoting + return _solveLinearSystem(ATA, ATy); +} + +/** + * Evaluate a polynomial at a given x. + * + * @param {number[]} coeffs - [c0, c1, c2, ...] from polyFit + * @param {number} x - Value to evaluate at + * @returns {number} y = c0 + c1*x + c2*x^2 + ... + */ +export function polyEval(coeffs, x) { + let result = 0; + let xPow = 1; + for (const c of coeffs) { + result += c * xPow; + xPow *= x; + } + return result; +} + +/** + * Solve Ax = b using Gaussian elimination with partial pivoting. + * Modifies A and b in place. + * + * @param {number[][]} A - Square matrix + * @param {number[]} b - Right-hand side + * @returns {number[]} Solution vector x + */ +function _solveLinearSystem(A, b) { + const n = A.length; + + // Forward elimination with partial pivoting + for (let col = 0; col < n; col++) { + // Find pivot + let maxVal = Math.abs(A[col][col]); + let maxRow = col; + for (let row = col + 1; row < n; row++) { + if (Math.abs(A[row][col]) > maxVal) { + maxVal = Math.abs(A[row][col]); + maxRow = row; + } + } + + // Swap rows + if (maxRow !== col) { + [A[col], A[maxRow]] = [A[maxRow], A[col]]; + [b[col], b[maxRow]] = [b[maxRow], b[col]]; + } + + // Eliminate + const pivot = A[col][col]; + if (Math.abs(pivot) < 1e-12) continue; // singular — skip + for (let row = col + 1; row < n; row++) { + const factor = A[row][col] / pivot; + for (let j = col; j < n; j++) { + A[row][j] -= factor * A[col][j]; + } + b[row] -= factor * b[col]; + } + } + + // Back substitution + const x = new Array(n).fill(0); + for (let row = n - 1; row >= 0; row--) { + let sum = b[row]; + for (let j = row + 1; j < n; j++) { + sum -= A[row][j] * x[j]; + } + x[row] = Math.abs(A[row][row]) > 1e-12 ? sum / A[row][row] : 0; + } + + return x; +} diff --git a/daop-illustration/src/qos/interpolation/time-model.js b/daop-illustration/src/qos/interpolation/time-model.js new file mode 100644 index 0000000..0bb2bf5 --- /dev/null +++ b/daop-illustration/src/qos/interpolation/time-model.js @@ -0,0 +1,206 @@ +// src/qos/interpolation/time-model.js + +import { polyFit, polyEval } from "./poly-fit.js"; + +const STORAGE_KEY = "daop_time_models"; +const DEFAULT_POLY_DEGREE = 1; + +/** + * TimeModelDatabase — stores measured time data points per operator + * and fits polynomial curves for direct time prediction. + * + * Stores raw (inputSize -> time) measurements and uses polynomial + * regression to predict times for unseen sizes. + */ +class TimeModelDatabase { + constructor() { + /** @type {Object} */ + this.models = {}; + this._loadFromLocalStorage(); + } + + _loadFromLocalStorage() { + if (typeof localStorage !== "undefined") { + const saved = localStorage.getItem(STORAGE_KEY); + if (saved) { + try { + this.models = JSON.parse(saved); + } catch (e) { + console.error("[DAOP TimeModel] Failed to parse from localStorage", e); + } + } + } + } + + _saveToLocalStorage() { + if (typeof localStorage !== "undefined") { + localStorage.setItem(STORAGE_KEY, JSON.stringify(this.models)); + } + } + + /** + * Add a measured data point for an operator. + * + * @param {string} opType - Operator name (e.g., "conv2d") + * @param {Object} point - { totalElements, medianMs, label, inputShape, ... } + */ + addDataPoint(opType, point) { + if (!this.models[opType]) { + this.models[opType] = { points: [], coeffs: null }; + } + const model = this.models[opType]; + // Replace existing point at same totalElements + model.points = model.points.filter(p => p.totalElements !== point.totalElements); + model.points.push(point); + model.points.sort((a, b) => a.totalElements - b.totalElements); + // Invalidate fitted curve + model.coeffs = null; + this._saveToLocalStorage(); + } + + /** + * Fit polynomial curves for all ops that have data points. + * Call this after all benchmarks are complete. + * + * @param {number} degree - Polynomial degree (default 2) + */ + fitAll(degree = DEFAULT_POLY_DEGREE) { + for (const [opType, model] of Object.entries(this.models)) { + if (model.points && model.points.length >= 2) { + this.fitOp(opType, degree); + } + } + this._saveToLocalStorage(); + } + + /** + * Fit polynomial for a single op. + * + * Uses log-log space: x = log(totalElements), y = log(medianMs). + * + * To handle noise at small sizes (where dispatch overhead dominates and + * can produce U-shaped data), the fitter: + * 1. Finds the point with the minimum medianMs. + * 2. Clamps all points to the left of it to that minimum value. + * 3. Fits a degree-1 polynomial (power law) using only the points from + * the minimum onward — the clamped left-side points are excluded. + * 4. Stores `clampBelowLogX` and `clampLogY` so predict() can return + * the flat clamp value for inputs smaller than the minimum point. + */ + fitOp(opType, degree = DEFAULT_POLY_DEGREE) { + const model = this.models[opType]; + if (!model || !model.points || model.points.length < 2) return; + + // Find the index of the point with the smallest medianMs + let minIdx = 0; + for (let i = 1; i < model.points.length; i++) { + if (model.points[i].medianMs < model.points[minIdx].medianMs) { + minIdx = i; + } + } + + const minMs = model.points[minIdx].medianMs; + const clampLogX = Math.log(model.points[minIdx].totalElements); + const clampLogY = Math.log(Math.max(1e-6, minMs)); + + // Clamp left-side points to the minimum value (mutate in place) + for (let i = 0; i < minIdx; i++) { + model.points[i].medianMs = minMs; + } + + // Fit using only points from minIdx onward (right side of the minimum) + const fitPoints = model.points.slice(minIdx); + const xs = fitPoints.map(p => Math.log(p.totalElements)); + const ys = fitPoints.map(p => Math.log(Math.max(1e-6, p.medianMs))); + + model.coeffs = (fitPoints.length >= 2) ? polyFit(xs, ys, degree) : null; + model.clampBelowLogX = (minIdx > 0) ? clampLogX : null; + model.clampLogY = (minIdx > 0) ? clampLogY : null; + model.fitDegree = degree; + model.fittedAt = Date.now(); + } + + /** + * Predict execution time (ms) for an operator at a given input size. + * + * @param {string} opType + * @param {number} totalElements - Total elements of primary input tensor + * @returns {number} Predicted time in ms + */ + predict(opType, totalElements) { + const model = this.models[opType]; + if (!model) { + return 0.1; + } + + if (model.coeffs) { + const logX = Math.log(Math.max(1, totalElements)); + + // Left-side clamp: if input is at or below the minimum-time point, + // return the clamped floor value instead of extrapolating + if (model.clampBelowLogX != null && logX <= model.clampBelowLogX) { + return Math.max(0.001, Math.exp(model.clampLogY)); + } + + const logPredicted = polyEval(model.coeffs, logX); + return Math.max(0.001, Math.exp(logPredicted)); + } + + return this._linearInterpolate(model.points, totalElements); + } + + /** + * Piecewise linear interpolation fallback. + */ + _linearInterpolate(points, totalElements) { + if (!points || points.length === 0) return 0.1; + if (points.length === 1) return points[0].medianMs; + + if (totalElements <= points[0].totalElements) return points[0].medianMs; + if (totalElements >= points[points.length - 1].totalElements) { + return points[points.length - 1].medianMs; + } + + for (let i = 1; i < points.length; i++) { + if (points[i].totalElements >= totalElements) { + const lo = points[i - 1]; + const hi = points[i]; + const t = (totalElements - lo.totalElements) / (hi.totalElements - lo.totalElements); + return lo.medianMs + t * (hi.medianMs - lo.medianMs); + } + } + return points[points.length - 1].medianMs; + } + + /** + * Get the model for an op (points + fitted coefficients). + */ + getModel(opType) { + return this.models[opType] || null; + } + + /** + * Get all models. + */ + getAllModels() { + return { ...this.models }; + } + + /** + * Check if benchmark data exists. + */ + hasBenchmarkData() { + return Object.keys(this.models).length > 0 && + Object.values(this.models).some(m => m.points && m.points.length > 0); + } + + /** + * Reset all models. + */ + resetToDefaults() { + this.models = {}; + this._saveToLocalStorage(); + } +} + +export const timeModelDatabase = new TimeModelDatabase(); diff --git a/daop-illustration/src/qos/microbench/bench-runner.js b/daop-illustration/src/qos/microbench/bench-runner.js new file mode 100644 index 0000000..c98b513 --- /dev/null +++ b/daop-illustration/src/qos/microbench/bench-runner.js @@ -0,0 +1,264 @@ +// src/qos/microbench/bench-runner.js + +import { getNativeML, getNativeMLGraphBuilder } from "../../polyfill.js"; +import { OP_BENCH_CONFIGS } from "./op-benchmarks.js"; +import { timeModelDatabase } from "../interpolation/time-model.js"; + +function fillRandomBuffer(uint8) { + const CHUNK = 65536; + for (let offset = 0; offset < uint8.length; offset += CHUNK) { + const end = Math.min(offset + CHUNK, uint8.length); + crypto.getRandomValues(uint8.subarray(offset, end)); + } +} + +export class BenchRunner { + constructor(options = {}) { + this.warmupIterations = options.warmupIterations || 5; + this.measureIterations = options.measureIterations || 30; + this.deviceType = options.deviceType || "gpu"; + /** @type {number} Measured dispatch+readTensor overhead in ms (set by _measureBaselineOverhead) */ + this._baselineOverheadMs = 0; + } + + /** + * Measure the fixed dispatch + readTensor overhead using a trivial graph. + * Builds a tiny reshape [1,1,1,1] → [1,1,1,1], runs the same warmup + + * batched-measurement loop used for real operators, and returns the median + * per-dispatch time. This captures GPU command-submission and sync cost + * with negligible compute, so we can subtract it from real measurements. + * + * Runs multiple independent rounds and returns the median-of-medians for + * higher accuracy, since this value is subtracted from every operator + * measurement. + */ + async _measureBaselineOverhead(onProgress) { + if (onProgress) onProgress({ phase: "baseline", label: "measuring dispatch overhead" }); + + const nativeML = getNativeML(); + const NativeBuilder = getNativeMLGraphBuilder(); + + const rounds = 3; + const roundMedians = []; + + for (let r = 0; r < rounds; r++) { + const context = await nativeML.createContext({ deviceType: this.deviceType }); + const builder = new NativeBuilder(context); + + const shape = [1, 1, 1, 1]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.reshape(input, shape); + const graph = await builder.build({ output }); + + const inputTensor = await context.createTensor({ + dataType: "float32", + shape, + writable: true, + readable: false, + }); + const outputTensor = await context.createTensor({ + dataType: "float32", + shape, + writable: false, + readable: true, + }); + + const inputData = new Float32Array(1); + inputData[0] = 1.0; + context.writeTensor(inputTensor, inputData); + + // Warmup + for (let i = 0; i < this.warmupIterations; i++) { + context.dispatch(graph, { input: inputTensor }, { output: outputTensor }); + await context.readTensor(outputTensor); + } + + // Measurement — same batched loop as _benchmarkSizeVariant + const batchSize = 10; + const batchTimes = []; + for (let i = 0; i < 50; i++) { + const batchStart = performance.now(); + for (let j = 0; j < batchSize; j++) { + context.dispatch(graph, { input: inputTensor }, { output: outputTensor }); + } + await context.readTensor(outputTensor); + const batchEnd = performance.now(); + batchTimes.push((batchEnd - batchStart) / batchSize); + } + + inputTensor.destroy(); + outputTensor.destroy(); + + batchTimes.sort((a, b) => a - b); + roundMedians.push(batchTimes[Math.floor(batchTimes.length / 2)]); + } + + // Median-of-medians across rounds + roundMedians.sort((a, b) => a - b); + return roundMedians[Math.floor(roundMedians.length / 2)]; + } + + /** + * Benchmark a single size variant of an operator. + * Builds the graph, warms up, measures, and returns timing statistics. + */ + async _benchmarkSizeVariant(opType, sizeConfig, onProgress) { + const nativeML = getNativeML(); + const context = await nativeML.createContext({ deviceType: this.deviceType }); + const NativeBuilder = getNativeMLGraphBuilder(); + const builder = new NativeBuilder(context); + + if (onProgress) onProgress({ phase: "building", opType, label: sizeConfig.label }); + + const { outputs, inputName, inputShape, flops, bytes, outputShape, totalElements } = sizeConfig.buildGraph(builder); + const graph = await builder.build(outputs); + + const inputTensor = await context.createTensor({ + dataType: "float32", + shape: inputShape, + writable: true, + readable: false, + }); + const outputTensor = await context.createTensor({ + dataType: "float32", + shape: outputShape, + writable: false, + readable: true, + }); + + const inputData = new Float32Array(inputShape.reduce((a, b) => a * b, 1)); + fillRandomBuffer(new Uint8Array(inputData.buffer)); + context.writeTensor(inputTensor, inputData); + + if (onProgress) onProgress({ phase: "warmup", opType, label: sizeConfig.label }); + for (let i = 0; i < this.warmupIterations; i++) { + context.dispatch(graph, { [inputName]: inputTensor }, { output: outputTensor }); + await context.readTensor(outputTensor); + } + + if (onProgress) onProgress({ phase: "measuring", opType, label: sizeConfig.label }); + const batchSize = 10; + const batchTimes = []; + for (let i = 0; i < this.measureIterations; i++) { + const batchStart = performance.now(); + for (let j = 0; j < batchSize; j++) { + context.dispatch(graph, { [inputName]: inputTensor }, { output: outputTensor }); + } + await context.readTensor(outputTensor); + const batchEnd = performance.now(); + batchTimes.push((batchEnd - batchStart) / batchSize); + } + + inputTensor.destroy(); + outputTensor.destroy(); + + batchTimes.sort((a, b) => a - b); + const medianMs = batchTimes[Math.floor(batchTimes.length / 2)]; + const p90Ms = batchTimes[Math.floor(batchTimes.length * 0.9)]; + const meanMs = batchTimes.reduce((a, b) => a + b, 0) / batchTimes.length; + const minMs = batchTimes[0]; + + // Compute throughput parameters from the overhead-corrected median time. + const correctedMedianMs = Math.max(0.001, medianMs - this._baselineOverheadMs); + const correctedP90Ms = Math.max(0.001, p90Ms - this._baselineOverheadMs); + const correctedMeanMs = Math.max(0.001, meanMs - this._baselineOverheadMs); + const correctedMinMs = Math.max(0.001, minMs - this._baselineOverheadMs); + + const gflops = (flops / 1e9) / (correctedMedianMs / 1000); + const bandwidthGBs = (bytes / 1e9) / (correctedMedianMs / 1000); + + return { + opType, + label: sizeConfig.label, + totalElements, + medianMs: correctedMedianMs, + p90Ms: correctedP90Ms, + meanMs: correctedMeanMs, + minMs: correctedMinMs, + overheadMs: this._baselineOverheadMs, + gflops, + bandwidthGBs, + arithmeticIntensity: flops / bytes, + flops, + bytes, + }; + } + + /** + * Benchmark a single operator across all its size variants. + */ + async benchmarkOp(opType, onProgress) { + const config = OP_BENCH_CONFIGS[opType]; + if (!config) { + throw new Error(`[DAOP Bench] No benchmark config for op: ${opType}`); + } + + const sizeResults = []; + for (const sizeConfig of config.sizes) { + const result = await this._benchmarkSizeVariant(opType, sizeConfig, onProgress); + sizeResults.push(result); + + await new Promise(r => setTimeout(r, 30)); + } + + // Store in TimeModelDatabase for interpolation estimator + for (const result of sizeResults) { + timeModelDatabase.addDataPoint(opType, { + totalElements: result.totalElements, + medianMs: result.medianMs, + minMs: result.minMs, + p90Ms: result.p90Ms, + label: result.label, + }); + } + + if (onProgress) onProgress({ phase: "done", opType, result: sizeResults }); + + return sizeResults; + } + + async benchmarkAll(onProgress) { + const results = []; + const ops = Object.keys(OP_BENCH_CONFIGS); + + // Measure baseline dispatch+readTensor overhead before benchmarking operators + this._baselineOverheadMs = await this._measureBaselineOverhead(onProgress); + if (onProgress) { + onProgress({ + phase: "baseline-done", + baselineMs: this._baselineOverheadMs, + }); + } + + for (let i = 0; i < ops.length; i++) { + const opType = ops[i]; + if (onProgress) { + onProgress({ + phase: "start", + opType, + index: i, + total: ops.length, + }); + } + + try { + const sizeResults = await this.benchmarkOp(opType, onProgress); + results.push({ opType, sizes: sizeResults }); + } catch (err) { + console.error(`[DAOP Bench] Failed to benchmark ${opType}:`, err); + results.push({ opType, error: err.message }); + } + + await new Promise(r => setTimeout(r, 50)); + } + + // Fit polynomial curves for the interpolation estimator + timeModelDatabase.fitAll(); + + return results; + } + + getAvailableOps() { + return Object.keys(OP_BENCH_CONFIGS); + } +} diff --git a/daop-illustration/src/qos/microbench/op-benchmarks.js b/daop-illustration/src/qos/microbench/op-benchmarks.js new file mode 100644 index 0000000..53d46ab --- /dev/null +++ b/daop-illustration/src/qos/microbench/op-benchmarks.js @@ -0,0 +1,577 @@ +// src/daop/qos/microbench/op-benchmarks.js + +function fillRandom(uint8) { + const CHUNK = 65536; + for (let offset = 0; offset < uint8.length; offset += CHUNK) { + const end = Math.min(offset + CHUNK, uint8.length); + crypto.getRandomValues(uint8.subarray(offset, end)); + } +} + +/** + * Each op benchmark defines multiple size variants (small/medium/large). + * The bench runner tests all variants and stores per-size timing data, + * enabling interpolation for accurate estimation on arbitrary shapes. + * + * Every buildGraph() must return { outputs, inputName, inputShape, flops, + * bytes, outputShape, totalElements }. + */ +export const OP_BENCH_CONFIGS = { + conv2d: { + opType: "conv2d", + sizes: [ + { + label: "xs", + buildGraph(builder) { + const inputShape = [1, 16, 16, 8]; + const filterShape = [16, 3, 3, 8]; + const input = builder.input("input", { dataType: "float32", shape: inputShape }); + const filterData = new Float32Array(16 * 3 * 3 * 8); + fillRandom(new Uint8Array(filterData.buffer)); + const filter = builder.constant({ dataType: "float32", shape: filterShape }, filterData); + const output = builder.conv2d(input, filter, { inputLayout: "nhwc", filterLayout: "ohwi" }); + const outH = 14, outW = 14; + const flops = 2 * outH * outW * 16 * 8 * 3 * 3; + const totalElements = 1 * 16 * 16 * 8; + const bytes = (1*16*16*8 + 16*3*3*8 + 1*outH*outW*16) * 4; + return { outputs: { output }, inputName: "input", inputShape, flops, bytes, outputShape: [1, outH, outW, 16], totalElements }; + }, + }, + { + label: "small", + buildGraph(builder) { + const inputShape = [1, 32, 32, 16]; + const filterShape = [32, 3, 3, 16]; + const input = builder.input("input", { dataType: "float32", shape: inputShape }); + const filterData = new Float32Array(32 * 3 * 3 * 16); + fillRandom(new Uint8Array(filterData.buffer)); + const filter = builder.constant({ dataType: "float32", shape: filterShape }, filterData); + const output = builder.conv2d(input, filter, { inputLayout: "nhwc", filterLayout: "ohwi" }); + const outH = 30, outW = 30; + const flops = 2 * outH * outW * 32 * 16 * 3 * 3; + const totalElements = 1 * 32 * 32 * 16; + const bytes = (1*32*32*16 + 32*3*3*16 + 1*outH*outW*32) * 4; + return { outputs: { output }, inputName: "input", inputShape, flops, bytes, outputShape: [1, outH, outW, 32], totalElements }; + }, + }, + { + label: "medium", + buildGraph(builder) { + const inputShape = [1, 64, 64, 24]; + const filterShape = [48, 3, 3, 24]; + const input = builder.input("input", { dataType: "float32", shape: inputShape }); + const filterData = new Float32Array(48 * 3 * 3 * 24); + fillRandom(new Uint8Array(filterData.buffer)); + const filter = builder.constant({ dataType: "float32", shape: filterShape }, filterData); + const output = builder.conv2d(input, filter, { inputLayout: "nhwc", filterLayout: "ohwi" }); + const outH = 62, outW = 62; + const flops = 2 * outH * outW * 48 * 24 * 3 * 3; + const totalElements = 1 * 64 * 64 * 24; + const bytes = (1*64*64*24 + 48*3*3*24 + 1*outH*outW*48) * 4; + return { outputs: { output }, inputName: "input", inputShape, flops, bytes, outputShape: [1, outH, outW, 48], totalElements }; + }, + }, + { + label: "large", + buildGraph(builder) { + const inputShape = [1, 128, 128, 32]; + const filterShape = [64, 3, 3, 32]; + const input = builder.input("input", { dataType: "float32", shape: inputShape }); + const filterData = new Float32Array(64 * 3 * 3 * 32); + fillRandom(new Uint8Array(filterData.buffer)); + const filter = builder.constant({ dataType: "float32", shape: filterShape }, filterData); + const output = builder.conv2d(input, filter, { inputLayout: "nhwc", filterLayout: "ohwi" }); + const outH = 126, outW = 126; + const flops = 2 * outH * outW * 64 * 32 * 3 * 3; + const totalElements = 1 * 128 * 128 * 32; + const bytes = (1*128*128*32 + 64*3*3*32 + 1*outH*outW*64) * 4; + return { outputs: { output }, inputName: "input", inputShape, flops, bytes, outputShape: [1, outH, outW, 64], totalElements }; + }, + }, + { + label: "xl", + buildGraph(builder) { + const inputShape = [1, 256, 256, 32]; + const filterShape = [64, 3, 3, 32]; + const input = builder.input("input", { dataType: "float32", shape: inputShape }); + const filterData = new Float32Array(64 * 3 * 3 * 32); + fillRandom(new Uint8Array(filterData.buffer)); + const filter = builder.constant({ dataType: "float32", shape: filterShape }, filterData); + const output = builder.conv2d(input, filter, { inputLayout: "nhwc", filterLayout: "ohwi" }); + const outH = 254, outW = 254; + const flops = 2 * outH * outW * 64 * 32 * 3 * 3; + const totalElements = 1 * 256 * 256 * 32; + const bytes = (1*256*256*32 + 64*3*3*32 + 1*outH*outW*64) * 4; + return { outputs: { output }, inputName: "input", inputShape, flops, bytes, outputShape: [1, outH, outW, 64], totalElements }; + }, + }, + { + label: "xxl", + buildGraph(builder) { + const inputShape = [1, 512, 512, 32]; + const filterShape = [64, 3, 3, 32]; + const input = builder.input("input", { dataType: "float32", shape: inputShape }); + const filterData = new Float32Array(64 * 3 * 3 * 32); + fillRandom(new Uint8Array(filterData.buffer)); + const filter = builder.constant({ dataType: "float32", shape: filterShape }, filterData); + const output = builder.conv2d(input, filter, { inputLayout: "nhwc", filterLayout: "ohwi" }); + const outH = 510, outW = 510; + const flops = 2 * outH * outW * 64 * 32 * 3 * 3; + const totalElements = 1 * 512 * 512 * 32; + const bytes = (1*512*512*32 + 64*3*3*32 + 1*outH*outW*64) * 4; + return { outputs: { output }, inputName: "input", inputShape, flops, bytes, outputShape: [1, outH, outW, 64], totalElements }; + }, + }, + ], + }, + + add: { + opType: "add", + sizes: [ + { + label: "xs", + buildGraph(builder) { + const shape = [1, 16, 16, 8]; + const a = builder.input("input", { dataType: "float32", shape }); + const bData = new Float32Array(1 * 16 * 16 * 8); + fillRandom(new Uint8Array(bData.buffer)); + const b = builder.constant({ dataType: "float32", shape }, bData); + const output = builder.add(a, b); + const elements = 1 * 16 * 16 * 8; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements, bytes: elements * 3 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "small", + buildGraph(builder) { + const shape = [1, 32, 32, 16]; + const a = builder.input("input", { dataType: "float32", shape }); + const bData = new Float32Array(1 * 32 * 32 * 16); + fillRandom(new Uint8Array(bData.buffer)); + const b = builder.constant({ dataType: "float32", shape }, bData); + const output = builder.add(a, b); + const elements = 1 * 32 * 32 * 16; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements, bytes: elements * 3 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "medium", + buildGraph(builder) { + const shape = [1, 64, 64, 32]; + const a = builder.input("input", { dataType: "float32", shape }); + const bData = new Float32Array(1 * 64 * 64 * 32); + fillRandom(new Uint8Array(bData.buffer)); + const b = builder.constant({ dataType: "float32", shape }, bData); + const output = builder.add(a, b); + const elements = 1 * 64 * 64 * 32; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements, bytes: elements * 3 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "large", + buildGraph(builder) { + const shape = [1, 128, 128, 64]; + const a = builder.input("input", { dataType: "float32", shape }); + const bData = new Float32Array(1 * 128 * 128 * 64); + fillRandom(new Uint8Array(bData.buffer)); + const b = builder.constant({ dataType: "float32", shape }, bData); + const output = builder.add(a, b); + const elements = 1 * 128 * 128 * 64; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements, bytes: elements * 3 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "xl", + buildGraph(builder) { + const shape = [1, 256, 256, 32]; + const a = builder.input("input", { dataType: "float32", shape }); + const bData = new Float32Array(1 * 256 * 256 * 32); + fillRandom(new Uint8Array(bData.buffer)); + const b = builder.constant({ dataType: "float32", shape }, bData); + const output = builder.add(a, b); + const elements = 1 * 256 * 256 * 32; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements, bytes: elements * 3 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "xxl", + buildGraph(builder) { + const shape = [1, 512, 512, 32]; + const a = builder.input("input", { dataType: "float32", shape }); + const bData = new Float32Array(1 * 512 * 512 * 32); + fillRandom(new Uint8Array(bData.buffer)); + const b = builder.constant({ dataType: "float32", shape }, bData); + const output = builder.add(a, b); + const elements = 1 * 512 * 512 * 32; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements, bytes: elements * 3 * 4, outputShape: shape, totalElements: elements }; + }, + }, + ], + }, + + mul: { + opType: "mul", + sizes: [ + { + label: "xs", + buildGraph(builder) { + const shape = [1, 16, 16, 8]; + const a = builder.input("input", { dataType: "float32", shape }); + const bData = new Float32Array(1 * 16 * 16 * 8); + fillRandom(new Uint8Array(bData.buffer)); + const b = builder.constant({ dataType: "float32", shape }, bData); + const output = builder.mul(a, b); + const elements = 1 * 16 * 16 * 8; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements, bytes: elements * 3 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "small", + buildGraph(builder) { + const shape = [1, 32, 32, 16]; + const a = builder.input("input", { dataType: "float32", shape }); + const bData = new Float32Array(1 * 32 * 32 * 16); + fillRandom(new Uint8Array(bData.buffer)); + const b = builder.constant({ dataType: "float32", shape }, bData); + const output = builder.mul(a, b); + const elements = 1 * 32 * 32 * 16; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements, bytes: elements * 3 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "medium", + buildGraph(builder) { + const shape = [1, 64, 64, 32]; + const a = builder.input("input", { dataType: "float32", shape }); + const bData = new Float32Array(1 * 64 * 64 * 32); + fillRandom(new Uint8Array(bData.buffer)); + const b = builder.constant({ dataType: "float32", shape }, bData); + const output = builder.mul(a, b); + const elements = 1 * 64 * 64 * 32; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements, bytes: elements * 3 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "large", + buildGraph(builder) { + const shape = [1, 128, 128, 64]; + const a = builder.input("input", { dataType: "float32", shape }); + const bData = new Float32Array(1 * 128 * 128 * 64); + fillRandom(new Uint8Array(bData.buffer)); + const b = builder.constant({ dataType: "float32", shape }, bData); + const output = builder.mul(a, b); + const elements = 1 * 128 * 128 * 64; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements, bytes: elements * 3 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "xl", + buildGraph(builder) { + const shape = [1, 256, 256, 32]; + const a = builder.input("input", { dataType: "float32", shape }); + const bData = new Float32Array(1 * 256 * 256 * 32); + fillRandom(new Uint8Array(bData.buffer)); + const b = builder.constant({ dataType: "float32", shape }, bData); + const output = builder.mul(a, b); + const elements = 1 * 256 * 256 * 32; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements, bytes: elements * 3 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "xxl", + buildGraph(builder) { + const shape = [1, 512, 512, 32]; + const a = builder.input("input", { dataType: "float32", shape }); + const bData = new Float32Array(1 * 512 * 512 * 32); + fillRandom(new Uint8Array(bData.buffer)); + const b = builder.constant({ dataType: "float32", shape }, bData); + const output = builder.mul(a, b); + const elements = 1 * 512 * 512 * 32; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements, bytes: elements * 3 * 4, outputShape: shape, totalElements: elements }; + }, + }, + ], + }, + + relu: { + opType: "relu", + sizes: [ + { + label: "xs", + buildGraph(builder) { + const shape = [1, 16, 16, 8]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.relu(input); + const elements = 1 * 16 * 16 * 8; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements, bytes: elements * 2 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "small", + buildGraph(builder) { + const shape = [1, 32, 32, 16]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.relu(input); + const elements = 1 * 32 * 32 * 16; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements, bytes: elements * 2 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "medium", + buildGraph(builder) { + const shape = [1, 64, 64, 32]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.relu(input); + const elements = 1 * 64 * 64 * 32; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements, bytes: elements * 2 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "large", + buildGraph(builder) { + const shape = [1, 128, 128, 64]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.relu(input); + const elements = 1 * 128 * 128 * 64; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements, bytes: elements * 2 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "xl", + buildGraph(builder) { + const shape = [1, 256, 256, 32]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.relu(input); + const elements = 1 * 256 * 256 * 32; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements, bytes: elements * 2 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "xxl", + buildGraph(builder) { + const shape = [1, 512, 512, 32]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.relu(input); + const elements = 1 * 512 * 512 * 32; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements, bytes: elements * 2 * 4, outputShape: shape, totalElements: elements }; + }, + }, + ], + }, + + sigmoid: { + opType: "sigmoid", + sizes: [ + { + label: "xs", + buildGraph(builder) { + const shape = [1, 16, 16, 8]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.sigmoid(input); + const elements = 1 * 16 * 16 * 8; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements * 4, bytes: elements * 2 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "small", + buildGraph(builder) { + const shape = [1, 32, 32, 16]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.sigmoid(input); + const elements = 1 * 32 * 32 * 16; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements * 4, bytes: elements * 2 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "medium", + buildGraph(builder) { + const shape = [1, 64, 64, 32]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.sigmoid(input); + const elements = 1 * 64 * 64 * 32; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements * 4, bytes: elements * 2 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "large", + buildGraph(builder) { + const shape = [1, 128, 128, 64]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.sigmoid(input); + const elements = 1 * 128 * 128 * 64; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements * 4, bytes: elements * 2 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "xl", + buildGraph(builder) { + const shape = [1, 256, 256, 32]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.sigmoid(input); + const elements = 1 * 256 * 256 * 32; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements * 4, bytes: elements * 2 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "xxl", + buildGraph(builder) { + const shape = [1, 512, 512, 32]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.sigmoid(input); + const elements = 1 * 512 * 512 * 32; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements * 4, bytes: elements * 2 * 4, outputShape: shape, totalElements: elements }; + }, + }, + ], + }, + + clamp: { + opType: "clamp", + sizes: [ + { + label: "xs", + buildGraph(builder) { + const shape = [1, 16, 16, 8]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.clamp(input, { minValue: 0, maxValue: 6 }); + const elements = 1 * 16 * 16 * 8; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements * 2, bytes: elements * 2 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "small", + buildGraph(builder) { + const shape = [1, 32, 32, 16]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.clamp(input, { minValue: 0, maxValue: 6 }); + const elements = 1 * 32 * 32 * 16; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements * 2, bytes: elements * 2 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "medium", + buildGraph(builder) { + const shape = [1, 64, 64, 32]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.clamp(input, { minValue: 0, maxValue: 6 }); + const elements = 1 * 64 * 64 * 32; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements * 2, bytes: elements * 2 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "large", + buildGraph(builder) { + const shape = [1, 128, 128, 64]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.clamp(input, { minValue: 0, maxValue: 6 }); + const elements = 1 * 128 * 128 * 64; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements * 2, bytes: elements * 2 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "xl", + buildGraph(builder) { + const shape = [1, 256, 256, 32]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.clamp(input, { minValue: 0, maxValue: 6 }); + const elements = 1 * 256 * 256 * 32; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements * 2, bytes: elements * 2 * 4, outputShape: shape, totalElements: elements }; + }, + }, + { + label: "xxl", + buildGraph(builder) { + const shape = [1, 512, 512, 32]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.clamp(input, { minValue: 0, maxValue: 6 }); + const elements = 1 * 512 * 512 * 32; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: elements * 2, bytes: elements * 2 * 4, outputShape: shape, totalElements: elements }; + }, + }, + ], + }, + + averagePool2d: { + opType: "averagePool2d", + sizes: [ + { + label: "xs", + buildGraph(builder) { + const shape = [1, 16, 16, 8]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.averagePool2d(input, { + windowDimensions: [3, 3], strides: [2, 2], padding: [1, 1, 1, 1], layout: "nhwc", + }); + const outElements = 1 * 8 * 8 * 8; + const inElements = 1 * 16 * 16 * 8; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: outElements * 3 * 3, bytes: (inElements + outElements) * 4, outputShape: [1, 8, 8, 8], totalElements: inElements }; + }, + }, + { + label: "small", + buildGraph(builder) { + const shape = [1, 32, 32, 16]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.averagePool2d(input, { + windowDimensions: [3, 3], strides: [2, 2], padding: [1, 1, 1, 1], layout: "nhwc", + }); + const outElements = 1 * 16 * 16 * 16; + const inElements = 1 * 32 * 32 * 16; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: outElements * 3 * 3, bytes: (inElements + outElements) * 4, outputShape: [1, 16, 16, 16], totalElements: inElements }; + }, + }, + { + label: "medium", + buildGraph(builder) { + const shape = [1, 64, 64, 32]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.averagePool2d(input, { + windowDimensions: [3, 3], strides: [2, 2], padding: [1, 1, 1, 1], layout: "nhwc", + }); + const outElements = 1 * 32 * 32 * 32; + const inElements = 1 * 64 * 64 * 32; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: outElements * 3 * 3, bytes: (inElements + outElements) * 4, outputShape: [1, 32, 32, 32], totalElements: inElements }; + }, + }, + { + label: "large", + buildGraph(builder) { + const shape = [1, 128, 128, 64]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.averagePool2d(input, { + windowDimensions: [3, 3], strides: [2, 2], padding: [1, 1, 1, 1], layout: "nhwc", + }); + const outElements = 1 * 64 * 64 * 64; + const inElements = 1 * 128 * 128 * 64; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: outElements * 3 * 3, bytes: (inElements + outElements) * 4, outputShape: [1, 64, 64, 64], totalElements: inElements }; + }, + }, + { + label: "xl", + buildGraph(builder) { + const shape = [1, 256, 256, 32]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.averagePool2d(input, { + windowDimensions: [3, 3], strides: [2, 2], padding: [1, 1, 1, 1], layout: "nhwc", + }); + const outElements = 1 * 128 * 128 * 32; + const inElements = 1 * 256 * 256 * 32; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: outElements * 3 * 3, bytes: (inElements + outElements) * 4, outputShape: [1, 128, 128, 32], totalElements: inElements }; + }, + }, + { + label: "xxl", + buildGraph(builder) { + const shape = [1, 512, 512, 32]; + const input = builder.input("input", { dataType: "float32", shape }); + const output = builder.averagePool2d(input, { + windowDimensions: [3, 3], strides: [2, 2], padding: [1, 1, 1, 1], layout: "nhwc", + }); + const outElements = 1 * 256 * 256 * 32; + const inElements = 1 * 512 * 512 * 32; + return { outputs: { output }, inputName: "input", inputShape: shape, flops: outElements * 3 * 3, bytes: (inElements + outElements) * 4, outputShape: [1, 256, 256, 32], totalElements: inElements }; + }, + }, + ], + }, +}; diff --git a/explainer.md b/explainer.md new file mode 100644 index 0000000..2549999 --- /dev/null +++ b/explainer.md @@ -0,0 +1,420 @@ +# Dynamic AI Offloading Protocol (DAOP) + +## Table of Contents +- [Authors](#authors) +- [Participate](#participate) +- [Introduction](#introduction) +- [User-Facing Problem](#user-facing-problem) + - [Goals](#goals) + - [Non-goals](#non-goals) +- [User research](#user-research) +- [Use Cases](#use-cases) + - [Adaptive Video Conferencing Background Blur](#adaptive-video-conferencing-background-blur) + - [Privacy-Preserving Photo Enhancement](#privacy-preserving-photo-enhancement) +- [Proposed Approach: Model-Centric Evaluation (Callee Responsible)](#proposed-approach-model-centric-evaluation-callee-responsible) + - [Standardized Specification Requirements](#standardized-specification-requirements) + - [The `estimateQoS()` API](#the-estimateqos-api) + - [The "Weightless" Requirement and WebNN Spec Extensions](#the-weightless-requirement-and-webnn-spec-extensions) + - [Performance Tiers](#performance-tiers) +- [Implementation Considerations (AI Stack Internals)](#implementation-considerations-ai-stack-internals) + - [Example Code: Adaptive Background Blur](#example-code-adaptive-background-blur) +- [Discussion: Potential API Enhancements](#discussion-potential-api-enhancements) + - [1. Boolean Requirement API](#1-boolean-requirement-api) + - [2. QoS Change Events](#2-qos-change-events) +- [Alternatives considered](#alternatives-considered) + - [Device-Centric Approach (Caller Responsible)](#device-centric-approach-caller-responsible) +- [Accessibility, Internationalization, Privacy, and Security Considerations](#accessibility-internationalization-privacy-and-security-considerations) + - [Privacy](#privacy) + - [Security](#security) +- [Stakeholder Feedback / Opposition](#stakeholder-feedback--opposition) +- [References & acknowledgements](#references--acknowledgements) + +## Authors + +- Jonathan Ding (Intel) + +## Participate + +- [Issue tracker - Dynamic AI Offloading Protocol (DAOP)](https://github.com/webmachinelearning/proposals/issues/15) + +## Introduction + +This proposal addresses the challenge of efficiently offloading AI inference tasks from cloud +servers to client devices while maintaining Quality of Service (QoS). This protocol provides a more +effective mechanism for applications to evaluate whether a specific AI inference request is suitable +for execution on the client side. It moves beyond static hardware specifications by enabling +dynamic, privacy-preserving assessment of device capabilities, helping applications make informed +offloading decisions. Throughout this document, the **Application (App)** represents the +decision-making logic, which may reside on the client device (e.g., in a web browser) or on a cloud +server. + +## User-Facing Problem + +Modern web applications increasingly rely on AI, but running these models solely in the cloud can be +expensive and introduce latency. Conversely, running them on client devices is difficult because +developers cannot easily determine if a target device—given its specific CPU, GPU, and NPU +capabilities—can host a specific AI model without compromising performance or user privacy. + +### Goals + +- Standardize a mechanism for identifying device performance buckets for AI tasks. +- Enable efficient offloading of AI inference from cloud to client devices. +- Maintain high Quality of Service (QoS) during offloading. +- Protect user privacy by avoiding detailed hardware fingerprinting. +- Provide a future-proof abstraction that works across varying hardware (CPU, GPU, NPU). +- Define a protocol that works regardless of whether the decision logic resides in the App's cloud + backend or client frontend. + +### Non-goals + +- Defining the specific wire protocol for model transmission (this focuses on the + negotiation/estimation). +- Mandatory implementation of any specific inference engine. +- Solving all AI workload types in version 1 (e.g., extremely large LLMs with dynamic shapes). + +## User research + +[Placeholder for user research findings. Initial feedback from ISVs and web developers indicates a +strong need for predictable client-side AI performance metrics.] + +## Use Cases + +### Adaptive Video Conferencing Background Blur + +A video conferencing application wants to offload background blur processing to the user's laptop to +save server costs and improve privacy, but only if the device can maintain a stable 30fps. + +1. **Inquiry**: The application builds a weightless graph of its blur model and calls + `context.estimateQoS()`. +2. **Estimation**: The device evaluates its capability by integrating a wide range of local + intelligence: the AI stack software (including specialized drivers and runtimes), the specific + hardware accelerators, current system state (thermal state, battery level, power mode), and + environmental configurations that might affect performance. +3. **Decision**: + - If the `performanceTier` meets the application's requirements (e.g., "excellent", "good", or + "fair" for real-time video), the application logic decides to download the full weights, bind + them, and run locally. + - Otherwise (e.g., "slow", "very-slow", "poor"), it falls back to cloud-based processing. + +### Privacy-Preserving Photo Enhancement + +A photo editing web app wants to run complex enhancement filters using the user's mobile NPU to +reduce latency and maintain privacy. + +1. **Inquiry**: The application provides a weightless description of the enhancement model to + `context.estimateQoS()`, including specific target resolutions. +2. **Estimation**: The device evaluates its capability by considering the current hardware and + software environment, including AI stack optimizations, hardware accelerators (such as NPU), and + overall system state (e.g., battery level, power mode, thermal conditions). +3. **Decision**: The application enables the "High Quality" filter locally if the performance tier + meets the requirements. + +## Proposed Approach: Model-Centric Evaluation (Callee Responsible) + +The preferred approach is **Model-Centric**, where the device (the callee, i.e., the responder to +the AI request) is responsible for evaluating its own ability to handle the requested AI workload. +In this model, the **Application** (the caller) sends a **Model Description Inquiry**—a weightless +description of the AI model and input characteristics—to the device. The device, as the callee, uses +its local knowledge of hardware, current system state, software environment, and implementation +details to estimate the expected Quality of Service (QoS) for the given task. + +```mermaid +sequenceDiagram + participant App as App + participant Device as Device + participant Cloud as Cloud LLM + App->>Device: Weightless Model Description & Input Metadata + Note over Device: UA/AI Stack runs Local Estimation
(Internal: Static / Dry Run / Black Box) + Device-->>App: Return QoS Bucket (Performance Tier) + Note over App: App makes Decision
(Compare QoS vs Requirement) + alt App Decides: Offload + App->>Device: Bind Weights & Run Locally + else App Decides: Cloud + App->>Cloud: Execute on Cloud + end +``` + +This "callee responsible" design ensures that sensitive device details remain private, as only broad +performance tiers are reported back to the application. It also allows the device to make the most +accurate estimation possible, considering real-time factors like thermal state, background load, and +hardware-specific optimizations that are not visible to the caller (whether the caller logic is in +the cloud or on the client). By shifting responsibility for QoS evaluation to the callee, the +protocol achieves both privacy protection and more reliable offloading decisions. + +### Standardized Specification Requirements + +To enable consistent cross-vendor estimation, the protocol requires standardization of the following +inputs and outputs: + +1. **Weightless Model Description**: + - Based on the **WebNN Graph topology**. + - Includes **Lazy Bind Constants**: Placeholders for weights (via descriptors and labels) that + enable "weightless" graph construction and estimation without downloading large parameter + files. + - **Dynamic vs. Static Graph Expression**: This proposal currently uses the dynamic WebNN + `MLGraphBuilder` API to construct the weightless graph at runtime. An alternative approach is + to express the graph topology statically using a declarative format. The + [webnn-graph][ref-webnn-graph] project defines a WebNN-oriented graph DSL (`.webnn` format) + that separates the graph definition (structure only, no tensor data) from a weights manifest + and binary weights file. This static representation is human-readable, + diffable, and enables tooling such as ONNX-to-WebNN conversion and graph visualization. A + future version of DAOP could accept either a dynamically built `MLGraph` or a statically + defined `.webnn` graph description as input to `estimateQoS()`. +2. **Model Metadata (Optional)**: + - Information about the weights that can significantly impact performance, such as **sparsity** + or specific quantization schemes. +3. **Input Characterization**: + - The **shape** and **size** of the input data (e.g., image resolution, sequence length). +4. **QoS Output**: + - Unified **Performance Tiers** (e.g., "excellent", "good", "fair", "moderate", "slow", + "very-slow", "poor") to ensure hardware abstraction and prevent privacy-leaking through precise + latency metrics. + +### The `estimateQoS()` API + +We proposes a core API for performance negotiation: + +```webidl +dictionary MLQoSReport { + MLPerformanceTier performanceTier; +}; + +partial interface MLContext { + Promise estimateQoS(MLGraph graph, optional MLQoSOptions options); +}; + +dictionary MLQoSOptions { + // Input characteristics + record inputDescriptors; + + // Weights characteristics (Optional) + boolean weightsSparsity = false; +}; +``` + +### The "Weightless" Requirement and WebNN Spec Extensions + +To maximize the benefits of DAOP, the underlying WebNN specification should support a **weightless +build mode**. Currently, WebNN's `constant()` API typically requires an `ArrayBufferView`, which +implies the weights must already be present in memory. + +We propose that WebNN builders be extended to allow: + +1. **Weightless Constants**: Defining constants using only their descriptor (shape, type) and a + `label` for late-binding. +2. **Lazy / Explicit Binding**: Separating the graph topology definition from the binding of heavy + weight data. By using an explicit `bindConstants()` (or similar) method, we achieve **lazy + binding** where weights are only provided and processed after the offloading decision is made. + This design aligns with the proposal in + [webnn#901][ref-webnn-901], which addresses the same + fundamental problem from a memory-efficiency perspective. That proposal allows + `builder.constant()` to accept just an `MLOperandDescriptor` (shape and type, no + `ArrayBufferView`), producing a "hollow constant" handle. After `builder.build()`, weights are + streamed to device memory one at a time via `graph.setConstantData(constantOperand, dataBuffer)`, + reducing peak CPU memory from ~3× model size to ~1×. Our `bindConstants()` API could be + integrated with or replaced by this `setConstantData()` mechanism in a future version of the + spec, combining the benefits of weightless QoS estimation with memory-efficient weight loading. + +### Performance Tiers + +The `estimateQoS()` API returns a `performanceTier` string that represents the device's estimated +ability to execute the given graph. The tiers are designed to be broad enough to prevent hardware +fingerprinting while still enabling meaningful offloading decisions: + +| Tier | Indicative Latency | Interpretation | +| ------------- | ------------------ | -------------------------------------- | +| `"excellent"` | < 16 ms | Real-time (60 fps frame budget) | +| `"good"` | < 100 ms | Interactive responsiveness | +| `"fair"` | < 1 s | Responsive for non-real-time tasks | +| `"moderate"` | < 10 s | Tolerable for batch or one-shot tasks | +| `"slow"` | < 30 s | Noticeable wait | +| `"very-slow"` | < 60 s | Long wait | +| `"poor"` | ≥ 60 s | Likely unacceptable for most use cases | + +The exact tier boundaries are **implementation-defined** and may be adjusted. The key requirement is +that tiers remain coarse enough to avoid fingerprinting while fine enough for applications to make +useful offloading decisions. + +Applications choose their own acceptance threshold based on use-case requirements. For example, a +video conferencing blur might require "good" or better, while a one-shot photo enhancement might +accept "moderate". + +## Implementation Considerations (AI Stack Internals) + +The underlying system (e.g., User Agent or WebNN implementation) can use several strategies to +estimate performance for the weightless graph. **These strategies are internal implementation +details of the AI stack and are transparent to the application developer.** It is important to note +that these strategies are **not part of the DAOP specification or proposal**; they are discussed +here only to illustrate possible implementation choices and feasibility. Common techniques include: + +1. Static Cost Model: Analytical formulas (e.g., Roofline model) or lookup tables to predict + operator costs based on descriptors. +2. Dry Run: Fast simulation of the inference engine's execution path without heavy computation or + weights. +3. Black Box Profiling: Running the actual model topology using dummy/zero weights to measure + timing. + +For a concrete demonstration of these techniques, see the [daop-illustration](./daop-illustration) +project and its [implementation details](./daop-illustration/IMPLEMENTATION.md). It showcases a +**Static Cost Model** strategy that employs **log-log polynomial interpolation** of +measured operator latencies derived from per-operator micro-benchmarks. By fitting degree-1 +polynomials (power-law curves) to latency data across multiple tensor sizes in logarithmic space, +with a left-side clamp to handle small-size noise, the implementation +captures performance characteristics common in GPU-accelerated workloads. This +illustration uses a simplified approach for demonstration purposes; production implementations could +employ other strategies such as Roofline models, learned cost models, +hardware-specific operator libraries, or ML-based performance predictors. These internal metrics +(regression coefficients, estimated throughput) are **internal implementation +details** of the AI stack and are never exposed directly to the web application. + +To prevent hardware fingerprinting, the raw estimation results are normalized into broad +**Performance Tiers** before being returned to the web application. The application logic remains +decoupled from the hardware-specific details. + +### Example Code: Adaptive Background Blur + +The following example shows how an application might use the API to decide whether to offload. + +```js +// 1. Initialize WebNN context +const context = await navigator.ml.createContext({ deviceType: "npu" }); +const builder = new MLGraphBuilder(context); + +// 2. Build a WEIGHTLESS graph +const weights = builder.constant({ + shape: [3, 3, 64, 64], + dataType: "float32", + label: "modelWeights", // Identity for late-binding meta-data +}); + +const input = builder.input("input", { shape: [1, 3, 224, 224], dataType: "float32" }); +const output = builder.conv2d(input, weights); +const graph = builder.build(); + +// 3. DAOP Estimation: Providing input characteristics +const qos = await context.estimateQoS(graph, { + inputDescriptors: { + input: { shape: [1, 3, 720, 1280], dataType: "float32" }, + }, +}); + +// Check if the performance tier meets our requirements +const acceptable = ["excellent", "good", "fair", "moderate"]; +if (acceptable.includes(qos.performanceTier)) { + const realWeights = await fetch("model-weights.bin").then((r) => r.arrayBuffer()); + + // 4. Bind real data (using the label) explicitly. + await context.bindConstants(graph, { + modelWeights: realWeights, + }); + + // 5. Subsequent compute calls only need dynamic inputs + const results = await context.compute(graph, { + input: cameraFrame, + }); +} else { + runCloudInference(); +} +``` + +## Discussion: Potential API Enhancements + +We are considering several additions to the API to better support adaptive applications: + +### 1. Boolean Requirement API + +Instead of returning a bucket, the application could provide its specific requirements (e.g., +minimum FPS or maximum latency) and receiving a simple boolean "can meet requirement" response. + +```webidl +partial interface MLContext { + Promise meetsRequirement(MLGraph graph, MLPerformanceTier requiredTier, optional MLQoSOptions options); +}; +``` + +### 2. QoS Change Events + +AI performance can change dynamically due to thermal throttling, battery state, or background system +load. An event-driven mechanism would allow applications to react when the device's ability to meet +a specific QoS requirement changes. + +```webidl +interface MLQoSChangeEvent : Event { + readonly attribute boolean meetsRequirement; +}; + +// Application listens for changes in offload capability +const monitor = context.createQoSMonitor(graph, "excellent"); +monitor.onchange = (e) => { + if (!e.meetsRequirement) { + console.log("Performance dropped, switching back to cloud."); + switchToCloud(); + } else { + console.log("Performance restored, offloading to local."); + switchToLocal(); + } +}; +``` + +## Alternatives considered + +### Device-Centric Approach (Caller Responsible) + +In this alternative, the Application acts as the central intelligence. It collects raw hardware +specifications and telemetry from the device and makes the offloading decision. + +```mermaid +sequenceDiagram + participant App as App + participant Device as Device + participant Cloud as Cloud LLM + App->>Device: Request Device Description + Device-->>App: Return Spec (CPU, GPU, NPU, Mem, Microbenchmarks...) + Note over App: App estimates QoS
(Mapping H/W Spec -> AI Performance) + Note over App: App makes Decision
(Compare QoS vs Requirement) + alt App Decides: Offload + App->>Device: Execute locally + else App Decides: Cloud + App->>Cloud: Execute on Cloud + end +``` + +- **Process**: Device returns specific hardware details (CPU model, GPU frequency, NPU TOPs, + micro-benchmark results) -> Application estimates QoS -> Application decides to offload. +- **Why rejected**: + - **Privacy Risks**: Exposes detailed hardware fingerprints and potentially sensitive system + telemetry to remote servers. + - **Estimation Complexity**: It is extremely difficult for a remote server to accurately map raw + hardware specs to actual inference performance across a fragmented device ecosystem (ignoring + local drivers, thermal state, and OS-level optimizations). + - **Scalability**: Requires maintaining and constantly updating an impractical global database + mapping every possible device configuration to AI performance profiles. + +## Accessibility, Internationalization, Privacy, and Security Considerations + +### Privacy + +The Model-Centric approach significantly enhances privacy by: + +- Avoiding hardware fingerprinting. +- Returning broad **Performance Tiers** rather than exact hardware identifiers or precise latency + metrics. +- Enabling local processing of sensitive user data (like photos or video) that would otherwise need + to be sent to the cloud. + +### Security + +- Weightless model descriptions should be validated to prevent malicious topologies from causing + resource exhaustion (DoS) during the estimation phase. + +## Stakeholder Feedback / Opposition + +- [Implementors/ISVs]: Initial interests from several ISVs, to be documented. + +## References & acknowledgements + +Many thanks for valuable feedback and advice from the contributors to the WebNN and Web Machine +Learning Working Group. + +[ref-webnn-graph]: https://github.com/rustnn/webnn-graph +[ref-webnn-901]: https://github.com/webmachinelearning/webnn/issues/901 From 12919d023cbe2de6eff9fc7f1b3529c914cd72be Mon Sep 17 00:00:00 2001 From: Jonathan Ding Date: Wed, 11 Feb 2026 21:55:25 +0800 Subject: [PATCH 2/2] renamed explainer.md to README.md --- explainer.md => README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) rename explainer.md => README.md (99%) diff --git a/explainer.md b/README.md similarity index 99% rename from explainer.md rename to README.md index 2549999..3cfd954 100644 --- a/explainer.md +++ b/README.md @@ -1,4 +1,6 @@ -# Dynamic AI Offloading Protocol (DAOP) +# Dynamic AI Offloading Protocol (DAOP) — Explainer + +> 📺 **[Live Demo](daop-illustration/)** — Browser-based illustration of `estimateQoS()` with interactive micro-benchmarks ## Table of Contents - [Authors](#authors)