写点什么

燃烧吧!开发者们,一起在云端构建开放成熟的 ARM 生态!

发布于: 2021 年 03 月 16 日
燃烧吧!开发者们,一起在云端构建开放成熟的 ARM 生态!

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


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

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

在 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 架构发展历程来看,通过社区建设增强用户认知度,打造成熟的生态系统是其取得成功的关键因素。在云计算领域,虽然 Graviton2 的性价比优势巨大,但云原生的开发者对 ARM 架构还略显陌生。而对于开发者群体来说,生态系统构建至关重要。


随着 Graviton 和 Graviton2 处理器的相继发布,亚马逊云科技也在与社区紧密合作,为开发者在云端构建开放成熟的 ARM 生态系统。这意味着 Graviton2 不仅可以迅速为 Amazon EC2 实例提供动力,构建一系列的开源和商业应用,还可为更多的托管云服务提供支持。

优化操作系统,推动 ARM 架构支持

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


依托 Graviton 部署容器,支持更多架构

目前,容器生态系统通常都会支持 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/tensorflowcd $HOME/tensorflow./configurebazel 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 架构特定的功能,可以通过-march=armv8.2-a+fp16+rcpc+dotprod+crypto 实现,使用-mtune=neoverse-n1 可以进行为 Graviton2 内核优化的编译。ARM 软件生态系统非常活跃,每天都会产生大量的改进。一般来说,只要有可能,就应该使用更高版本的编译器和语言运行时。


向 Graviton2 迁移的路径和方式也非常成熟,通常分为识别,测试和部署三个阶段:


首先要确定生产环境中的所有库和依赖项,同时查找现有的 arm64 二进制文件或与架构无关的源代码,并进行必要的代码修改和编译。


其次是测试,所有测试都应支持多体系结构。在测试阶段可能需要编写新的测试,之后还需要执行通常的单元测试,验收测试和上线前测试等。


在最后的部署阶段,可利用 CloudFormation 或 CDK 之类的工具更新 IaaC 资源,将应用部署到 arm64 实例。通过蓝绿部署和 CI/CD 工具在现有应用堆栈旁边创建新的 arm64 应用堆栈,然后利用加权路由将一小部分请求发送到新堆栈,以监视错误率、用户行为、负载和其他关键因素,确定生产中移植应用的运行状况。


亚马逊云科技通过持续推动云与 ARM 和社区的融合,在为开发者构建起一整套云端开放成熟的 ARM 生态系统的同时,进一步实现降本增效。另外,在亚马逊云科技的全球区域,截至 2021 年 3 月 31 日,所有新老客户都可以免费试用基于 Graviton2 的 t4g.micro 实例,每月最多 750 小时。


如果您对以上内容感兴趣,不妨立即行动,让 ARM 架构应用生态就此发展壮大,为未来的应用创新奠定全新的基础!


作者介绍

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


原文链接:燃烧吧!开发者们,一起在云端构建开放成熟的 ARM 生态!


用户头像

还未添加个人签名 2019.09.17 加入

还未添加个人简介

评论

发布
暂无评论
燃烧吧!开发者们,一起在云端构建开放成熟的 ARM 生态!