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