到 2021 年底,人工智能市場的價值估計為 583 億美元。這一數字勢必會增加,預計未來 5 年將增長 10 倍,到 2026 年將達到 3096 億美元。鑒于人工智能技術如此受歡迎,公司廣泛希望為其業務構建和部署人工智能應用解決方案。在當今技術驅動的世界中,人工智能已成為我們生活中不可或缺的一部分。根據麥肯錫的一份報告,人工智能的采用率正在繼續穩步上升:56% 的受訪者表示至少在一項業務功能中采用了人工智能,高于 2020 年的 50%。這種采用率的增加是由于構建和部署戰略的不斷發展人工智能應用。各種策略正在演變以構建和部署 AI 模型。AI 應用程序容器化就是這樣一種策略。
機器學習操作 (MLOps) 正變得越來越穩定。如果您不熟悉 MLOps,它是有助于提高機器學習工作流程效率的原則、實踐和技術的集合。它基于 DevOps,正如 DevOps 簡化了從開發到部署的軟件開發生命周期 (SDLC) 一樣,MLOps 對機器學習應用程序也完成了同樣的工作。容器化是用于開發和交付 AI 應用程序的最有趣和新興的技術之一。容器是軟件包的標準單元,它將代碼及其所有依賴項封裝在一個包中,允許程序快速可靠地從一個計算環境轉移到另一個計算環境。Docker 處于應用程序容器化的最前沿。
什么是容器?
容器是包含應用程序執行所需的一切的邏輯框。操作系統、應用程序代碼、運行時、系統工具、系統庫、二進制文件和其他組件都包含在此軟件包中?;蛘?,根據特定硬件的可用性,可能會包含或排除某些依賴項。這些容器直接在主機內核中運行。容器將共享主機的資源(如 CPU、磁盤、內存等)并消除管理程序的額外負載。這就是容器“輕量級”的原因。
為什么容器如此受歡迎?
首先,它們是輕量級的,因為容器共享機器操作系統內核。它不需要整個操作系統來運行應用程序。VirtualBox,通常稱為虛擬機 (VM),需要安裝完整的操作系統,這使得它們非常龐大。
容器是可移植的,可以輕松地從一臺機器傳輸到另一臺機器,其中包含所有必需的依賴項。它們使開發人員和操作員能夠提高物理機的 CPU 和內存利用率。
在容器技術中,Docker 是最流行和使用最廣泛的平臺。不僅基于 Linux 的 Red Hat 和 Canonical 已經采用了 Docker,微軟、亞馬遜和甲骨文等公司也在依賴它。如今,幾乎所有 IT 和云公司都采用了 docker,并被廣泛用于為其解決方案提供所有依賴項。
點擊查看完整大小的圖片
虛擬機與容器(來源:Softnautics)
Docker 和容器之間有什么區別嗎?
Docker 已廣泛成為容器的代名詞,因為它是開源的,擁有龐大的社區基礎,并且是一個相當穩定的平臺。但容器技術并不新鮮,它以 LXC 的形式被納入 Linux 已有 10 多年了,FreeBSD jails、AIX Workload Partitions 和 Solaris Containers 也提供了類似的操作系統級虛擬化。
Docker 可以通過將 OS 和包需求合并到一個包中來簡化流程,這是容器和 docker 之間的區別之一。
我們經常對為什么 docker 被用于數據科學和人工智能領域感到困惑,但它主要用于 DevOps。ML 和 AI 與 DevOps 一樣,具有跨操作系統的依賴性。因此,單個代碼可以在 Ubuntu、Windows、AWS、Azure、谷歌云、ROS、各種邊緣設備或其他任何地方運行。
AI/ML 的容器應用
與任何軟件開發一樣,AI 應用程序在由團隊中的不同開發人員組裝和運行或與多個團隊協作時也面臨 SDLC 挑戰。由于 AI 應用程序的不斷迭代和實驗性質,有時依賴關系可能會交叉交叉,從而給同一項目中的其他依賴庫帶來不便。
點擊查看完整大小的圖片
AI/ML 對容器應用的需求(來源:Softnautics)
問題是真實的,因此,如果您要展示需要特定執行方法的項目,則需要遵循每個步驟的可接受文檔。想象一下,對于同一個項目的不同模型,您有多個 python 虛擬環境,并且沒有更新文檔,您可能想知道這些依賴項是做什么用的?為什么在安裝較新的庫或更新的模型等時會發生沖突?
開發人員不斷面臨“它在我的機器上工作”的困境,并不斷嘗試解決它。
為什么它可以在我的機器上運行(來源:Softnautics)
使用 Docker,所有這些都可以變得更容易和更快。容器化可以幫助您節省大量更新文檔的時間,并使您的程序的開發和部署從長遠來看更加順利。即使通過提取多個與平臺無關的圖像,我們也可以使用 docker 容器為多個 AI 模型提供服務。
完全在 Linux 平臺上編寫的應用程序可以使用 docker 在 Windows 平臺上運行,它可以安裝在 Windows 工作站上,使跨平臺的代碼部署變得更加容易。
點擊查看完整大小的圖片
使用 docker 容器部署代碼(來源:Softnautics)
容器與虛擬機上 AI 模型的性能
已經進行了許多實驗來比較 Docker 與市場上用于 AI 部署的各種虛擬機的性能:下表可以大致了解影響 AI 模型部署的 VM 和 Docker 容器的性能和差異。
方差 | 虛擬機 | 容器 |
操作系統 | 需要一個客人 | 共享 |
開機速度 | 比傳統機器慢 | 比虛擬機快 |
標準化 | 本質上特定的操作系統標準 | 特定于應用程序的性質 |
可移植性 | 不是很便攜 | 更快、更容易移植 |
需要服務器 | 需要更多 | 很少的服務器 |
安全 | 管理程序定義安全性 | 安全是共享的 |
冗余級別 | VM擁有資源 | 共享操作系統,減少冗余 |
硬件抽象 | 硬件抽象 | 可實現硬件接入 |
資源共享 | 需要更多資源 | 需要和共享的資源更少 |
資源隔離 | 高的 | 緩和 |
記憶 | 高內存占用 | 更少的內存占用和共享 |
文件共享 | 無法共享文件 | 文件可以共享 |
表 1:虛擬機與容器(來源:Softnautics)
從所有比較實驗的結論中得出的廣泛結論如下:
容器的開銷比虛擬機低,性能與非虛擬化版本一樣好。
在高性能計算 (HPC) 中,容器的性能優于基于管理程序的虛擬化。
深度學習計算工作負載主要卸載到 GPU,從而導致資源爭用,這對于眾多容器來說很嚴重,但由于出色的資源隔離,在虛擬機中這種情況很少。
服務大型 AI 模型通常通過 REST API 容器完成。
多模型服務主要使用容器完成,因為它們可以使用更少的資源輕松擴展。
現在,讓我們通過Kennedy Chengeta在他最近的研究中收集的以下實驗結果來總結容器對任何 VM 的優勢。基于 Prosper Lending 和 Lending Club 數據集的深度學習數據集進行分類,下表比較了 4 種不同的虛擬化技術(KVM、Xen、Docker、Docker + Kubernetes)的啟動時間、網絡延遲、數據下載和網絡延遲. KVM(基于內核的 VM)是表中其他的基準值。
表 2:Lending Club 數據集表現(越低越好)(來源:Softnautics)
表 3:Prosper 數據集(越低越好)(來源:Softnautics)
如您所見,Docker 和由 Kubernetes 管理的 Docker 的性能優于 KVM 和 Xen Hypervisors。
大型 AI 模型是否對容器部署構成挑戰?
由于開發人員將使用容器進行訓練和推斷他們的 AI 模型,因此對兩者來說最關鍵的將是內存占用。隨著 AI 架構變得越來越大,在它們上訓練的模型也變得越來越大,從 100 MB 到 2 GB。由于容器被認為是輕量級的,因此此類模型變得笨重而無法裝在容器中攜帶。開發人員使用模型壓縮技術使它們具有互操作性和輕量級。模型量化是最流行的壓縮技術,您可以通過將模型的內存占用從 float32 集更改為 float16 或 int8 集來減小模型的大小。領先平臺提供的大多數預訓練即用型 AI 模型都是容器中的量化模型。
結論
總而言之,將整個 AI 應用程序開發到部署管道轉換為容器的好處如下:
針對不同版本的框架、操作系統和邊緣設備/平臺,為每個 AI 模型提供單獨的容器。
每個 AI 模型都有一個容器,用于自定義部署。例如:一個容器對開發人員友好,而另一個容器對用戶友好且無需編碼即可使用。
每個 AI 模型的單獨容器,用于 AI 項目中的不同版本或環境(開發團隊、QA 團隊、UAT(用戶驗收測試)等)
容器應用程序真正更有效地加速了 AI 應用程序開發-部署管道,并有助于維護和管理用于多種用途的多個模型。
審核編輯 黃昊宇
-
AI
+關注
關注
87文章
30763瀏覽量
268906 -
人工智能
+關注
關注
1791文章
47208瀏覽量
238284 -
Docker
+關注
關注
0文章
457瀏覽量
11849
發布評論請先 登錄
相關推薦
評論