從 re:Invent 看 AWS 對開源和社群的新貢獻

思否編輯部發表於2021-01-05
文章推薦語:“在剛剛結束的 2020 年,有幸參與到了一次 AWS 的社群活動中,在這次活動上第一次聽到了宇博的分享《雲端計算,開源與社群》,帶給了我非常多的思考和啟發,在活動結束後我就邀請宇博能不能寫一篇文章跟社群的開發者分享一下 AWS 與開源相關的一些內容,宇博在百忙之中寫了如下的文章,這篇文章對於開發者瞭解 AWS 參與開源以及最新的產品中用到了哪些開源技術會有很大的幫助。也歡迎社群的開發者,一起多參與到 AWS 和思否的社群活動中,一起交流分享雲端計算與開源技術。”— SegmentFault 思否 CEO 高陽。

image
圖拍攝於 AWS Community Day Shanghai 2020

本文作者:王宇博

作者簡介:王宇博是 AWS 資深開發者佈道師,負責 AWS 技術與產品在開發者中的佈道與推廣。此前曾擔任 AWS 高階產品經理多年,負責 AWS 計算、資料和人工智慧相關產品和解決方案的業務擴充。在加入 AWS 之前,他曾在多家跨國企業擔任產品、技術和管理等崗位,具有近 15 年的 IT 行業的經驗和實踐;在計算機視覺、模式識別和機器學習等領域也有多年的科研工作經歷。

從 re:Invent 看 AWS 對開源和社群的新貢獻

從 2006 年提供第一個雲服務開始,AWS 一直是開源社群的重要參與者
和支持者,貢獻涵蓋程式碼、運營、基礎等諸多方面。除了構建的 2500 多個 GitHub 儲存庫之外,我們還參與了數千個第三方開源專案,並培育起數十萬人的開源社群。

AWS 對開源的貢獻逐年增加
圖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 等,幫助他們構建和優化雲服務。

AWS參與的一些開源專案
圖2: AWS參與的一些開源專案

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 為開發者提供了跨本地和雲的相同的使用和運營體驗。

Kubernetes跨本地和雲的相同運營體驗
圖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 來檢視其工作原理。

 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

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

相關文章