摘要:
Docker 容器是現代人工智慧(AI)和機器學習(ML)工作流程的基礎,但典型 ML 映像檔的龐大體積常導致顯著的啟動延遲,其中大部分來自冷啟動期間的映像檔拉取。本文概述了減少啟動延遲的實用策略,從簡單的調整到更進階的選項。我們從映像檔層級的最佳化開始,例如消除不必要的依賴項和採用多階段建置來減小映像檔大小。接著探討基於基礎架構的改進,特別關注 Seekable OCI (SOCI)。最後,我們討論延遲轉移技術,如暖池和預先拉取的映像檔。這些策略共同提供了一個靈活的工具組,用於改善 AI/ML 系統的效能,使組織能夠平衡工程投入和延遲需求,以提供更快速的容器化環境。
Docker 容器因其可攜性和在不同環境中維持一致性的能力,已成為現代軟體部署的基礎。在人工智慧(AI)和機器學習(ML)領域,容器化扮演著更核心的角色:它封裝了訓練和推論管道所需的框架、GPU 驅動程式、自訂依賴項和執行環境。
基於雲端的 AI 平台(如 Amazon SageMaker Studio)大量依賴 Docker 化基礎架構來為實驗和部署建立穩定的環境。這些映像檔通常很大(通常有數 GB),因為它們打包了資料科學工具組、CUDA、分散式訓練函式庫和筆記本介面。因此,容器啟動延遲成為關鍵的效能瓶頸,特別是當工作負載需要動態擴展或使用者期望互動式會話時。
這種延遲的很大一部分(通常為 30-60%,取決於網路頻寬和映像檔大小)來自於將容器映像檔從登錄檔拉取到運算實例。映像檔越大,使用者或工作負載看到任何結果所需的時間就越長。
本文探討了幾種技術,從映像檔最佳化到基礎架構層級的解決方案,以減少這種延遲並改善回應性。我們將按複雜度遞增的順序審視這些策略,協助您為組織的需求選擇最佳方案。
以下策略從小型的、以映像檔為中心的變更進展到更廣泛的基礎架構和工作負載層級的改進。
減少容器啟動延遲最容易且最具成本效益的方法是減小映像檔大小。較小的映像檔拉取更快、啟動更快,並消耗更少的儲存空間。這個過程通常從評估工程師或資料科學家實際需要的工具和依賴項開始。
大型 ML 映像檔(如開源 SageMaker Distribution 映像檔)通常包含跨多個框架、版本和工作流程的廣泛工具組。實際上,大多數團隊只使用這些工具的一部分。工程師可以透過刪除不必要的 Python 套件、GPU 函式庫、系統工具程式和打包的資料集來顯著縮小映像檔大小。
一些實用的方法包括:
即使是適度的減少也能顯著降低啟動延遲,特別是在頻繁建立容器的環境中。
雖然映像檔最佳化專注於減少傳輸的資料量,但下一層級的最佳化改進了映像檔在執行時的載入和處理方式。網路配置、登錄檔設定和容器執行時能力都會影響啟動效能。
容器拉取可能因網路路徑效率低或流量瓶頸而變慢。最佳化包括:
這些調整改善了一致性並減少了變異性。然而,此類別中最顯著的改進通常來自使用 Seekable OCI (SOCI)。
AWS 的 SOCI Snapshotter 引入了一種不同的容器啟動方式。SOCI 允許容器執行時僅拉取必要的詮釋資料和啟動容器所需的最小層集,而其餘部分則按需載入,而不是在啟動前拉取整個映像檔。以下是容器映像檔與其相關 SOCI 索引之間關係的簡單檢視:
這項技術大幅減少了感知到的啟動延遲。例如:
這種策略對於 AI/ML 工作負載特別有效,因為映像檔包含在啟動時不會立即需要的大型函式庫。透過延遲下載未使用的層,SOCI 能夠在保持整體工作流程不變的同時實現更快的回應時間。
對於依賴快速自動擴展或互動式筆記本環境的組織,SOCI 在基礎架構層級策略中提供了最高的影響力與投入比之一。
最複雜的方法是透過將映像檔拉取延遲移出客戶執行路徑來完全避免它。延遲轉移不是最佳化拉取或最小化資料大小,而是專注於確保客戶永遠不會經歷冷啟動。
這可以透過預熱運算環境和預先拉取映像檔來實現。
在這種技術中,服務提供者維護一個「暖」實例池,這些實例已經在執行並準備好服務使用者工作負載。當使用者或作業請求運算時,系統分配一個暖實例而不是佈建新實例。這為終端使用者消除了 100% 的實例初始化延遲。
暖池存在於許多託管服務中:
這些池可以根據操作需求將容器或實例保持在不同的就緒程度。
如果大多數客戶依賴共享的通用映像檔,暖池實例也可以配置為預先拉取該映像檔。分配給使用者時,實例已在執行,所需的映像檔已在本地快取。這種方法完全消除了映像檔拉取時間,提供了最快的啟動體驗。
Gillam, L. 和 Porter, B. 關於各種容器環境效能分析的研究(2021)詳細描述了這些方法。他們的研究提供了冷啟動與暖啟動容器行為的清晰比較,並支援暖池策略的有效性。
延遲轉移會產生操作成本,包括運算容量、編排邏輯和閒置資源。儘管如此,對於使用者體驗或快速擴展是最高優先順序的系統,優點往往超過成本。
容器啟動延遲可能顯著減慢 AI/ML 工作流程,並降低互動式環境中的使用者體驗。雖然映像檔拉取時間經常主導這種延遲,但組織可以從一系列解決方案中選擇來解決和緩解這個問題。
像映像檔最佳化這樣的低投入方法以很少的操作開銷提供快速成效。基礎架構改進,特別是透過像 SOCI 這樣的技術,能夠在不需要重大架構變更的情況下實現顯著的延遲降低。延遲轉移提供了最快的面向使用者的啟動時間,儘管它伴隨著持續的成本和複雜性。
並非每種策略都適合每個環境。對於延遲不是關鍵任務的企業,維護暖池可能無法證明操作成本的合理性。然而,提供即時 AI 能力、互動式筆記本或動態擴展微服務的公司可以透過實施這些技術大幅改善使用者滿意度。
最終,加速容器啟動不僅僅是改善效能。它還提升了開發人員效率、增強了使用者體驗,並加強了現代 AI 驅動系統的回應性。
參考文獻:
:::info 本文章發表於 HackerNoon 的商業部落格計畫。
:::
\

