公司 OpenAI 地點 美國加利福尼亞州舊金山 產業 人工智慧研究

挑戰

人工智慧研究實驗室 OpenAI 需要深度學習基礎設施,使其能夠在雲端或自有資料中心執行實驗,並輕鬆擴展。可攜性、速度和成本是主要驅動因素。

解決方案

OpenAI 在 2016 年開始在 AWS 上運行 Kubernetes,並在 2017 年初遷移到 Azure。OpenAI 在 Azure 和自有資料中心運行機器人技術和遊戲等領域的關鍵實驗,具體取決於哪個叢集有空閒容量。「我們主要將 Kubernetes 用作批次排程系統,並依賴我們的 自動擴展器 來動態擴展和縮減我們的叢集。」基礎設施主管 Christopher Berner 說。「這讓我們能夠顯著降低閒置節點的成本,同時仍然提供低延遲和快速迭代。」

影響

該公司已從更高的可攜性中受益:「由於 Kubernetes 提供了一致的 API,我們可以非常輕鬆地在叢集之間移動我們的研究實驗。」Berner 說。能夠在適當時使用自有資料中心「降低了成本,並讓我們能夠存取我們不一定能在雲端存取的硬體。」他補充說。「只要利用率高,那裡的成本就會低得多。」啟動實驗也花費更少的時間:「我們一位正在開發新的分散式訓練系統的研究人員已經能夠在兩三天內讓他的實驗開始運行。在一兩週內,他將其擴展到數百個 GPU。以前,這很容易需要幾個月的工作。」

從機器人技術實驗到懷舊電玩遊戲研究,OpenAI 在人工智慧技術方面的工作旨在分享。

OpenAI 的使命是確保強大的人工智慧系統是安全的,因此非常重視開源——既從中受益,又將安全技術貢獻其中。「我們所做的研究,我們希望盡可能廣泛地傳播,讓每個人都能受益。」OpenAI 基礎設施主管 Christopher Berner 說。該實驗室的理念——以及其特殊需求——使其傾向於採用開源、雲原生策略來建構其深度學習基礎設施。

OpenAI 在 2016 年開始在 AWS 上運行 Kubernetes,一年後,將 Kubernetes 叢集遷移到 Azure。「我們使用 Kubernetes 的方式可能與很多人不同。」Berner 說。「我們將其用於批次排程和作為叢集的工作負載管理器。這是一種協調大量相互連接的容器的方式。我們依賴我們的 自動擴展器 來動態擴展和縮減我們的叢集。這讓我們能夠顯著降低閒置節點的成本,同時仍然提供低延遲和快速迭代。」

在過去一年中,Berner 監督了 OpenAI 自有資料中心中多個 Kubernetes 叢集的啟動。「我們在混合模型中運行它們,其中控制平面——Kubernetes API 伺服器、etcd 和所有東西——都在 Azure 中,然後所有的 Kubernetes 節點都在我們自己的資料中心。」Berner 說。「雲端對於管理 etcd 和所有主節點,以及備份和在任何東西損壞時啟動新節點來說非常方便。這種模型使我們能夠利用更低的成本,並在我們自己的資料中心中獲得更專業硬體的可用性。」

OpenAI 的不同團隊目前運行著幾十個專案。雖然最大規模的工作負載直接管理裸機雲端 VM,但 OpenAI 的大多數實驗都利用了 Kubernetes 的優勢,包括可攜性。「由於 Kubernetes 提供了一致的 API,我們可以非常輕鬆地在叢集之間移動我們的研究實驗。」Berner 說。內部部署叢集通常「用於需要大量 GPU 的工作負載,例如訓練 ImageNet 模型。任何 CPU 密集型的工作都在雲端運行。但我們也有許多團隊在 Azure 和我們自己的資料中心運行他們的實驗,只是取決於哪個叢集有空閒容量,這非常有價值。」

Berner 讓所有 OpenAI 團隊都可以使用 Kubernetes 叢集,如果它適合的話。「我與我們的遊戲團隊合作了很多,他們目前正在研究經典遊戲機遊戲。」他說。「他們一直在我們的開發伺服器上運行許多實驗,並且一直在嘗試 Google 雲端,管理他們自己的 VM。我們讓他們試用了我們的第一個內部部署 Kubernetes 叢集,結果非常成功。他們現在已完全轉移到它,並且它使他們能夠將實驗擴展 10 倍,並且無需投入大量的工程時間來弄清楚如何管理更多機器。現在很多人都在遵循相同的道路。」

OpenAI 兩個團隊開發的用於處理與 Kubernetes 互動的框架和工具簡化了這個過程。「你只需編寫一些 Python 程式碼,填寫一些配置,說明你需要多少台機器以及哪些類型,然後它將準備所有這些規範並將其發送到 Kube 叢集,以便在那裡啟動。」Berner 說。「它還提供了一些額外的監控和更好的工具,這些工具專門為這些機器學習專案設計。」

Kubernetes 在 OpenAI 產生的影響令人印象深刻。有了 Kubernetes,框架和工具(包括自動擴展器)就位,啟動實驗所需的時間大大縮短。「我們一位正在開發新的分散式訓練系統的研究人員已經能夠在兩三天內讓他的實驗開始運行。」Berner 說。「在一兩週內,他將其擴展到數百個 GPU。以前,這很容易需要幾個月的工作。」

此外,他們現在可以靈活地在適當時使用他們的內部部署 Kubernetes 叢集,「降低了成本,並讓我們能夠存取我們不一定能在雲端存取的硬體。」他說。「只要利用率高,我們資料中心的成本就會低得多。在一定程度上,你也可以根據你的確切需求客製化你的硬體。」

OpenAI 也受益於 CNCF 雲原生生態系統中的其他技術。gRPC 被其許多系統用於不同服務之間的通訊,而 Prometheus 則「作為除錯工具,以防出現問題。」Berner 說。「我們最近在我們的 Kubernetes 叢集中實際上沒有遇到任何真正的問題,所以我認為最近沒有人查看我們的 Prometheus 監控。如果出現問題,它會在那裡。」

Berner 持續關注的一件事是 Kubernetes 的擴展能力,這對於深度學習實驗至關重要。OpenAI 已經能夠將其在 Azure 上的其中一個 Kubernetes 叢集擴展到超過 2,500 個節點。「我認為我們很快就會達到 Kubernetes 已經測試過的 5,000 台機器的數量。」Berner 補充說,「如果你對從事這些事情感到興奮,我們絕對在 徵才!」