从 re:Invent 看 AWS 对开源和社区的新贡献

文章推荐语:“在刚刚结束的 2020 年,有幸参与到了一次 AWS 的社区活动中,在此次活动上第一次听到了宇博的分享《云计算,开源与社区》,带给了我很是多的思考和启发,在活动结束后我就邀请宇博能不能写一篇文章跟社区的开发者分享一下 AWS 与开源相关的一些内容,宇博在百忙之中写了以下的文章,这篇文章对于开发者了解 AWS 参与开源以及最新的产品中用到了哪些开源技术会有很大的帮助。也欢迎社区的开发者,一块儿多参与到 AWS 和思否的社区活动中,一块儿交流分享云计算与开源技术。”— SegmentFault 思否 CEO 高阳。

image
图拍摄于 AWS Community Day Shanghai 2020 git

本文做者:王宇博github

做者简介:王宇博是 AWS 资深开发者布道师,负责 AWS 技术与产品在开发者中的布道与推广。此前曾担任 AWS 高级产品经理多年,负责 AWS 计算、数据和人工智能相关产品和解决方案的业务拓展。在加入 AWS 以前,他曾在多家跨国企业担任产品、技术和管理等岗位,具备近 15 年的 IT 行业的经验和实践;在计算机视觉、模式识别和机器学习等领域也有多年的科研工做经历。

从 re:Invent 看 AWS 对开源和社区的新贡献

从 2006 年提供第一个云服务开始,AWS 一直是开源社区的重要参与者
和支持者,贡献涵盖代码、运营、基础等诸多方面。除了构建的 2500 多个 GitHub 存储库以外,咱们还参与了数千个第三方开源项目,并培育起数十万人的开源社区。算法

AWS 对开源的贡献逐年增长
图1: AWS 对开源的贡献逐年增长sql

AWS 做为一家云计算厂商,在开源领域采起了更佳平衡和务实的方法,吸引众多员工、客户和合做伙伴参与和贡献到开源项目。咱们在开源领域的驱动力来自于最终用户,聚焦于为开发者提供更好的工具。当咱们发布基于开源项目的云服务时,咱们会作出长期承诺以支持咱们的客户,向开源项目提供了错误修复,安全性,可伸缩性,性能和功能加强而且采用“上游优先”的策略,使得咱们在 Linux,Xen,Kubernetes,Redis,Rust,Redis,GraphQL,ROS 等社区中赢得了领导地位。与此同时,咱们还表明客户进行创新,并还发起了众多开源项目,例如 Apache MXNet, FireCracker,Bottlerocket,PartiQL,Amazon Corretto,Open Distro for ElasticSearch,AWS Distro for Open Telemetry 等,让开发者更容易的从专有技术转移到开源技术并做出贡献。另外,咱们也积极参与到客户发起的开源项目中,好比 Netflix的Spinnaker 等。咱们也持续与一些领先的开源 ISV 合做,包括 MongoDB、Databricks 和 Redis Labs 等,帮助他们构建和优化云服务。数据库

AWS参与的一些开源项目
图2: AWS参与的一些开源项目apache

AWS发起的一些开源项目
图3: AWS发起的一些开源项目编程

在刚刚结束的 AWS re:Invent 2020 中,在众多的新发布中,又有一系列关于开源和社区的新贡献。在这里咱们集中从开发者更为关心的 DevOps,数据与分析,和机器学习与边缘计算等三个方面来给你们作一下介绍。安全

首先咱们来看一下 DevOps。

谈到 DevOps,咱们首先就会想到容器和 Kubernetes,它们成为了 DevOps 工具落地的新一代基础架构。Amazon Elastic Kubernetes Service (EKS) 为众多开发者提供了操做安全、稳定可靠的托管Kubernetes云服务,可是也有不少开发者因为各类缘由只能在本地运营 Kubernetes。为了一样帮助这些开发者不把精力耗费在管理 Kubernetes 基础架构的大量繁重工做,咱们发布了开源的 Amazon EKS Distro。它是Amazon EKS 所使用的 Kubernetes 发行版,能够帮助您在任何地方手动运行 Kubernetes 集群,包括 Amazon EC2 上、其余云中以及本地硬件。EKS Distro 包括上游开源 Kubernetes 组件和第三方工具,包括建立集群所需的配置数据库、网络和存储组件,其中有Kubernetes 控制平面组件(kube-controller-manager、etcd 和 CoreDNS)和 Kubernetes 工做节点组件(kubelet、CNI 插件、CSI Sidecar 映像、Metrics Server 及 AWS-IAM-authenticator)等。服务器

同时,咱们也提供了一个全新的 Kubernetes 部署选项 Amazon EKS Anywhere。Amazon EKS Anywhere 基于 Amazon EKS Distro 建立集群,可让您在本地轻松建立及操做 Kubernetes 集群,包括在您本身的虚拟机和裸机服务器上。EKS Anywhere 提供可在本地建立和操做 Kubernetes 集群的可安装软件包,并提供用于集群生命周期支持的自动化工具。babel

有了这两个全新发布,能够说在 Kubernetes 领域,AWS 为开发者提供了跨本地和云的相同的使用和运营体验。

Kubernetes跨本地和云的相同运营体验
图4: Kubernetes跨本地和云的相同运营体验

持续的可观测性是 DevOps 流水线的关键组件,可观测性三大支柱包括跟踪、日志记录和指标,而这些须要做为一套统一的集成工具,使每位开发者都能在一个地方查看全部观测数据。在 re:Invent 2020 中,AWS 全新推出了三种开源解决方案,以便在云中集成更好的可观测性。首先是 AWS Distro for OpenTelemetry,它是一个安全、生产就绪、由 AWS 支持的 OpenTelemetry 项目发行版,可用于在 EC二、Lambda 和 AWS 容器服务上运行的应用以及本地应用,将相关指标和跟踪发送到多个云原生和开源监控组件。其次是 Amazon Managed Service for Prometheus (AMP) 。Prometheus 是一种流行的开源监控和警报解决方案,针对容器环境进行了优化。尽管在 AWS 上部署单个 Prometheus 服务器很容易,但可能须要长达数周的手动工做才能跨多台服务器进行扩展,并配置环境以得到高可用性。须要更多容量的客户必须部署其余开源项目,如 Thanos 和 Cortex,并投入更多工程工做来优化内存和存储等资源,以控制成本和优化查询从新响应时间。借助 AMP 托管服务,您可使用与开源 Prometheus 相同的数据模型和查询语言来监视容器化工做负载的性能,并得到改进的可扩展性、可用性和安全性,而无需管理底层基础架构。再次是 Amazon Managed Service for Grafana (AMG)。AMG 基于开源的 Grafana 项目,是一项彻底托管的服务,具备丰富的交互式数据可视化,可帮助客户分析,监视多个数据源中的指标,日志和跟踪并对其发出警报。 您能够建立交互式仪表板,并使用自动缩放,高度可用且企业级安全的服务。至此,AWS 已经在其云服务中提供了完备的云原生和开源持续观测解决方案,为开发者构建DevOps 提供了更多的选择。

云原生和开源持续观测解决方案
图5: 云原生和开源持续观测解决方案

接下来,咱们再来看一下数据与分析。

在数据库领域,PostgreSQL 一直是开发者的热门选择。许多开发者喜欢PostgreSQL 的一个缘由是它是彻底由社区驱动的。可是向PostgreSQL迁移却不容易,由于数据库迁移的最大阻碍实际上是惯性。不管出于何种缘由想要迁移到 PostgreSQL,开发者都但愿有一种更简单的方法来实现。基于此,AWS 在 re:Invent 2020 中发布了开源的 Babelfish for PostgreSQL。Babelfish 是 PostgreSQL 的 Microsoft SQL Server 兼容端点,以使 PostgreSQL 可以熟练地理解 SQL Server 应用的数据库请求,包括理解 T-SQL 和 TDS 通讯协议。使用 Babelfish,几乎没有代码更改,也不须要更改数据库驱动,就能够帮助更多的开发者向 PostgreSQL 进行方便的迁移。咱们将于 2021 年正式开源 Babelfish。在此以前,您能够在 Amazon Aurora 的预览版中使用 Babelfish 来查看其工做原理。

 Babelfish的工做原理
图6: Babelfish的工做原理

AWS Glue Elastic Views 是 AWS Glue 的一个新功能,使您能够轻松地构建物化视图,从而在多个数据存储中合并和复制数据,而无需编写自定义代码。Glue Elastic Views 使用了 AWS 的开源项目PartiQL,它在包含结构化,半结构化和嵌套数据的多个数据存储区中提供与SQL兼容的统一查询访问。 PartiQL 将查询的语法和语义与基础数据源和数据格式分开。 它使用户可使用或不使用常规模式与数据进行交互。 另外,在 Amazon DynamoDB 的新发布中,咱们也提供了使用 PartiQL 查询,插入,更新和删除表数据的支持。

Amazon Neptune ML 是图数据库 Neptune 的一个新功能,它使用图形神经网络(GNNs),进行简单、快速和更精确的预测。与使用非图形方法进行预测相比,使用 Neptune ML 能够将大多数图形预测的精度提升50%以上。在 Amazon Neptune ML 背后,使用的是 AWS 提供的开源库 Deep Graph Library,它是由 AWS 上海人工智能研究院主导开发的一个开源项目。

Apache Airflow 是构建批处理数据工做流的开源项目,用于管理日益复杂的数据管理工具、脚本和分析工具。Amazon Managed Workflows for Apache Airflows (MWAA) 是一项托管的 Apache Airflow 服务,使您无需再管理,配置和扩展 Airflow 环境,便可编排数据处理工做流,并经过 AWS 支持的日志和监控功能来管理其执行。 您能够在Amazon MWAA 上运行现有的 Airflow 工做流程,并使用 AWS 控制台,API 和命令行界面(CLI)以编程方式与其环境进行交互,同时花费更少的时间来管理基础架构和 Airflow 环境。

最后咱们再看一下机器学习与边缘计算。

深度学习中的图像分类和天然语言处理等应用场景对计算能力和数据集的要求愈来愈高,例如,2018 年发布的 BERT 使用了 3.4 亿个参数。如今,更先进模型如 T五、GPT-三、Turing-NLG 和 Megatron 已经创造了新的精度记录,但须要数百亿到数千亿的参数。若是手动实施数据和模型并行策略进行分布式训练,可能须要数周的实验,会减慢将新版本迭代部署到生产中的能力。在 re:Invent 2020 的发布中,AWS 在 Amazon SageMaker 中提供了全新的托管分布式训练,为训练大型模型和数据集提供了更快、更简单的方法。SageMaker 分布式训练使用分区算法,可在 AWS GPU 实例间自动拆分模型和训练数据集,实现了数据并行和模型并行两种技术。数据并行的分布式训练的使用相对较多,其中AllReduce 是一项关键操做,并有多种的开源实现,如 Horovod。在 SageMaker 分布式训练中,SageMaker Distributed Data Parallel (SDP) 托管实现了优化的 AllReduce;同时充分利用 AWS 的网络基础架构和Amazon EC2 实例拓扑来执行优化的节点到节点通讯,极大提高了分布式训练的性能。使用 p3dn.24xlarge 实例上的 二、4 和 8 个节点群集对 BERT 进行分布式训练, PyTorch-SDP 比 PyTorch-DDP 快41%,52% 和 13%;对 MaskRCNN 进行分布式训练,PyTorch-SDP比 PyTorch-DDP 快 4%,19% 和 15%。具体结果以下表所示,其训练代码位于 amazon-sagemaker-examples

SageMaker data parallelism vs. PyTorch DDP
图7: SageMaker data parallelism vs. PyTorch DDP

另外,愈来愈多的应用,如工业自动化、自动驾驶,须要运行在边缘设备上的机器学习模型,以便在新数据可用时实时进行预测。新发布的Amazon SageMaker Edge Manager 能够帮助开发人员优化、保护、监控和维护部署在边缘设备集群上的机器学习模型。模型部署到边缘设备之后,仍然须要管理和监控模型,确保它们持续以高精度运行。当模型的准确性随着时间的推移而降低时,开发人员能够从新训练模型,不断提升模型的质量。 SageMaker Edge Manager 使用 Amazon SageMaker Neo 针对不一样的硬件平台进行优化。其背后是开源的 Apache TVM 的编译器和开源的 Neo-AI 运行时,目前支持基于Ambarella,ARM,Intel,NVIDIA,NXP,Qualcomm,TI 和 Xilinx 制造的芯片的设备。

AWS 在 2016 年推出了AWS IoT Greengrass ,将 AWS IoT 扩展到边缘设备上。AWS Greengrass 有两个主要部分:IoT 边缘运行时和云服务。他们共同致力于为物联网设备提供本地计算,消息传递和数据管理功能。您可使用 Greengrass 在 IoT 设备上本地运行 Lambda 函数。启用 ML 推理;在设备之间发送消息;部署,运行和管理 Docker容器等。在 re:Invent 2020 上,AWS 全新推出了 IoT Greengrass 的 2.0 版,增长了新的开发人员功能,包括改进的命令行界面以及对添加和删除预建组件的支 IoT Greengrass 2.0 版的边缘运行时已开源。

以上是在 re:Invent 2020 中与开源相关主要发布的概览。咱们相信开源会为每位开发者带来好处,并致力于将开源的价值带给咱们的客户,将云端卓越运营带给开源社区。固然,健康的社区对于开发者使用开源也很是重要。所以,咱们不断寻求以各类不一样方式增长对开源社区的支持,并加入了众多开源基金会。做为基金会的一部分,咱们能够参与开源项目战略方向的设计与讨论,以帮助确保这些项目继续按照客户对咱们的指望发展。同时在过去的几年时间,咱们一直在各类开源会议上发言,来分享咱们的开源知识和经验。

AWS加入的一些开源基金会
图8: AWS加入的一些开源基金会

AWS 为开发者与社区提供了广阔的舞台。AWS Heroes 项目构建起一个充满活力的,世界范围内的 AWS 专家小组,他们对知识共享的热情在社区内产生了真正的影响。目前在中国内地已经有 5 位 AWS Hero。AWS Community Builders 项目为热衷于分享知识和与技术社区互动的AWS爱好者和新兴思想领袖提供技术资源,指导和交流的机会。咱们也但愿更多的开发者加入到 AWS 中国开发者社区中一块儿进行更普遍和更深刻的交流。

image.png

相关文章
相关标签/搜索