Chrome 91 支持 WebAssembly SIMD,加速 Web 在 AI 等领域的应用

简介: 5月25日正式发布的Chrome 91,带来了哪些有意思的新特性呢?

作者:寒雁Talk

5月25日正式发布的Chrome 91,带来了哪些有意思的新特性呢?

From:阿里巴巴前端标准化组

背景


十多年来,Web技术突飞猛进,其中Chrome功不可没,了解Chrome可以帮助我们理解整个行业的发展趋势。


TL;TR


  • Chrome 91最大的亮点是什么?WebAssembly SIMD
  • Chrome 91是哪天发布的?2021-05-25
  • Chrome 91更新了多少个特性?18个,具体有哪些特性可以查看Chrome Platform Status
  • Chrome 91将使用哪个版本的V8引擎?v9.1
  • 我感兴趣的新特性依次有哪些?
  • WebAssembly SIMD
  • WebSockets over HTTP/2
  • Block HTTP port 10080
  • GravitySensor API
  • 你感兴趣的新特性依次有哪些?这个我就不知道了啊,欢迎交流!



详细解读

WebAssembly SIMD


Chrome 91默认开启了WebAssembly SIMD。


SIMD是Single Instruction Multiple Data的缩写,中文术语为“单指令多数据流”,顾名思义,就是可以使用单条指令同时处理多个数据。


SIMD是一种特殊的CPU指令,它可以实现数据层面的并行处理。如下图,当我们需要对两个长度为4的数组做加法时,使用普通的指令,则需要执行4次普通加法指令;如果使用SIMD指令的话,则只需要执行1次向量加法即可:


SIMD.png

2.0

1.0

1.0

3.0

2.0

3.0

二二

7.0

3.0

4.0

4.0

3.0

7.0

5.0

11.0

11.0

6.0

6.0

5.0

7.0

7.0

15.0

8.0

8.0

15.0

SinglelnstructionSingleData(SIsD)

SinglelnstructionMultipleData(SIMD)


SIMD常用于视频、音频、图像、加密、动画、游戏、AI等需要处理大量数据的应用场景,可以极大地提高向量类型的数据处理性能。主流的CPU都有SIMD指令,比如x86的SSE、ARM的Neon。


WebAssembly SIMD为WebAssembly新增了一个变量类型v128及其一系列v128的运算符,这些运算符就是SIMD指令。另外,由名字可知v128类型的长度是固定的,为128比特。


SIMD的指令非常多,而且不同CPU的SIMD是不一样的,WebAssembly SIMD只选取了各个CPU都支持的部分最常用的SIMD指令。因此,可以将WebAssembly SIMD理解为各个CPU的SIMD指令的子集,同时将各个CPU的SIMD指令进行了一层抽象和统一,开发者只需要学习WebAssembly SIMD,而不需要了解底层CPU的SIMD。


WebAssembly SIMD.png

WebAssemblySIMD

PowerVSX

MIPSMSA

x86SSE/AVX

ARMNeon


目前,Emscripten仅支持将WebAssembly SIMD指令编译为x86 SSE/AVX指令以及ARM Neon指令。


在计算机领域,貌似没有什么问题是用分层解决不了的,如果有的话,可以再分一层。


目前,WebAssembly SIMD这个提案已经进入WebAssembly提案流程的Phase 4(Standardize the Feature),尚未完全完成,不过离最后完成也只有1个Phase了,可以理解为基本完成了,V8(Chrome、Node.js)、Firefox以及Emscripten都已经实现了WebAssembly SIMD。


在手势识别应用中,WebAssembly SIMD可以明显提高性能,使用SIMD和不使用SIMD的差距非常明显(两者都可以直接进行测试),使用SIMD时帧率更高,画面更加流畅,如下图所示:


hand.gif

2.1FPS

WREBMOAROE


TensorFlow.js 2.1.0已经支持了WebAssembly SIMD。以下为基于TensorFlow.js所实现的人脸识别应用BlazeFace,使用WebAssembly SIMD可以将其性能提升1.7~ 2.1倍:



对于更加复杂的应用,比如AI领域大名鼎鼎的ImageNet,其基于TensorFlow.js所实现的MobileNet V2模型,使用WebAssembly SIMD可以将其性能提升2.2 ~ 4.5倍:


MobileNet V2.png

MobileNetV2

Wasm

Wasm+SIMD

300

200

100

ThinkPadx1

Nodev.14onMacBookPro152019

MacBookPro152019

Pixel4

Gen6withLinux



WebSockets over HTTP/2


Chrome 91支持基于HTTP/2的Websocket。


WebSockets和HTTP/2分别是什么,想必大部分Web工程师都知道了,但是,WebSockets和HTTP/2掺和在一起是啥意思呢?


要回答这个问题,不妨先梳理一下时间线:


image.png


10年前所制定的Websocket协议是基于HTTP/1.1的,10年后,HTTP/2已经被一半的网站所使用。如果Websocket继续使用HTTP/1.1协议的话,则无法利用HTTP/2最大的好处:多路复用。


如果基于HTTP/1.1的话,Websocket需要单独的TCP连接,这挺浪费系统资源的,尤其对于需要建立大量Websocket的应用来说,比如Slack。


如果基于HTTP/2的话,Websocket与其他HTTP/2请求复用同一个TCP连接,既节省了建立TCP连接的时间,也节省了宝贵的TCP连接。



Block HTTP port 10080


为了缓解NAT Slipstream 2.0攻击,Chrome 91又屏蔽了一个新的端口:10080。


自从去年11月底NAT Splipstream被发现以来,Chrome已经屏蔽了11个端口了,具体如下表:


image.png


当我们访问这些被屏蔽的端口时( http://127.0.0.1:554 ),会出现报错页面:ERR_UNSAFE_PORT


截屏2021-05-05 17.38.36.png

127.0.0.1

127.0.0.1:554

无法访问此网站

网址为http://127.0.0.1:554/的网页可能暂时无法

连接,或者它已永久性地移动到了新网址.

ERRUNSAFEPORT


NAT Splipstream是一种非常巧妙、同时也非常危险的攻击方式,黑客可以通过一段JS代码绕开防火墙,访问内网的服务,比如打印机和摄像头。大家可以通过下面的视频感受一下其攻击过程:



关于NAT Splipstream攻击的技术细节,大家不妨看一下我的上一篇博客《Chrome 90将默认使用HTTPS,Web更安全了》


目测Chrome屏蔽的端口有可能会继续增加,大家如果看到ERR_UNSAFE_PORT这个报错也不用感到奇怪,换个端口用吧。



GravitySensor API


Chrome 91新增了GravitySensor API,用于获取设备(比如手机)由于地球重力而产生的加速度。


GravitySensor API可以用于开发游戏,比如在赛车类游戏中,通过倾斜手机控制赛车的方向。事实上,GravitySensor API这个需求也正是是游戏引擎Unity的开发者反馈给Chrome团队的。



总结



Chrome 91最大的亮点是WebAssembly SIMD,它通过提高Web平台的性能进一步拓展了Web应用的可能性,比如视频、音频、图像、加密、动画、游戏、AI等领域。因此,本文最大的篇幅都是在介绍WebAssembly SIMD。


类似于WebAssembly SIMD这样的创新会不断出现,从而继续提升Web应用的性能,让Web可以应用于更加广阔的领域。正如过去的10多年,V8引擎在性能上的不断优化促是Web技术走向繁荣的关键因素之一,我们也可以预见,未来10年的Web将更加精彩。


欢迎与我交流:hanyan.lk@alibaba-inc.com


参考

  • Chrome 89开启Web应用的物联网时代
  • Chrome 90将默认使用HTTPS,Web更安全了
  • Chrome 91: Handwriting Recognition, WebXR Plane Detection and More
  • Feature: WebAssembly SIMD
  • Fast, parallel applications with WebAssembly SIMD
  • Harnessing Your Hardware with SIMD
  • Zoom on Web: getting connected with advanced web technology
  • Supercharging the TensorFlow.js WebAssembly backend with SIMD and multi-threading
  • A SIMD Programming Model for Dart, JavaScript, and other dynamically typed scripting languages
  • Feature: WebSockets over HTTP/2
  • WebSockets over HTTP/2 Chromium Design Document
  • V8 release v9.1

image.png

相关文章
|
2月前
|
缓存 前端开发 应用服务中间件
Web端实时通信技术SSE在携程机票业务中的实践应用
本文介绍了携程机票前端基于Server-Sent Events(SSE)实现服务端推送的企业级全链路通用技术解决方案。文章深入探讨了 SSE 技术在应用过程中包括方案对比、技术选型、链路层优化以及实际效果等多维度的技术细节,为类似使用场景提供普适性参考和借鉴。
67 7
|
2月前
|
前端开发 算法 API
构建高性能图像处理Web应用:Next.js与TailwindCSS实践
本文分享了构建在线图像黑白转换工具的技术实践,涵盖技术栈选择、架构设计与性能优化。项目采用Next.js提供优秀的SSR性能和SEO支持,TailwindCSS加速UI开发,WebAssembly实现高性能图像处理算法。通过渐进式处理、WebWorker隔离及内存管理等策略,解决大图像处理性能瓶颈,并确保跨浏览器兼容性和移动设备优化。实际应用案例展示了其即时处理、高质量输出和客户端隐私保护等特点。未来计划引入WebGPU加速、AI增强等功能,进一步提升用户体验。此技术栈为Web图像处理应用提供了高效可行的解决方案。
|
3月前
|
人工智能
WEB CAD 利用AI编程实现多行文本的二次开发
本文介绍了在MxCAD插件中实现自定义编辑器实体类的功能,重点展示如何通过MxCADMText类在CAD中渲染和管理富文本。文章详细说明了注册同心圆实体文本的步骤,包括实现自定义文本类、注册自定义文本以及交互式修改参数的方法。此外,还扩展实践了粗糙度实体文本的注册与应用,涵盖构造粗糙度自定义实体文本类、注册及初始化过程,并通过示例图展示了运行效果。这些功能可帮助用户将复杂图形以文本形式插入多行文本中,提升项目设计效率。
|
3月前
|
人工智能 搜索推荐 IDE
突破网页数据集获取难题:Web Unlocker API 助力 AI 训练与微调数据集全方位解决方案
本文介绍了Web Unlocker API、Web-Scraper和SERP API三大工具,助力解决AI训练与微调数据集获取难题。Web Unlocker API通过智能代理和CAPTCHA绕过技术,高效解锁高防护网站数据;Web-Scraper支持动态内容加载,精准抓取复杂网页信息;SERP API专注搜索引擎结果页数据抓取,适用于SEO分析与市场研究。这些工具大幅降低数据获取成本,提供合规保障,特别适合中小企业使用。粉丝专属体验入口提供2刀额度,助您轻松上手!
125 2
|
3月前
|
人工智能 自然语言处理 JavaScript
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
Magnitude是一个基于视觉AI代理的开源端到端测试框架,通过自然语言构建测试用例,结合推理代理和视觉代理实现智能化的Web应用测试,支持本地运行和CI/CD集成。
412 15
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
|
5月前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
138 19
|
6月前
|
Web App开发 编解码 vr&ar
使用Web浏览器访问UE应用的最佳实践
在3D/XR应用开发中,尤其是基于UE(虚幻引擎)开发的高精度场景,传统终端因硬件局限难以流畅运行高帧率、复杂效果的三维应用。实时云渲染技术,将渲染任务转移至云端服务器,降低终端硬件要求,确保用户获得流畅体验。具备弹性扩展、优化传输协议、跨平台支持和安全性等优势,适用于多种终端和场景,特别集成像素流送技术,帮助UE开发者实现低代码上云操作,简化部署流程,保留UE引擎的强大开发能力,确保画面精美且终端轻量化。
304 17
使用Web浏览器访问UE应用的最佳实践
|
7月前
|
弹性计算 Java 关系型数据库
Web应用上云经典架构实践教学
Web应用上云经典架构实践教学
129 2
Web应用上云经典架构实践教学
|
7月前
|
弹性计算 负载均衡 安全
云端问道-Web应用上云经典架构方案教学
本文介绍了企业业务上云的经典架构设计,涵盖用户业务现状及挑战、阿里云业务托管架构设计、方案选型配置及业务初期低门槛使用等内容。通过详细分析现有架构的问题,提出了高可用、安全、可扩展的解决方案,并提供了按量付费的低成本选项,帮助企业在业务初期顺利上云。
168 0
|
Web App开发 机器学习/深度学习 人工智能
使用 AI 为 Web 网页增加无障碍功能
本文讲的是使用 AI 为 Web 网页增加无障碍功能,根据世界健康组织的统计,全球约有 2.85 亿位视力障碍人士,仅美国就有 810 万网民患视力障碍。
1695 0

热门文章

最新文章