关于人工智能:燃烧吧开发者们一起在云端构建开放成熟的-ARM-生态

3次阅读

共计 4448 个字符,预计需要花费 12 分钟才能阅读完成。

充斥在各种工作、生存场景中的智能手机、平板、IoT 设施、智能家电、智能机械等电子设备,对绝大多数人来说并不生疏,而这些设施背地的根底支撑力之一——ARM 架构芯片,其性能和功耗的劣势也在逐步降级,向传统台式机、笔记本甚至是服务器这类 x86 架构处理器的“主场”蔓延。

作为利用开发者,你有没有想过基于 ARM 架构打造全新利用,并通过云平台为用户提供更翻新的服务?亚马逊云科技(Amazon Web Services)来挺你!

Graviton 更高性价比的工作负载工具

Graviton 是由亚马逊云科技应用 64 位 ARM Neoverse 内核定制的芯片,为在 Amazon Elastic Compute Cloud (Amazon EC2) 中运行的云工作负载提供更高的性价比。

在 Graviton 之前,X86 曾是亚马逊云科技中的惟一抉择。不过在 re:Invent 2018 上,亚马逊云科技公布了第一款由 Graviton 反对的实例:Amazon EC2 A1 实例系列。这些实例针对老本和性能进行了优化,并专门为许多古代云架构中常见的工作负载而构建。

随着 A1 实例系列和第一代 Graviton 处理器的胜利,越来越多开发者心愿扩大 Graviton 的工作负载及适用范围。一年后的 re:Invent 2019,亚马逊云科技公布了 Graviton2 处理器,性能更弱小。Graviton2 采纳 Arm Neoverse N1 内核,兼容 ARM v8.2 指令集,采纳 7nm 制程。与第一代 Graviton 处理器相比,Graviton2 处理器不管在性能和性能上都实现了微小飞跃。基于 Graviton2 的 Amazon EC2 T4g、M6g、C6g 和 R6g 实例,为各种工作负载提供高达 40% 的性价比晋升。Graviton2 处理器也为视频编码工作负载提供加强的性能,为压缩工作负载提供硬件加速,并为基于 CPU 的机器学习推理提供反对。

构建 ARM 生态,提供更卓越的托管云服务反对

家喻户晓,ARM 架构有着世界上最大的计算生态系统。基于 ARM 受权的芯片出货量已达 1800 亿颗(截至 2020 年第 4 季度),大量 ARM 设施在挪动和嵌入式市场中失去应用。

ARM 生态系统在挪动和嵌入式方面始终很弱小。从 ARM 架构倒退历程来看,通过社区建设加强用户认知度,打造成熟的生态系统是其取得成功的关键因素。在云计算畛域,尽管 Graviton2 的性价比劣势微小,但云原生的开发者对 ARM 架构还略显生疏。而对于开发者群体来说,生态系统构建至关重要。

随着 Graviton 和 Graviton2 处理器的相继公布,亚马逊云科技也在与社区严密单干,为开发者在云端构建凋谢成熟的 ARM 生态系统。这意味着 Graviton2 不仅能够迅速为 Amazon EC2 实例提供能源,构建一系列的开源和商业利用,还可为更多的托管云服务提供反对。

优化操作系统,推动 ARM 架构反对

在生态系统中,操作系统的作用与影响至关重要。亚马逊云科技与操作系统生态中的合作伙伴们放弃密切合作,推动对 64 位 ARM(arm64)架构的反对。一方面,开源社区中的操作系统对 ARM 的反对曾经很广泛;另一方面,亚马逊云科技也在继续助力合作伙伴优先安顿对 ARM 的反对。

目前大多数支流 Linux 发行版都反对 Graviton 和 Graviton2 的 ” 开箱即用 ”,包含 Amazon Linux 2、Ubuntu、SUSE Linux 企业服务器和红帽企业 Linux。

依靠 Graviton 部署容器,反对更多架构

容器是云原生古代利用开发的外围基础设施。在容器畛域,Graviton 和 Graviton2 处理器通过优化,是基于容器工作负载的现实抉择。利用基于 Graviton 的实例作为容器主机,须要确保容器运行的软件依赖项反对 arm64 架构。

目前,容器生态系统通常都会反对 x86_64 和 arm64 两种架构,并且能够通过多架构(multi-arch)映像通明地实现。应用多架构会主动为容器主机部署正确的映像。支流的容器映像存储库,包含 Dockerhub、Quay 和 Amazon Elastic Container Registry(Amazon ECR),都反对多架构映像。

除了大多数映像曾经反对多架构外,开发者也能够便捷创立多架构映像。Docker 19.03 通过引入 Buildx 插件,扩大了 docker build 命令,能够不便的构建多架构的 Docker 映像。

对于容器部署来说,大多数容器编排平台也都同时反对 x86_64 和 arm64。亚马逊云科技的容器服务及一些新开源我的项目(如 Firecraker 和 Bottlerocket)也都能够在 Graviton 2 上运行。在丰盛的开源容器生态系统中,包含 Istio、Envoy、Flannel、Helm、Prometheus、Terraform、Grafana、core-dns、containerd、CNI 等都已反对 Graviton 和 Graviton2。

借助 Graviton,改善机器学习推理效率

机器学习是云平台的重要工作负载之一,而云计算也在一直推动机器学习的提高。Graviton2 通过反对 fp16 和 int8 指令集以减速机器学习的推理效率。在一项基于 CPU 上的 TVM 进行的 BERT 分类性能比拟中发现,基于 Graviton2 的 M6g 实例比基于 Intel Xeon 的 M5 实例的推理效率晋升 28%。

而在机器学习的应用过程中,框架是大部分开发者都会用到的工具。Graviton2 可能良好的运行包含 TensorFlow 和 PyTorch 在内的支流框架。目前在 Gravition2 上应用 TensorFlow 须要进行简略的编译。在装置 bazel 编译工具之后,就能够配置、编译并且应用 TensorFlow。(左滑即可查阅所有代码~)

git clone https://github.com/tensorflow/tensorflow $HOME/tensorflow
cd $HOME/tensorflow
./configure
bazel build //tensorflow/tools/pip_package:build_pip_package

在 Gravition2 上应用 PyTorch 则更为简略。在 PyTorch 1.8 预览版中,PyTorch wheels 的 Nightly CPU builds 就曾经能够反对 Gravition2 (arm64),装置即可应用。

pip install --pre torch torchvision  -f https://download.pytorch.org/whl/nightly/cpu/torch_nightly.html

联合 Graviton 翻新开源软件,推动云端 ARM 生态系统减速倒退

不仅容器和机器学习,开源社区及其带来的翻新对于 Graviton 生态系统的继续胜利至关重要。开源软件曾经遍布到技术的各个领域,从各种的开发工具到不同的利用前沿。亚马逊云科技都在和开源社区严密合作,一起推动云端 ARM 生态系统的独特倒退。

集成亚马逊云服务,打造更凋谢的 ARM 生态系统

以后,越来越多的亚马逊云科技的服务曾经与 ARM 集成,包含 Systems Manager、Batch、Cloud9 IDE 和 DevOps 服务。此外还有泛滥反对 Graviton 的工具、软件和服务。大多数亚马逊云科技工具和 SDK 都通明地反对 Graviton2,包含 Amazon Command Line Interface (Amazon CLI) v1、Amazon CLI v2、Amazon CloudWatch agent、SSM agent 以及 Amazon SDK for 面向 C /C++、node.js、Python、Go、Java、.NET 的 Amazon SDK 等。

Graviton2 还在为越来越多的亚马逊云科技的数据与剖析托管服务赋能。这些服务大多是基于开源我的项目构建。Graviton2 帮忙应用 Redis 和 Memcached 的 ElastiCache 服务性价比进步了 45%,且 Graviton2 实例曾经成为 ElasticCache 的默认选项。对于开源数据库如 MySQL,PostgreSQL 在云端的托管服务,依据数据库引擎、版本和工作负载的不同,Graviton2 实例能够提供高达 52% 的性价比晋升。对于托管的 Hadoop 生态系统的 EMR 服务,在 Graviton2 实例的 Spark 工作负载能够取得高达 15% 的性能改良和 30% 的老本升高。



arm64 生态系统曾经取得了泛滥语言、工具包和运行时的反对,使得开发者在 Graviton2 上的开发和迁徙变得简略便捷。基于解释性语言(包含 Python、Java、Ruby 等)的利用无需批改即可在 Graviton2 上运行;基于编译性语言的利用则须要为 arm64 从新编译。所有支流编译器都反对 arm64,包含 C、C++、Go 以及最近十分风行的 Rust。

举例来说,应用 gcc 和 LLVM 在 Graviton2 上启用 ARM 架构特定的性能,能够通过 **-m****arch=armv8.2-a+fp16+rcpc+dotprod+crypto** 实现,应用 **-mtune=neoverse-n1** 能够进行为 Graviton2 内核优化的编译。ARM 软件生态系统十分沉闷,每天都会产生大量的改良。一般来说,只有有可能,就应该应用更高版本的编译器和语言运行时。

向 Graviton2 迁徙的门路和形式也十分成熟,通常分为辨认,测试和部署三个阶段:

  1. 首先要确定生产环境中的所有库和依赖项,同时查找现有的 arm64 二进制文件或与架构无关的源代码,并进行必要的代码批改和编译。
  2. 其次是测试,所有测试都应反对多体系结构。在测试阶段可能须要编写新的测试,之后还须要执行通常的单元测试,验收测试和上线前测试等。
  3. 在最初的部署阶段,可利用 CloudFormation 或 CDK 之类的工具更新 IaaC 资源,将利用部署到 arm64 实例。通过蓝绿部署和 CI/CD 工具在现有利用堆栈旁边创立新的 arm64 利用堆栈,而后利用加权路由将一小部分申请发送到新堆栈,以监督错误率、用户行为、负载和其余关键因素,确定生产中移植利用的运行状况。

亚马逊云科技通过继续推动云与 ARM 和社区的交融,在为开发者构建起一整套云端凋谢成熟的 ARM 生态系统的同时,进一步实现降本增效。另外,在亚马逊云科技的寰球区域,截至 2021 年 6 月 30 日,所有 AWS 的新老客户都能够收费试用 t4g. 微型实例,每月最多 750 小时。在收费试用期内,运行 t4g. 微型实例的客户在 2021 年 6 月之前每月将主动从其每月账单中扣除 750 个收费小时。无关更多详情,请参阅【如下二维码】

如果您对以上内容感兴趣,无妨立即行动,让 ARM 架构利用生态就此发展壮大,为将来的利用翻新奠定全新的根底!

作者介绍

王宇博

亚马逊云科技资深开发者布道师

负责亚马逊云科技的技术与产品在开发者中的布道与推广。此前曾负责亚马逊云科技高级产品经理多年,负责亚马逊云科技的计算、数据和人工智能相干产品和解决方案的业务拓展。

正文完
 0