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

挑戰

OpenAI 是一家人工智慧研究實驗室,需要深度學習基礎設施,以便在雲端或其自己的資料中心執行實驗,並易於擴充套件。可移植性、速度和成本是主要驅動因素。

解決方案

OpenAI 於 2016 年開始在 AWS 上執行 Kubernetes,並於 2017 年初遷移到 Azure。OpenAI 在 Azure 及其自己的資料中心執行機器人和遊戲等領域的關鍵實驗,具體取決於哪個叢集有空閒容量。基礎設施負責人 Christopher Berner 表示:“我們主要將 Kubernetes 用作批處理排程系統,並依賴我們的 自動伸縮器 動態擴充套件和收縮我們的叢集。這使我們能夠顯著降低閒置節點的成本,同時仍能提供低延遲和快速迭代。”

影響

該公司受益於更高的可移植性:“由於 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 的不同團隊目前執行著幾十個專案。雖然最大規模的工作負載直接管理裸雲虛擬機器,但 OpenAI 的大多數實驗都利用了 Kubernetes 的優勢,包括可移植性。“由於 Kubernetes 提供了一致的 API,我們可以在叢集之間非常輕鬆地移動我們的研究實驗,”Berner 說。本地叢集通常“用於需要大量 GPU 的工作負載,例如訓練 ImageNet 模型。任何 CPU 密集型的工作都在雲端執行。但我們也有許多團隊在 Azure 和我們自己的資料中心執行他們的實驗,這取決於哪個叢集有空閒容量,這非常有價值。”

Berner 已將 Kubernetes 叢集提供給所有 OpenAI 團隊使用,如果它們合適。“我與我們的遊戲團隊合作了很多,他們目前正在研究經典遊戲機遊戲,”他說。“他們一直在我們的開發伺服器上執行許多實驗,並且一直在嘗試 Google 雲,管理他們自己的虛擬機器。我們讓他們嘗試我們的第一個本地 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 叢集擴充套件到超過 2500 個節點。“我認為我們很快就會達到 Kubernetes 已經測試過的 5000 臺機器的數量,”Berner 說,並補充道:“如果你對這些工作感興趣,我們絕對在 招聘!”