W3C 候选推荐标准: Web 神经网络 API
Web Neural Network API
https://www.w3.org/TR/2023/CR-webnn-20230330/
W3C 候选推荐标准(Candidate
Recommendation简称 CR)意味着对规范的技术设计基本完成,现开始进行公众审阅并征集广泛实现和测试(Call for Implementation)。
https://wpt.fyi/results/webnn?label=master&label=experimental&aligned&q=webnn https://github.com/web-platform-tests/wpt/tree/master/webnn
Web 神经网络 API 是一个底层浏览器 API,可实现机器学习模型的硬件加速,为计算机视觉、自然语言处理和生成或语音处理的高性能隐私保护使用开辟了道路。
https://webmachinelearning.github.io/webnn/#usecases
https://github.com/webmachinelearning/webnn/blob/main/op_compatibility/first_wave_models.md
随着软件和硬件生态系统中出现的 ML 创新,Web 面临的主要挑战之一是将软件和硬件开发联系起来,汇集一个可跨硬件平台扩展并且与任何基于 Web 的机器学习体验框架配合的解决方案。工作组因此提议将 WebNN API 作为 Web 浏览器中神经网络的抽象提取。
如上图所示,Web 浏览器可使用操作系统中可用的本机机器学习 API 来实现 WebNN API。 这种架构允许 JavaScript 框架利用操作系统和硬件平台中的尖端机器学习创新,而不受特定于平台的功能的限制,通过与硬件无关的抽象层来弥合软硬件之间的差距。
神经网络的核心是数学运算的计算图。 这些操作是计算机视觉、自然语言处理和机器人技术中现代机器学习技术的基石。
WebNN API 是构建和执行神经网络计算图的规范。它为 Web 应用程序提供了在 Web 浏览器上创建、编译和运行机器学习网络的能力。下列代码示例演示了这个 API 的简单用法:
const operandType = {type: 'float32', dimensions: [2, 2]};
const context = await navigator.ml.createContext();
const builder = new MLGraphBuilder(context);
// 1. Create a computational graph 'C = 0.2 * A + B'.
const constant = builder.constant(0.2);
const A = builder.input('A', operandType);
const B = builder.input('B', operandType);
const C = builder.add(builder.mul(A, constant), B);
// 2. Compile it into an executable.
const graph = await builder.build({'C': C});
// 3. Bind inputs to the graph and execute for the result.
const bufferA = new Float32Array(4).fill(1.0);
const bufferB = new Float32Array(4).fill(0.8);
const bufferC = new Float32Array(4);
const inputs = {'A': bufferA, 'B': bufferB};
const outputs = {'C': bufferC};
const result = await context.compute(graph, inputs, outputs);
// The computed result of [[1, 1], [1, 1]] is in the buffer associated with
// the output operand.
console.log('Output value: ' + result.outputs.C);
// Note: the result.outputs.C buffer is different from the bufferC, but it
// shares the same backing memory allocation.
https://webmachinelearning.github.io/webnn-samples/code/?example=mul_add.js
该规范的目的是支持 Web 应用程序和框架可以利用机器学习的本机操作系统服务和用户计算机上可用的底层硬件创新,在 Web 平台上实现一致、高效和可靠的机器学习体验。
https://github.com/webmachinelearning/webnn/issues/
https://www.w3.org/groups/wg/webmachinelearning