文章举荐语:“在刚刚完结的 2020 年,有幸参加到了一次 AWS 的社区活动中,在这次流动上第一次听到了宇博的分享《云计算,开源与社区》,带给了我十分多的思考和启发,在流动完结后我就邀请宇博能不能写一篇文章跟社区的开发者分享一下 AWS 与开源相干的一些内容,宇博在百忙之中写了如下的文章,这篇文章对于开发者理解 AWS 参加开源以及最新的产品中用到了哪些开源技术会有很大的帮忙。也欢送社区的开发者,一起多参加到 AWS 和思否的社区活动中,一起交换分享云计算与开源技术。”— SegmentFault 思否 CEO 高阳。
图拍摄于 AWS Community Day Shanghai 2020
本文作者:王宇博
作者简介:王宇博是 AWS 资深开发者布道师,负责 AWS 技术与产品在开发者中的布道与推广。此前曾负责 AWS 高级产品经理多年,负责 AWS 计算、数据和人工智能相干产品和解决方案的业务拓展。在退出 AWS 之前,他曾在多家跨国企业负责产品、技术和治理等岗位,具备近 15 年的 IT 行业的教训和实际;在计算机视觉、模式识别和机器学习等畛域也有多年的科研工作经验。
从 re:Invent 看 AWS 对开源和社区的新奉献
从 2006 年提供第一个云服务开始,AWS 始终是开源社区的重要参与者
和支持者,奉献涵盖代码、经营、根底等诸多方面。除了构建的 2500 多个 GitHub 存储库之外,咱们还参加了数千个第三方开源我的项目,并培养起数十万人的开源社区。
图 1: AWS 对开源的奉献逐年减少
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 等,帮忙他们构建和优化云服务。
图 2: 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 集群的可装置软件包,并提供用于集群生命周期反对的自动化工具。
有了这两个全新公布,能够说在 Kubernetes 畛域,AWS 为开发者提供了跨本地和云的雷同的应用和经营体验。
图 4: Kubernetes 跨本地和云的雷同经营体验
继续的可观测性是 DevOps 流水线的要害组件,可观测性三大支柱包含跟踪、日志记录和指标,而这些须要作为一套对立的集成工具,使每位开发者都能在一个中央查看所有观测数据。在 re:Invent 2020 中,AWS 全新推出了三种开源解决方案,以便在云中集成更好的可观测性。首先是 AWS Distro for OpenTelemetry,它是一个平安、生产就绪、由 AWS 反对的 OpenTelemetry 我的项目发行版,可用于在 EC2、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 来查看其工作原理。
图 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 亿个参数。当初,更先进模型如 T5、GPT-3、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 实例上的 2、4 和 8 个节点群集对 BERT 进行分布式训练,PyTorch-SDP 比 PyTorch-DDP 快 41%,52% 和 13%; 对 MaskRCNN 进行分布式训练,PyTorch-SDP 比 PyTorch-DDP 快 4%,19% 和 15%。具体后果如下表所示,其训练代码位于 amazon-sagemaker-examples。
图 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 中与开源相干次要公布的概览。咱们置信开源会为每位开发者带来益处,并致力于将开源的价值带给咱们的客户,将云端卓越经营带给开源社区 。当然,衰弱的社区对于开发者应用开源也十分重要。因而,咱们 一直寻求以各种不同形式减少对开源社区的反对,并退出了泛滥开源基金会。作为基金会的一部分,咱们能够参加开源我的项目策略方向的设计与探讨,以帮忙确保这些我的项目持续依照客户对咱们的冀望倒退。同时在过来的几年工夫,咱们始终在各种开源会议上发言,来分享咱们的开源常识和教训。
图 8: AWS 退出的一些开源基金会
AWS 为开发者与社区提供了广大的舞台。AWS Heroes 我的项目构建起一个充满活力的,世界范畴内的 AWS 专家小组,他们对常识共享的激情在社区内产生了真正的影响。目前在中国边疆曾经有 5 位 AWS Hero。AWS Community Builders 我的项目为热衷于分享常识和与技术社区互动的 AWS 爱好者和新兴思维首领提供技术资源,领导和交换的机会。咱们也心愿更多的开发者退出到 AWS 中国开发者社区中一起进行更宽泛和更深刻的交换。