微软 Windows 10 和 Windows 11 集成了 Arm 原生支持,这保证了为 Windows 开发更多 Arm 原生应用。这种支持提供了额外的工具,以简化应用移植、增强应用性能并降低功耗。因此,很多公司目前正在为 Windows 投资 Arm 原生应用。
此前,Arm 曾谈到 Windows on Arm 应用生态系统的良好发展势头,Google Chrome 就是一个很好的例子。与此同时,我们也想通过探索原生 Arm 支持为 Google Chrome 带来的诸多改进来进一步印证这一点。
适用于 Google Chrome 的 AArch64 支持
最新版本的 Google Chrome 增加了对 Windows 的原生 AArch64 支持,为用户带来诸多优势,包括:
- 提升性能:Arm 原生支持使 Google Chrome 网页浏览速度更快,效率更高,与模拟的 x86 版本相比,性能有了显著提高。
- 加快网页加载:得益于 Arm 原生支持对脚本、系统任务和渲染过程的优化,原本加载较慢的网站现在能够更快地完成加载。
- 增强的 JavaScript 执行:在 Arm 原生代码运行时,JavaScript 执行速度明显加快,增强了网页应用和交互元素的响应能力。
- 延长电池续航时间:Arm 原生代码的高能效使用户可以更长时间地使用设备,而无需频繁充电。
- 卓越的渲染速度:渲染时间大大缩短,使网页显示变得更快速、更顺畅。
模拟 x86 与 Arm 原生的性能对比
为了更清晰地展示这些优势,我们在 x86_64 架构的 Windows 系统上安装了 Google Chrome (版本号为 125.0.6422.61,官方版),下文简称“Win64”,并在 Windows on Arm 环境中通过模拟方式运行;同时,我们还在 AArch64 架构的 Windows 系统上安装了原生版本的 Chrome,下文简称“Arm64”。我们利用这两个版本的 Chrome 对一个热门新闻网站的性能进行了对比分析。
我们使用 Google Chrome 开发者工具中的“性能”选项卡,量化了加载和渲染速度。
- 模拟 x86 版本:网站加载耗时近 16 秒,其中脚本(4.4 秒)、系统任务(1.7 秒)和渲染(0.9 秒)花费了大量时间。
- Arm 原生版本:脚本时间减少至 1.5 秒(几乎缩短了三倍),系统任务时间减少至 0.4 秒(缩短 4.25 倍),渲染时间减少至 0.18 秒(缩短五倍),表明原生 Arm 执行大大提升了加载和渲染速度。
在其他新闻网站进行的性能测试也得出了类似结果。
Speedometer 3.0 基准测试
我们使用了 Speedometer 3.0 网页浏览器基准测试,来进一步印证 Arm 原生版 Google Chrome 的性能优势。这是一项开源基准测试,通过对不同工作负载下模拟的用户交互进行计时,用来测定网页应用的响应能力。
基准测试任务旨在反映实际网页用例情况,尽管部分细节与 Speedometer 相关,不应作为通用的应用开发实践。该基准测试由主流浏览器引擎(Blink、Gecko 和 WebKit)的团队创建,并得到了 Google、英特尔、微软和 Mozilla 等公司的大力支持。
图:模拟 x86 版 Google Chrome 的
Speedometer 3.0 基准测试结果
图:Arm 原生版 Google Chrome 的
Speedometer 3.0 基准测试结果
在模拟 x86 和 Arm 原生版 Google Chrome 上运行 Speedometer 3.0 基准测试后(在 Windows Dev Kit 2023 上测试),发现 Arm 原生支持显著增强了网页应用的响应能力。上图显示了 Arm 原生性能得分比模拟 x86 高出三倍多。这进一步凸显了 Windows on Arm 上原生 Arm 应用的出色效率和性能。
用 TensorFlow.js 和 MobileNet 运行推理
TensorFlow.js 是 Google 广受好评的 TensorFlow 库的 JavaScript 实现。它允许开发者在构建交互性强、动态性高的浏览器应用时,运用人工智能 (AI) 和机器学习 (ML) 技术。通过 TensorFlow.js,用户可以直接在客户端环境中训练和部署 AI 模型,轻松实现实时数据处理和分析,无需大量的服务器端计算。
MobileNet 是一类专为移动端和嵌入式视觉应用设计的高效架构,凭借其轻量级设计脱颖而出,能够在计算能力和内存资源有限的设备上实现快速高效的性能。
在使用 TensorFlow 的 Python 应用中,使用 MobileNet 非常简洁明了:
Python:
model = MobileNet(weights='imagenet')
接着,就可以对输入的图像进行预测 (predictions):
predictions = model.predict(input_image)
请参阅教程以获得更好的训练和推理示例。
教程:https://www.tensorflow.org/tutorials/keras/classification
然后这些预测结果可以转换为实际标签,比如:
print('Predicted:', decode_predictions(predictions, top=3)[0])
这里的 decode_predictions
是一个假设函数,它的作用是将模型分数(概率)转换为描述图像内容的标签。
TensorFlow.js 提供了类似的接口,你可以这样加载 MobileNet 模型:
model_tfjs = awaittf.loadGraphModel(MOBILENET_MODEL_PATH)
等图像预处理完,就可以进行预测了:
predictions = model_tfjs.predict(image)
然后,把这些预测结果转换为标签或类别:
labels = await getTopKClasses(predictions, 3)
如需更好的网页应用示例,请参阅此示例。
(示例:https://github.com/tensorflow/tfjs-examples/tree/master/mobilenet)
我们在模拟 x86 Chrome 网页浏览器和 Arm 原生版 Chrome 中运行了上述网页应用。如需下载适用于 Windows 的 Arm 原生版 Chrome,可访问
https://www.google.com/intl/en/chrome/canary/?platform=arm64
下图演示了在 Chrome 网页浏览器中运行的网页应用。该应用的用户界面包含三个核心元素:描述部分、状态指示器和模型输出显示。描述部分介绍了应用是如何创建的。上传图像后,应用立即开始运行,状态组件会实时更新,以显示计算时间。图像处理完成后,模型输出会显示识别出的标签及其相应的分数。
图:AArch64 版 Google Chrome 网页浏览器
在 TensorFlow.js 应用中表现出了更好的性能
在模拟 x86 Chrome 上,包括图像预处理和 AI 推理在内的总处理时间接近 100 毫秒。而在 Arm 原生版 Google Chrome 上,同样的操作仅花费 35 毫秒(大约为前者的 33%)。由于使用了相同的图像作为输入,因此推理结果(识别的标签和分数)是相同的。
提升真实性能,满足实际需求
在 Google Chrome 的 Windows 版本中集成原生 Arm 支持,可大大提升性能,使网页浏览速度更快、效率更高、响应能力更强。这些改进在一般的网页浏览和特定应用(如包含 MobileNet 的 TensorFlow.js)中都很显著,凸显了 Arm 原生支持在更广泛的计算领域日益增长的重要性。随着更多公司投资适用于 Windows 的 Arm 原生应用,用户可以期待在各类设备和应用上效率和性能的持续提升。
Arm 致力于推动创新,提供前沿技术,赋能开发者并提升用户体验。Arm 原生支持在 Google Chrome 中的成功应用彰显了 Arm 架构在塑造未来计算方面的革新潜力。
若你有兴趣学习如何将应用迁移到 Arm 平台上,欢迎访问 Arm Developer Hub 中的丰富教育资源。
链接:https://www.arm.com/developer-hub/laptops-and-desktops
END
作者:Arm 开发者大使 Dawid Borycki
文章来源:Arm社区
推荐阅读
- 探索 Arm 分核、锁步与混合模式:汽车安全用例解析
- ExecuTorch 测试版上线,加速 Arm 平台边缘侧生成式 AI 发展
- Arm Neoverse N2 平台上利用 Arm Kleidi 技术实现自动语音识别卓越性价比
- 使用移动端神经网络实现实时弱光视频增强
欢迎大家点赞留言,更多Arm技术文章动态请关注极术社区Arm技术专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。