查看原文
其他

W3C 候选推荐标准: Web 神经网络 API

@w3c中国 W3C资讯 2024-07-15
W3C Web 机器学习工作组发布 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,可实现机器学习模型的硬件加速,为计算机视觉、自然语言处理和生成或语音处理的高性能隐私保护使用开辟了道路。

机器学习(ML)是人工智能的一个分支。ML 的一个子领域称为深度学习,其各种神经网络架构为 Web 应用程序提供了新的引人入胜的用户体验。一些适用于广泛 Web 应用程序的常见用例包括:人物检测、人脸识别、语义分割、骨架检测、风格迁移、超分辨率、图像说明、机器翻译、噪声抑制等。关于用例的详细介绍,参见:

https://webmachinelearning.github.io/webnn/#usecases

Web 神经网络 API(WebNN API) 的设计过程始于与包括浏览器厂商、关键 ML JS 框架、硬件厂商以及 Web 开发人员在内的广大参与方联合识别关键用例。以用例来驱动设计的目的是将用户需求置于首位。工作组进而将关键用例拆分为具体需求:

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.
查看 WebNN 代码编辑器:‍‍‍‍‍‍

https://webmachinelearning.github.io/webnn-samples/code/?example=mul_add.js

该规范的目的是支持 Web 应用程序和框架可以利用机器学习的本机操作系统服务和用户计算机上可用的底层硬件创新,在 Web 平台上实现一致、高效和可靠的机器学习体验。

欢迎通过 GitHub 提交对该规范反馈:

https://github.com/webmachinelearning/webnn/issues/

访问 Web 机器学习标准工作组主页:

https://www.w3.org/groups/wg/webmachinelearning


继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存