隨著資料科學的發展,自動化機器學習(AutoML)工具應運而生,簡化了機器學習流程,讓開發者能更專注於資料預處理、特徵工程和模型佈署等核心任務。標準機器學習流程包含資料匯入、預處理、特徵工程、模型訓練、評估、佈署和維護等環節。AutoML 工具則能自動化其中部分或全部流程,例如自動化資料準備、超引數最佳化、演算法評估和模型整合。
H2O.ai 是一款開源機器學習平台,支援傳統機器學習和深度學習,可自動執行多個演算法並最佳化超引數,最終產生最佳模型排行榜。它支援 Python 和 R 語言,並提供圖形化介面 H2O Flow,方便使用者操作。Dataiku 則是一個協作式資料科學平台,提供資料探索、特徵工程、模型建立和佈署等功能。DataRobot 作為端對端資料科學平台,結合了 AutoML 功能和端對端資料科學能力,能加速模型訓練、評估和佈署。深度學習的基礎設施與運算資源也是開發者需要考量的重點,Nvidia GPU 由於 CUDA 的最佳化,成為深度學習的首選硬體。開發者可以選擇投資自己的 GPU 或使用雲端服務,例如 AWS、GCP 和 Microsoft Azure。
自動化機器學習(AutoML)工具:加速NLP應用開發
自動化機器學習(AutoML)已成為資料科學界的熱門話題,許多新創公司紛紛投入此領域,提供更便捷的機器學習解決方案。這些工具能夠自動化部分或全部機器學習流程,從而節省開發者的時間和精力,讓他們能夠專注於更重要的任務,如資料預處理、特徵工程和模型佈署。
標準機器學習流程
在探討AutoML工具之前,我們先來看看標準的機器學習流程:
- 匯入資料
- 資料預處理(處理缺失值、異常值、資料型別轉換等)
- 特徵縮放、工程和選擇
- 資料結構化(建立訓練集、交叉驗證集和測試集等)
- 定義評估指標並選擇要測試的演算法
- 設定演算法,選擇和測試具有不同超引數的模型
- 選擇要在生產環境中佈署的模型
- 重構程式碼、撰寫測試並推入生產環境
- 在生產環境中監控和維護模型
- 收集實際結果,並在必要時重新訓練模型
AutoML的核心功能
AutoML能夠自動化部分或全部上述流程,包括:
- 自動化資料準備(缺失值填補、特徵縮放、特徵選擇等)
- 自動化網格搜尋和超引數最佳化
- 自動化多個演算法的評估
- 自動化模型的整合(整合選擇和堆積疊)
AutoML工具介紹
以下是三種主要的AutoML工具,它們能夠幫助開發者加速NLP應用的開發:
H2O.ai
H2O.ai是一個開源的機器學習平台,成立於2012年,迄今已獲得1.51億美元的資金。該平台支援傳統機器學習和深度學習,能夠自動執行多個演算法並最佳化超引數,從而產生最佳模型的排行榜。H2O.ai支援Python和R語言,並提供了一個無需撰寫程式碼的圖形介面——H2O Flow,讓使用者能夠輕鬆執行實驗。
程式碼範例:使用H2O.ai進行AutoML
import h2o
from h2o.automl import H2OAutoML
# 初始化H2O
h2o.init()
# 載入資料集
df = h2o.import_file("path/to/your/dataset.csv")
# 設定目標變數和預測變數
y = "target_variable"
x = df.columns
x.remove(y)
# 初始化AutoML
aml = H2OAutoML(max_models=20, max_runtime_secs=3600)
# 訓練模型
aml.train(x=x, y=y, training_frame=df)
# 檢視排行榜
lb = aml.leaderboard
print(lb)
內容解密:
- 匯入必要的函式庫:首先,我們需要匯入
h2o和H2OAutoML。h2o是H2O.ai的核心函式庫,而H2OAutoML則是負責自動化機器學習的主要類別。 - 初始化H2O:使用
h2o.init()初始化H2O環境,這是使用H2O.ai功能的前提。 - 載入資料集:透過
h2o.import_file()載入我們的資料集。這裡需要指定資料集的路徑。 - 設定目標變數和預測變數:我們需要定義目標變數(y)和預測變數(x)。這裡,y是我們要預測的變數,而x則是所有其他用於預測的變數。
- 初始化AutoML:建立一個
H2OAutoML例項,並設定最大模型數量和最大執行時間。這裡,我們設定最多訓練20個模型,並且執行時間最長為3600秒(1小時)。 - 訓練模型:呼叫
aml.train()方法開始訓練模型。我們傳入預測變數、目標變數和訓練資料。 - 檢視排行榜:訓練完成後,我們可以透過
aml.leaderboard檢視模型的排行榜,瞭解哪些模型的表現最佳。
Dataiku
Dataiku是一個協作式的資料科學軟體平台,成立於2013年,迄今已獲得2.47億美元的資金。與H2O.ai不同,Dataiku不僅支援機器學習,還提供了資料探索、特徵工程、模型建立和佈署等功能。
DataRobot
DataRobot是一個端對端的資料科學平台,成立於2012年,迄今已獲得7.51億美元的資金。它結合了H2O.ai的AutoML功能和Dataiku的端對端資料科學能力,能夠加速模型的訓練、評估和佈署。
深度學習基礎設施與運算資源
深度學習中最令人頭痛且昂貴的部分是取得適當的運算資源。如今,若想認真投入深度學習領域,你將需要一顆Nvidia GPU。Nvidia幾乎是你能可靠使用的唯一品牌,因為所有深度學習框架主要都針對CUDA進行最佳化,而CUDA是Nvidia的專有技術。希望未來會有更多競爭對手出現,但目前為止,Nvidia仍是首選。
你可以選擇為工作站投資自己的顯示卡,或是連線到已經組態好GPU的雲端例項。如果你是初學者,先使用廉價的雲端服務可能是更好的選擇,而不是預先支付自己的GPU費用。設定工作站需要耗費大量精力,而連線到雲端服務只需透過瀏覽器開啟一個Jupyter Notebook。然而,當你每天執行大量實驗並自掏腰包支付運算時數時,使用自己的GPU可以節省一些成本。
三大雲端服務供應商——AWS、GCP和Microsoft Azure——都提供最先進的GPU硬體進行訓練。大部分情況下,選擇哪個服務取決於一個因素:成本。由於價格波動很大,為了獲得最新的資訊,GitHub使用者zszazi整理了一份優秀的表格,比較了未來幾年你可能會用到的雲端服務供應商。
在本文中,我們將介紹訓練基礎設施領域的一些新興玩家,描述他們為深度學習工程師提供的獨特功能,並如往常一樣給出我們的推薦。
Paperspace
Paperspace成立於2014年,是一家專注於機器學習的雲端運算公司;它為個人和團隊提供了一個ML開發平台,讓他們可以使用GPU開發和佈署機器學習模型。Paperspace是專注於建立GPU基礎機器學習應用的團隊的良好選擇。與其建立自定義的GPU工作站(這需要大量的前期投資和硬體設定),資料科學家可以使用雲端GPU按需付費(通常按小時計費)。
與AWS、Azure和GCP相比,Paperspace提供了更直觀的服務和更透明的價格。它允許團隊啟動一台配備適當GPU的虛擬機器,使用任何框架(包括TensorFlow和PyTorch)訓練機器學習模型、版本控制模型、在團隊內分享程式碼、擴充套件訓練和推理操作,並透過API提供模型。
Paperspace 的核心產品
Paperspace的核心產品是Paperspace Gradient;它提供了開發和佈署機器學習模型所需的所有基礎設施。只需點選幾下,我們就可以設定雲端環境、載入和探索資料、透過Jupyter Notebook開發模型(我們也可以選擇利用單一例項或擴充套件分散式訓練)、監控模型效能,並使用GPU或CPU將模型佈署為API端點,且能夠根據請求量進行擴充套件。此外,Gradient還提供了與GitHub的持續整合服務。
FloydHub
FloydHub與Paperspace類別似,為資料科學家提供了一個託管的雲端平台,用於訓練、測試和佈署機器學習模型。與Paperspace一樣,FloydHub提供了包裝良好的雲端基礎設施,讓資料科學家無需擔心管理基礎設施即可進行工作。這包括DevOps(例如,組態基礎設施、協調任務、管理日誌、安全等)。FloydHub和Paperspace都提供了實驗跟蹤軟體,讓我們能夠跟蹤、組織和分享工作。
FloydHub 的核心產品
FloydHub的核心產品是FloydHub Workspace,由JupyterLab驅動,在功能上與Paperspace Gradient相似。
與AWS、Azure和GCP等成熟玩家相比,Paperspace和FloydHub更新,且支援的社群規模較小。因此,相較於雲端運算巨頭,它們的社群贊助檔案和支援較少。
Google Colab
迄今為止,最簡單且最便宜(免費!)的用於訓練機器學習模型的雲端服務是Google Colab(「Colaboratory」),這是一項由Google提供的免費雲端服務。Google Colab無需組態,提供免費的GPU存取,並使分享變得非常容易。在其核心,Colab筆記本是線上的雲端Jupyter Notebook,利用Google的雲端例項執行模型訓練所需的運算。
Colab筆記本都儲存在Google Drive帳戶中,筆記本環境允許使用者從Google Drive、GitHub和許多其他來源存取資料和程式碼。Colab預先安裝了許多資料科學和機器學習中常用的Python函式庫,包括NumPy、pandas、TensorFlow等。
使用 Google Colab 的優勢
Google Colab的最大優勢在於其簡單性和免費使用。對於初學者或小型專案來說,Colab提供了一個無需額外成本即可進行深度學習實驗的平台。然而,其免費性質也意味著資源有限,不適合大規模或商業應用。
雲端運算平台比較與選型
在機器學習與深度學習的開發過程中,選擇合適的雲端運算平台至關重要。這些平台提供了強大的運算資源,特別是在GPU運算方面,能夠大幅提升模型訓練的效率。本文將對Google Colab、Kaggle Kernels、Lambda GPU Cloud等雲端運算平台進行比較,並提供選型建議。
Google Colab:免費與易用性的典範
Google Colab是Google提供的一個免費的Jupyter Notebook環境,特別適合學生、學術研究人員和資料科學愛好者使用。它預裝了TensorFlow、PyTorch和Scikit-learn等常見的機器學習函式庫,並且支援直接在Notebook中執行Shell命令,方便安裝新的函式庫。
然而,Colab也有一些限制。例如,在CPU上最多可以執行24小時,在GPU上最多可以執行12小時,超過時間限制後,Notebook將會斷開與虛擬機器的連線,中斷正在進行的訓練。不過,使用者可以連線到本地執行環境,以實作無限期的訓練。
Kaggle Kernels:資料科學與機器學習的分享平台
Kaggle Kernels是Kaggle提供的Jupyter Notebook環境,用於建立、分享和協作機器學習專案。它將程式碼、註解、環境變數、輸入檔案和輸出結果儲存在Docker容器中,確保了工作的可重現性。
與Google Colab相比,Kaggle Kernels的執行時間更短(使用GPU時總執行時間為9小時),且執行速度較慢。然而,它仍然是學生、學術研究人員和資料科學愛好者學習機器學習、開發和分享模型的良好選擇。
Lambda GPU Cloud:新興的GPU雲端服務
Lambda Labs是一家專注於深度學習工作站和硬體的公司,最近推出了Lambda GPU Cloud。這是一個值得關注的新興雲端運算平台,儘管目前其功能和服務尚不如其他雲端運算提供商完善。
雲端運算平台選型建議
對於學生和對價格敏感的開發者,Google Colab是一個理想的起點,因為它免費且易於使用。對於中等規模的非企業開發者,Paperspace或FloydHub是不錯的選擇,它們使用方便,不需要IT部門的支援。
對於專業人士,特別是企業使用者,AWS、Azure和GCP是最佳選擇。這些公司提供了廣泛的雲端服務,可以滿足企業的各種需求。如果企業處於早期階段,可能有資格參加啟動折扣計劃;如果企業已經成熟,可以透過談判獲得長期契約的折扣。
個人選型偏好
Ankur的選擇
除非您在已經深度使用AWS、GCP或Azure的大型組織工作,否則我建議透過UI/UX友好的平台利用雲端GPU。Paperspace是我的首選,因為它易於啟動GPU、平行訓練多個模型,並在完成後關閉GPU。您還可以使用Paperspace將模型作為API提供;相比AWS、GCP和Azure的服務,它使用起來更方便。
Ajay的選擇
我嘗試過多種雲端服務,並建立了多個深度學習工作站,但現在我主要使用Colab和大學提供的計算叢集。當然,並非每個人都能存取計算叢集,因此總體而言,我推薦使用Colab。除了免費這個明顯的優勢外,我喜歡Colab的一點是它非常容易進入Jupyter Notebook。事實上,對我來說,啟動Colab例項比在本地啟動Jupyter Notebook伺服器更快!
邊緣/裝置端推論
當需要在生產環境中佈署模型時,有兩種方式可以執行推論:在雲端或裝置端。兩者的優缺點大致如預期。
在雲端執行推論通常能為終端使用者提供更快的體驗,因為可以利用雲端GPU並以任意方式執行推論。此外,不需要擔心支援多個平台、裝置和硬體組態,因為可以使用統一的後端,透過API存取。
內容解密:
本段落主要討論了在生產環境中佈署模型時,如何選擇合適的推論方式。雲端推論具有速度快、不需要擔心裝置相容性等優點,但也需要考慮資料傳輸和安全性的問題。裝置端推論則可以在離線環境下執行,但需要考慮裝置的運算能力和記憶體限制。開發者需要根據具體應用場景和需求,選擇最合適的推論方式。
此圖示呈現了在生產環境中佈署模型時,如何選擇合適的推論方式,並考慮相關因素。圖表中的節點代表不同的決策或動作,箭頭表示流程的方向。透過這個圖表,可以清晰地瞭解在不同推論方式下的考量和優缺點。
裝置端與雲端推論的抉擇:技術與商業考量
在人工智慧的佈署過程中,選擇適當的推論(inference)方式對模型的效能、成本及使用者經驗至關重要。推論主要分為兩大類別:裝置端推論(on-device inference)與雲端推論(cloud inference)。本文將探討這兩種推論方式的技術特點、優勢與挑戰,並分析主流雲端服務提供商的機器學習服務。
裝置端推論:靈活性與挑戰
裝置端推論指的是將機器學習模型佈署在使用者的裝置上,如手機、平板電腦電腦或物聯網裝置。這種方式的優勢在於:
- 無需網路連線:使用者可以在沒有網路連線的情況下使用模型,提高了應用的可用性。
- 降低雲端服務成本:透過將運算負載轉移到使用者裝置上,可以減少雲端GPU例項的使用,從而節省成本。
然而,裝置端推論也面臨著一些挑戰:
- 模型格式相容性:不同裝置和平台需要不同的模型格式,這使得模型的匯出和佈署變得複雜。
- 效能限制:使用者裝置的計算資源通常有限,這限制了模型的複雜度和效能。
ONNX:跨平台模型交換格式
Open Neural Network Exchange(ONNX)是一個開放的模型交換格式,旨在解決不同框架和平台之間的相容性問題。透過將模型轉換為ONNX格式,可以在多種裝置和平台上執行。
ONNX支援主流的深度學習框架,如TensorFlow、PyTorch等,並且有多個客戶端實作可供選擇。然而,將模型匯出到ONNX格式並在應用中載入可能相當複雜,這是目前裝置端機器學習的現狀。
Core ML:蘋果裝置的機器學習框架
Core ML是蘋果公司開發的一個機器學習框架,專為蘋果裝置設計。它利用CPU、GPU和神經計算引擎等硬體資源來加速模型的執行。雖然Core ML僅適用於蘋果裝置,但它得到了廣泛的支援,包括Hugging Face等知名NLP公司。
雲端推論與機器學習即服務
雲端推論是指將機器學習模型佈署在雲端伺服器上,使用者透過網路存取和使用模型。主流的雲端服務提供商包括AWS、GCP和Microsoft Azure。
AWS
AWS是目前最大的雲端服務提供商,擁有最豐富的服務和最廣泛的全球資料中心網路。它的機器學習即服務(MLaaS)產品——Amazon SageMaker,提供了完整的機器學習工作流程,包括資料預處理、模型訓練、評估和佈署。
AWS還提供了多種NLP相關的API,如Amazon Lex、Amazon Transcribe、Amazon Polly等,用於語音和文字處理。
Microsoft Azure
Microsoft Azure緊密整合於微軟的其他產品,如Windows和Office 365,這使得它對企業客戶具有很大的吸引力。Azure Machine Learning是微軟的MLaaS產品,提供圖形化的拖拽式介面,方便初學者使用。
Google Cloud Platform
Google Cloud Platform(GCP)在資料和機器學習領域具有強大的實力,儘管它的整體規模和服務種類別不如AWS和Azure。GCP提供了兩種MLaaS選項:Cloud AutoML和Google Cloud Machine Learning Engine,前者適合初學者,後者則提供更大的靈活性。
技術選型的考量
選擇合適的推論方式和雲端服務提供商,需要綜合考慮多個因素,包括技術需求、成本、組織現有的IT架構等。
- Ankur的選擇:AWS因其廣泛的採用率和豐富的服務而被選中。
- Ajay的選擇:考慮到在伺服器上執行推論的簡便性,Ajay建議使用應用已經使用的雲端服務提供商,以避免額外的複雜性和成本。
綜上所述,裝置端推論和雲端推論各有其優勢和挑戰。選擇適當的技術方案,需要根據具體的應用場景和需求進行仔細評估。同時,主流雲端服務提供商提供的機器學習服務也在不斷進步,為企業提供了更多的選擇和可能性。
持續整合與交付:模型佈署前的最後一環
在探討機器學習的生產環境時,我們幾乎涵蓋了所有必要的基礎設施和軟體工具,除了最後一個重要的環節:持續整合與交付(CI/CD)。CI/CD 是一套實踐方法,幫助開發者像我們一樣頻繁且可靠地將程式碼變更佈署到生產環境。簡單來說,CI/CD 是讓我們能夠在不中斷服務的前提下,維護和更新生產環境中的機器學習模型。
解析 CI/CD
持續整合(CI)
持續整合鼓勵開發者頻繁地對程式碼函式庫進行小幅度的變更,而不是一次性進行大規模的變更。同時,開發者需要經常將程式碼推播到版本控制倉函式庫,並透過自動化的流程來整合和驗證這些變更。這個過程會檢查變更是否符合既定的標準,透過測試的變更會被接受,反之則被拒絕。
@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle
title 自動化機器學習工具 NLP 應用開發加速
package "AutoML NLP 開發" {
package "AutoML 平台" {
component [H2O.ai] as h2o
component [Dataiku] as dataiku
component [DataRobot] as datarobot
}
package "自動化功能" {
component [資料準備] as prep
component [超參數最佳化] as hpo
component [模型整合] as ensemble
}
package "運算平台" {
component [Google Colab] as colab
component [Kaggle Kernels] as kaggle
component [Lambda GPU] as lambda
}
}
h2o --> hpo : 自動調參
dataiku --> prep : 特徵工程
datarobot --> ensemble : 模型堆疊
colab --> kaggle : 雲端運算
note bottom of hpo
網格搜尋
超參數最佳化
end note
collect --> clean : 原始資料
clean --> feature : 乾淨資料
feature --> select : 特徵向量
select --> tune : 基礎模型
tune --> cv : 最佳參數
cv --> eval : 訓練模型
eval --> deploy : 驗證模型
deploy --> monitor : 生產模型
note right of feature
特徵工程包含:
- 特徵選擇
- 特徵轉換
- 降維處理
end note
note right of eval
評估指標:
- 準確率/召回率
- F1 Score
- AUC-ROC
end note
@enduml
此圖示展示了 CI 的基本流程
持續交付(CD)
持續交付則負責將應用程式自動佈署到下游的基礎設施環境中。例如,CD 可能會重啟各個環境中的服務,以佈署新版本的應用程式。
工具選擇
Ankur 的選擇:GitHub Actions。由於 GitHub 在程式碼倉函式庫和版本控制領域的主導地位,GitHub Actions 與現有的 GitHub 功能整合良好,是個不錯的選擇。同時,也需要關注 GitLab,它正在逐漸佔領市占率。
Ajay 的選擇:同樣是 GitHub Actions!由於 Actions 已經內建於 GitHub,使用起來非常方便。GitHub Marketplace 提供了許多現成的 Actions,用於發布到 pip、測試、樣式檢查等。此外,GitHub 正在不斷為 Actions 新增新的功能和特性。
內容解密:
- GitHub Actions 的優勢:由於與 GitHub 高度整合,GitHub Actions 提供了無縫的使用體驗,並且有大量的現成 Actions 可供使用。
- 市場競爭:儘管 GitHub 目前佔據主導地位,但其他平台如 GitLab 也在積極發展,值得關注。
- 功能擴充套件:GitHub Actions 不斷新增新功能,例如對 Weights & Biases(wandb)的支援,顯示了其強大的擴充套件能力。