文章推薦語:「在剛剛結束的 2020 年,有幸參與到了一次 AWS 的社區活動中,在此次活動上第一次聽到了宇博的分享《雲計算,開源與社區》,帶給了我很是多的思考和啓發,在活動結束後我就邀請宇博能不能寫一篇文章跟社區的開發者分享一下 AWS 與開源相關的一些內容,宇博在百忙之中寫了以下的文章,這篇文章對於開發者瞭解 AWS 參與開源以及最新的產品中用到了哪些開源技術會有很大的幫助。也歡迎社區的開發者,一塊兒多參與到 AWS 和思否的社區活動中,一塊兒交流分享雲計算與開源技術。」— SegmentFault 思否 CEO 高陽。
圖拍攝於 AWS Community Day Shanghai 2020 git
本文做者:王宇博github
做者簡介:王宇博是 AWS 資深開發者佈道師,負責 AWS 技術與產品在開發者中的佈道與推廣。此前曾擔任 AWS 高級產品經理多年,負責 AWS 計算、數據和人工智能相關產品和解決方案的業務拓展。在加入 AWS 以前,他曾在多家跨國企業擔任產品、技術和管理等崗位,具備近 15 年的 IT 行業的經驗和實踐;在計算機視覺、模式識別和機器學習等領域也有多年的科研工做經歷。
從 2006 年提供第一個雲服務開始,AWS 一直是開源社區的重要參與者
和支持者,貢獻涵蓋代碼、運營、基礎等諸多方面。除了構建的 2500 多個 GitHub 存儲庫以外,咱們還參與了數千個第三方開源項目,並培育起數十萬人的開源社區。算法
圖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 等,幫助他們構建和優化雲服務。數據庫
圖2: AWS參與的一些開源項目apache
圖3: AWS發起的一些開源項目編程
在剛剛結束的 AWS re:Invent 2020 中,在衆多的新發布中,又有一系列關於開源和社區的新貢獻。在這裏咱們集中從開發者更爲關心的 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 爲開發者提供了跨本地和雲的相同的使用和運營體驗。
圖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 來查看其工做原理。
圖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。
圖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 中國開發者社區中一塊兒進行更普遍和更深刻的交流。