GCP的AI開發選項
GCP可以用來AI的選項或是產品有:
- 預訓練的API
(無需任何訓練) - Vertex AI
(端到端且無代碼或具代碼開發的統一平台) - AutoML
(在Vertex AI中的功能,實現low code or no code選項,自動化開發ML模型,從資料準備到模型訓練以及使用自己的訓練資料進行模型服務。) - 自訂的ML訓練
(使用 Python、Keras 和 TensorFlow 等工具手動編寫 ML 專案。)
以下為GCP 的4種ML模型訓練比較表:
其中關於訓練所要花費的時間,除了Pre-trained不用花時間其他三個選項訓練模型的時間取決於特定專案。通常,自訂訓練需要最長的時間,因為它從頭開始建立ML模型,這與 AutoML 和 BigQuery ML 不同。最佳選擇取決於
- 組織的業務需求和 ML 專業知識
- 預算(費用)
預訓練的API
這是直接使用Google的ML模型,並且在我們自己的程式去直接呼叫ML模型進行預測。GCP用API呼叫的ML模型有:語音、文字和語言。例如,自然語言 API 使用預先訓練的大型語言模型。它能識別句子的實體和情感。
而影像和視訊 API 如,Vision API 識別靜態影像中的內容,Video Intelligence API 識別影片中的動作。文件和資料 API 如,Document API 處理文字擷取和表單解析器等檔案。Conversational AI API 如,Dialogflow API 建立對話式介面。
除了上述 API 之外,GCP也提供生成式 AI API服務。 這些 API 可使用不同的基礎模型來產生各種類型的內容。包括 Gemini multimodal,以文字、圖像和影片等多種模式處理資料。文字和多模態的嵌入,將多模態資料轉換為可由 ML 模型(尤其是 Gen AI 基礎模型)處理的數值向量。
Vertex AI
簡單來說,就是GCP提供一種一站式的AI平台給予我們開發自己的ML模型,不管是從頭到尾自己寫代碼,或是只寫少量代碼。在這個服務之下,我們之需要專注模型的開發,不用去管理所有底層的基礎設施與流水線之間的銜接。例如在生產環境中我們需要自己注意環境的Scability、監控與持續整合、持續交付跟再訓練。
哪這個一站式的AI平台提供了那些?主要有兩個面向:
第一個Vertex AI 提供了一個end-to-end的ML流水線來準備資料,並隨著時間的推移大規模地建立、部署和管理模型。例如
- 在資料準備階段,使用者可以從儲存的任何位置上傳資料:cloud storage、BigQuery 或本機。
- 在特徵準備階段,使用者可以建立特徵,這些特徵是將處理後的資料放入模型中,接下來使用特徵儲存(feature store)與其他人共用。
- 訓練和超參數調整。這意味著當資料準備好後,使用者可以嘗試不同的模型並調整超參數。
- 在部署和模型監控期間,使用者可以設定流水線,透過自動監控和執行持續改進將模型轉換為生產。
第二個Vertex包含了predictive AI 與Gen AI。predictive AI可以進行銷售預測和分類,而Gen AI可以創建多模式內容。 Vertex AI 讓使用者可以使用 AutoML(no-code解決方案)或自訂訓練(自己寫代碼的解決方案)來建立 ML 模型。
而自訂訓練則可以使用Vertex AI提供的I Workbench與Colab兩種工具來完成ML專案。一個好用的功能是,資料科學家現在可以使用 Vertex AI 上的 Workbench 編寫 SQL,以無縫連接 BigQuery 和 Vertex AI。
AutoML
AutoML 代表自動化機器學習,旨在自動化”開發和部署” ML 模型的流程。開發過ML 模型會知道建立模型可能非常耗時,因為需要重複添加新資料和特徵、嘗試不同的模型並調整參數以獲得最佳結果。
AutoML分為上圖的四個階段:
- 上傳資料集後,AutoML 提供了自動化部分資料準備過程的功能。 例如,它可以將數字、日期時間、文字、類別、類別陣列(arrays of categories)和巢狀欄位(nested fields)轉換為某種資料格式,以便將其輸入到 ML 模型中。
- 搜尋最佳模型和調整參數。有兩項關鍵技術支援這種自動搜尋。第一個稱為neural architect search,它有助於搜索最佳模型並自動調整參數。 第二個稱為transfer learning,它透過使用預訓練的模型來幫助加快搜尋速度。
- 從第 2 階段組裝出最佳模型,並為第 4 階段的生產預測做好準備。模型的數量取決於訓練預算,但通常在 10 個左右。
AutoML由資料到最後的Model產生流程如下簡圖:
自訂訓練ML模型
如果想建立自己的ML環境來試驗並建立自己的流水線,則需要自訂ML訓練。在開始任何編碼之前,我們必須確定希望 ML 訓練代碼使用什麼環境。基本上有兩種選擇:
- pre-built container
- custom container
Pre-built container裡面甚麼都有了。因此,如果我們的 ML 訓練需要 Python、TensorFlow 和 PyTorch 等平台,並且並不特別關心要運行的底層基礎設施,預先建立的容器可能是好的選擇。
Custom container就是自己做image。這意味著在建立容器時必須確定環境、機器類型和磁碟等詳細資訊。就編碼 ML 模型的工具而言,可以使用 Vertex AI Workbench。 可以將 Vertex AI Workbench 視為部署在單一開發環境中的 Jupyter notebook,支援整個資料科學作業流程,從探索到訓練,再到部署ML模型。
可以使用 Colab Enterprise,它在 2023 年整合到 Vertex AI 平台中,以便資料科學家可以在熟悉的環境中進行開發。確定了工作環境之後,下一步就是開始寫代碼了。我們不用頭開始編碼。相反,您可以利用 ML 函式庫。 ML 函式庫是可用於執行ML作業的預先編寫的代碼的集合。 這些函式庫可以為開發人員提供建立ML模型所需的工具,而無需從頭開始編寫所有內容,從而節省開發人員的時間和精力。 GCP提供 TensorFlow、scikit-learn 和 PyTorch 等的 ML 函式庫。