在改用無伺服器架構前,開發者得管理許多雲端虛擬伺服器的資源配置,比如他們得先部署Amazon EC2執行個體,接著配置作業系統、在作業系統上部署容器、建立可移植的環境,以及在容器上部署應用程式伺服器,最後才是程式開發。(圖片來源/第一資本)

五年前,美國第一資本(Capital One)金控關閉最後一個地端資料中心,成為全美第一家全面上雲的金融企業。2023年,他們進一步展開無伺服器優先策略,原本在AWS公雲上執行的2,000多套應用程式,到了2024年,已經有三分之一採用無伺服器架構,就連用來偵測異常的機器學習(ML)服務,也以無伺服器執行。

為何還要採用無伺服器

押寶了雲端,為何還要擁抱無伺服器架構?

原來,在改用無伺服器架構前,技術團隊得管理許多雲端虛擬伺服器的資源配置。第一資本資深傑出工程師George Mao在去年一場會議中舉例,比如他們得先部署Amazon EC2執行個體,來配置所需的雲端資源。光這一步,就有許多事要做,像是在EC2主控臺中,管理包含執行作業系統(OS)和軟體配置的虛擬機器映無伺服器像檔AMI,來啟動合適的EC2執行個體。

接著才是配置作業系統,比如在Linux或Unix作業系統部署資源,還得注意該使用哪個版本、是否要升級或修補。再來是在作業系統上部署容器、建立可移植的環境,再於容器上部署應用程式伺服器,最後才是應用程式開發。

在這樣的雲端條件中,原本擅長開發的開發者,得負責開發以外的資源配置管理。而且,這些伺服器資源雖可大可小擴展,但通常得「等待工作來」才發揮作用,資源利用率也僅3到5成。

為降低管理負擔和成本,第一資本決定採用公雲無伺服器服務,來更好地運用雲端伺服器資源。比如透過API事件驅動,工作來了才啟用資源,減少閒置等待的資源浪費。於是,第一資本開始將不同的應用程式,改用Lambda無伺服器服務執行。


無伺服器架構可解決傳統雲端資源配置管理的困擾。第一資本以AWS無伺服器服務Lambda為例,它可透過API事件驅動,彈性啟動資源,減少閒置時的資源浪費。圖片來源/第一資本


用無伺服器架構執行ML的契機

這項無伺服器優先的策略,吸引了機器學習團隊的注意。他們平時負責用模型來早期偵測數位平臺的關鍵交易流量。這裡的關鍵交易有很多種,比如使用者在應用程式或瀏覽器網頁登入帳戶,也是一種關鍵交易。在這個情境中,機器學習團隊的任務就是打造模型來偵測登入流量是否異常,以便快速修復問題、降低對使用者的影響。

不過,他們的異常偵測模型需要大量數據和處理時間,才能有效執行,容易耗費大量雲端運算資源。而且,隨著模型監控的關鍵交易越來越多,團隊維護機器學習程式碼的工作量和成本也越來越高。因此他們認為,將異常偵測模型改用無伺服器架構執行,可能可以更好地降低工作量和成本。

無伺服器+ML的3大挑戰

於是,機器學習團隊在2024年展開了搬遷工作,也很快地面臨不少挑戰,有些讓他們措手不及,也有些在預期中,他們提早準備好因應措施。其中有3道特別的難題:

首先是資料量太大。他們發現,模型訓練資料集過於龐大,導致訓練時間過長,超出了Lambda服務的執行時間限制。為解決問題,他們開始瘦身,對資料集採樣,來減少整體資料量,同時保留足夠的資訊來訓練模型。

他們用這種方法,成功將資料集縮小了一個量級,大幅降低處理時間,還不影響模型表現。

他們遭遇的另一道難題是記憶體不足。由於機器學習模型需要大量函式庫來執行,就算模型本身已經相對輕量,還是超出Lambda服務所允許的記憶體範圍。

於是,團隊想出2種解決方法,一是使用Lambda Layer功能,將每個函式庫視為一個獨立的層來實作。這個Layer最多允許5個層,每個層最大可達250MB,於是,機器學習團隊將模型使用的函式庫和相依性,一一打包到不同層,再從Lambda內部調用相關層,來導入函式庫。

當他們達到5層的限制時,就啟用另外一種方法,也就是「動態函式庫安裝法」。他們先將函式庫壓縮上傳至Lambda,然後在執行時下載、解壓縮並導入函式庫。這種方式可能會影響執行時間,但他們只針對特定函式庫使用這種方法,其他函式庫則維持原方法。

團隊遭遇的第3道難題是執行時間限制。當時,第一資本所用的Lambda服務,執行時間上限是15分鐘,這對一般非機器學習應用來說,相當夠用,但不夠某些機器學習函式的執行。

於是,團隊開始檢查所有執行時間超過15分鐘的程式碼,根據各自狀況來選擇合適的替代方案或函式庫。過程中,他們發現AWS一款非同步推論(Asynchronous Inference) 方法,能因應長時間的處理需求,於是也採用這個方案,來縮短模型執行時間。對他們而言,正因為這道挑戰,促使團隊重新檢視模型並大幅優化。

無伺服器架構的3大好處

經過這些挑戰洗禮,第一資本最後成功用無伺服器架構來執行機器學習模型。他們盤點架構轉換後,帶來的不少好處,比如資源配置更有效率,因為無伺服器是按使用量付費的服務,因此只有在收到請求或特定事件驅動時才會啟用資源,而函式不再使用時,虛擬伺服器資源會自動縮減為零。

另一大好處是擴展性,比如在他們的無伺服器架構中,團隊將資料發送至主機時,資料庫可以自動擴展來因應需求。雖然團隊還是要支付讀寫流量的費用,儲存費用則包含在AWS訂閱方案中,但除了這些,沒有其他額外支出。

還有一個好處是,維護更簡單了。在採用無伺服器架構前,團隊的機器學習模型占用DevOps團隊大量時間,尤其是需要人力管理傳統容器架構的擴展。但改用無伺服器服務,可自動處理這項工作,第一資本甚至透露,他們限制幾乎不需要維護。

擁抱無伺服器架構學到的經驗

第一資本從這次的搬遷成功經驗,歸納出幾項建議,給有意採用無伺服器架構的企業參考。

首先,要成功搬遷,得在搬遷前做好充分準備,比如將所有機器學習應用和資料都先雲端化,DevOps團隊也比較容易管理各個元件。再來,當機器學習生態系統完全雲端化後,得要選擇最適合的無伺服器方案,仔細評估每種方案是否符合需求。接著,在搬遷前,也要評估模型是否適合無伺服器架構,根據不適之處先行調整,才不會在遷移過程中發生太多不可預測的障礙。

第一資本針對模型搬遷,也有幾點建議,首先是先將模型拆解為更小的元件,不只在無伺服器架構中容易管理,也能減少搬遷過程中的風險;再來是解耦資料工程,將資料工程和模型分開處理,來減少資料工程因大量運算資源需求,而對系統造成的影響。第三個建議是獨立部署模型的每一個元件,用微服務架構來提高擴展性和維護性。

熱門新聞

Advertisement