10/08/2025 –, AU
在這場演講中,我將跟大家分享一種使用 Nix 來優化機器學習模型容器的方法。
我們知道,把機器學習(ML)模型包裝成 Web 服務並部署在容器中,是現在非常常見的做法。但這樣的系統也帶來了一些挑戰,特別是在依賴管理上。大多數ML 模型是用 Python 寫的,而 Python 的生態系繁雜、依賴眾多,這些依賴最終都會以檔案系統物件的形式體現在映像中。
如果你的系統需要部署多個 ML 模型,那麼很可能這些容器之間會有大量相同的依賴。這也意味著,如果能把這些通用依賴打包在一起,作為共用的映像層,我們就有機會大幅減少整體容器映像的儲存空間。
這裡就引入了 Nix。
Nix 是一個功能強大的套件管理系統,它支援構建符合 Open Container Initiative(OCI)標準的容器映像。這些映像在構建時會將所有依賴完整封裝進來,同時排除那些不必要的中間產物,也就是說,它可以讓你打造出更乾淨、體積更小的容器映像。
雖然 Nix 本身提供了一些基本功能來支援多層映像的構建,但當映像中涉及的 Nix 儲存路徑數量過多時,它沒辦法自動找出一個在多個映像之間共用的最佳分層方式。
於是我進一步研究並證明了這件事:對於任意一組使用 Nix 儲存路徑構建出來的映像,的確存在一種最佳分層結構,可以用來最小化整體儲存空間的使用。
接下來,我會向大家說明這個最佳分層是如何被識別出來的,並展示我所設計的演算法——它不只可以用來建構映像,也能分析並優化它們的分層結構。
這個方法不僅適用於 ML 模型部署,也對任何需要在多個容器間重用套件和依賴的場景具有實際價值。
所有對軟體套件管理或 MLOps 有興趣的人
Niveau de difficulté:中階
呂艾倫是博通 Tanzu 部門的主任工程師。在 2023 年加入博通之前,他是 VMware 的機器學習 staff 工程師,專注於雲端安全的異常檢測。此前,呂先生曾在 Prudential、PIMCO、Activision 和波音公司擔任資料科學、數理金融和軟體工程方面的職位。他在科技和金融領域擁有 20 年的經驗,並擁有加州大學洛杉磯分校安德森管理學院金融工程碩士和哥倫比亞大學電腦科學學士。