COSCUP 2025

呂艾倫 Alan Parker Lue

呂艾倫是博通 Tanzu 部門的主任工程師。在 2023 年加入博通之前,他是 VMware 的機器學習 staff 工程師,專注於雲端安全的異常檢測。此前,呂先生曾在 Prudential、PIMCO、Activision 和波音公司擔任資料科學、數理金融和軟體工程方面的職位。他在科技和金融領域擁有 20 年的經驗,並擁有加州大學洛杉磯分校安德森管理學院金融工程碩士和哥倫比亞大學電腦科學學士。


Sessions

08-10
11:00
30min
Nix 介紹:程式設計、打包軟體和可重複的開發環境
呂艾倫 Alan Parker Lue

Nix 是一個開源的套件管理系統,主要針對 Unix 類系統所設計。它不僅僅是一個套件管理器,更是一個讓軟體構建與部署過程變得可預測、可重複的完整生態系統。

這次演講我會聚焦在三個主題上:
1. Nix 程式設計語言
2. 使用 Nix 打包軟體
3. 利用 Nix flakes 建立可重複的開發環境
我們會先從 Nix 的基本概念開始談起,理解它是如何管理軟體與環境,然後再深入這三個主題。

首先,來看看 Nix 語言本身。這是一種純函數式語言,它具有延遲求值、動態型別的特性,最主要的用途是用來描述軟體套件的內容。等一下我會透過一些簡單的程式碼範例,帶大家一步一步認識這門語言。

接著,我們會討論 Nix 如何處理軟體打包。在 Nix 的世界裡,每個軟體包被定義為一個「衍生品」,英文叫 derivation。你可以把它想像成一個建構配方,它描述了如何從一組輸入建構出一個特定的軟體。這些衍生品是用 Nix 語言來撰寫的,而當我們執行構建命令時,Nix 會根據這些描述產出一個「儲存元素」(store path)。這些儲存元素是不可變的,而且是根據建構輸入的雜湊值來命名的,這也意味著:如果你看到兩個名稱相同的儲存元素,那它們的內容幾乎可以確定是一模一樣的。

最後,我們會談到可重複的環境建構。這是 Nix 最令人驚艷的地方之一。因為所有衍生結果都是不可變、且唯一命名的,我們可以精確地還原出一個開發或執行環境,不管是在你的筆電、同事的電腦,還是幾個月後的伺服器上——效果都是一樣的。我會以 Nix flakes 為例,這是一種新穎但仍在實驗階段的打包方式,來示範如何定義並重現一個完整的開發環境。

System Software
TR213
08-10
13:30
30min
利用 Nix 優化機器學習模型容器
呂艾倫 Alan Parker Lue

在這場演講中,我將跟大家分享一種使用 Nix 來優化機器學習模型容器的方法。

我們知道,把機器學習(ML)模型包裝成 Web 服務並部署在容器中,是現在非常常見的做法。但這樣的系統也帶來了一些挑戰,特別是在依賴管理上。大多數ML 模型是用 Python 寫的,而 Python 的生態系繁雜、依賴眾多,這些依賴最終都會以檔案系統物件的形式體現在映像中。

如果你的系統需要部署多個 ML 模型,那麼很可能這些容器之間會有大量相同的依賴。這也意味著,如果能把這些通用依賴打包在一起,作為共用的映像層,我們就有機會大幅減少整體容器映像的儲存空間。

這裡就引入了 Nix。

Nix 是一個功能強大的套件管理系統,它支援構建符合 Open Container Initiative(OCI)標準的容器映像。這些映像在構建時會將所有依賴完整封裝進來,同時排除那些不必要的中間產物,也就是說,它可以讓你打造出更乾淨、體積更小的容器映像。

雖然 Nix 本身提供了一些基本功能來支援多層映像的構建,但當映像中涉及的 Nix 儲存路徑數量過多時,它沒辦法自動找出一個在多個映像之間共用的最佳分層方式。

於是我進一步研究並證明了這件事:對於任意一組使用 Nix 儲存路徑構建出來的映像,的確存在一種最佳分層結構,可以用來最小化整體儲存空間的使用。

接下來,我會向大家說明這個最佳分層是如何被識別出來的,並展示我所設計的演算法——它不只可以用來建構映像,也能分析並優化它們的分層結構。

這個方法不僅適用於 ML 模型部署,也對任何需要在多個容器間重用套件和依賴的場景具有實際價值。

Open Source AI and Machine Learning
AU