用於HPC和深度學習工作負載的容器技術

HitTwice發表於2018-05-07

  在應用程式開發領域中,容器近幾年來受到了廣泛的關注——原因有很多。這裡簡單列舉幾個優點:容器簡化並加速了構建和隔離應用程式的過程;它們是輕量級的,而且日常管理開支較低;它們能夠更加容易地實現應用程式共享和再現性,因為容器映像包括應用程式及其開發環境。

  特別是在深度學習(DL)框架中,容器化的重要性正在上升。為什麼?每個DL框架都有許多依賴項。每個依賴庫都有特殊的版本需求,所有DL框架都經常發生變化。大多數DL框架的友好支援作業系統是Ubuntu,而資料中心部署通常是執行Red Hat Enterprise Linux/Centos。容器化有助於開發人員克服這些挑戰。所有東西都打包成一個單獨的包,包括所有必需的部件。

用於HPC和深度學習工作負載的容器技術

  有許多技術可助力實施容器化,例如Docker、LXC、LXD和Singularity等。每一種技術都有各自的優缺點,可以迎合不同的受眾型別,適用於不同的用例。對於專注於HPC技術使應用程式大規模化的使用者來說——例如MPI和排程器(slurm, torque),Singularity可能是一個更好的選擇。另一方面,如果用例是基於微服務的擴充套件,那麼Docker,再加上諸如Kubernetes或Docker叢集之類的編排技術,可能會是更好的選擇。

  對於HPC和DL應用,在Singularity平臺上進行容器化會有一些額外的優勢。特別地,與Singularity相結合的容器化,有助於開發人員克服與編譯和大規模最佳執行相關的挑戰。它使開發人員能夠透過Singularity的MPI整合能力將工作負載擴充套件到單個節點。隨著DL資料集的規模不斷擴大,這種可伸縮性將成為許多用例的需求。

  Singularity是在勞倫斯伯克利國家實驗室專門為HPC和DL工作負載開發的。其核心概念是,在容器啟動時,使用者上下文始終保持不變。這裡沒有守護程式。相反,Singularity是可執行的。Singularity容器在使用者空間中執行,這使得使用者的許可權在容器內部和外部都是相同的。

  在戴爾EMC HPC和AI創新實驗室,研究團隊將Singularit用在了一個專案中,這個專案包含了其內部用例的DL和HPC應用程式。在這個專案中,該團隊發現集裝箱化簡化了DL在單節點和多節點配置中的構建和部署。

  更重要的是,研究團隊發現與裸機相比,在Singularit上的DL應用程式沒有效能損失。在其基準測試中,研究團隊比較了裸機執行與容器執行的對比,發現相對效能差異小於2%。

  這是關鍵。對於在深度學習和HPC領域工作的開發人員來說,容器化的好處是顯著的,而無需對效能進行顯著影響。顯然,隨著組織充分利用DL技術提供由人工智慧驅動的產品和服務,容器技術將變得更加重要。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31473948/viewspace-2154028/,如需轉載,請註明出處,否則將追究法律責任。

相關文章