Vertex AI的Notebooks介紹
本文介紹 Vertex AI Notebooks,它是一個基於 Jupyter Notebook 的環境,為整個ML工作流程(從資料準備到模型部署和監控)提供一個統一的平台。涵蓋以下主題如下:
- 不同類型的 Vertex AI Notebook 及其功能
- 如何建立和管理 Vertex AI Notebook
Vertex AI Notebooks 提供:
- 基於Jupyter 的全託管、可擴展、企業級運算基礎設施
- 具有易於執行的政策和使用者管理基於可視化和代碼的與資料和分析服務的無縫集成
- 這意味著可以載入並與 AI 和資料任務共用Notebooks。
Vertex AI 提供兩種Notebook解決方案:
- Colab Enterprise
- Vertex AI Workbench
哪應該用哪一種呢?
Colab Enterprise:
- 無配置、無伺服器和協作。
- 適合不想管理compute的人。
- 適合可以全部放在單一Notebook中的project。
- 對於不想管 Git 的使用者來說很有用,內建版控和共享功能。
WorkBench
- Workbench 是基於業界標準 Jupyter Lab 建置。
- 靈活、熟悉、可自訂且開放對於資料科學家從自己的地端電腦過渡到雲端的良好選擇。
- 非常適合跨多個檔案、具有複雜依賴關係的複雜專案。
- 對 Git 的原生支援。
資料準備與探索
在資料準備和探索中,Vertex AI Jupyter notebook可促進無縫資料存取以及與 Cloud Storage 的整合,從而允許直接檢索和操作儲存在雲端中的資料集。此外,與 BigQuery、Dataproc 和 Spark 等服務的整合還簡化了資料提取、預處理和探索任務(前提是資料要先進到GCP中)。 Vertex AI Jupyter notebook預先安裝了 scikit-learn、TensorFlow 和 Pytorch 等函式庫。這使得開發人員可以直接在notebook中使用這些函式庫的功能,從而簡化開發過程。
而且,執行不同的ML模型實驗來執行超參數調整和模型評估都可以在選擇的函式庫中完成。 Vertex AI Jupyter notebook使用 Vertex AI Pipelines 簡化了模型到生產環境的部署,從而實現了部署過程的自動化並確保了訓練和生產環境之間的一致性。 Vertex AI monitor可以持續監控生產中的模型效能,提醒使用者潛在問題,並確保隨著時間的推移獲得最佳模型效能。
Colab Enterprise notebooks
如果ML專案優先考量的是協作並減少管理基礎架構所花費的時間,那麼 Colab Enterprise 是一個選擇。透過與 Duet AI 的本機整合提高工作效率。而且,借助基於 IAM 的notebooks共享、評論和共同編輯等簡單的協作功能,可以實現更高的工作效率和部署速度。 Vertex AI Colab Enterprise 元件包括:
- Notebook Editor
- Notebook storage
- Runtimes
Notebook editor可編輯和執行notebook。在notebook中,可以將代碼和rich text合併在一個檔案中。notebook由cells(一個區塊)組成,cells可以是 python 代碼,也可以是文字。當我們執行notebook cell時,系統會自動連接到執行時的 ipython kernel。該代碼由該kernel執行。 Colab Enterprise 使用 Dataform 來儲存notebook(ipynb 檔案)。 Colab Enterprise 的notebook storage提供與 Google Drive 類似的功能:版控和共用。
Runtimes是代碼運行的VM。它們有兩種類型:
- Default runtimes (或稱 pre-defined runtimes),Vertex AI 會在其中自動為每個使用者建立VM。
- templatized runtimes (或稱 long-lived runtimes)。管理員可以建立runtime templates,使用者可以使用該templates來建立新的runtimes。 這些runtimes靈活、可配置且長時間運作。如果符合以下條件,GCP建議如果要用到GPU且VM很大台並且要安裝package,就需要使用 templatized runtimes。
Vertex AI notebook的環境
我們先看第一個使用Colab enterprise。
- Notebook儲存的位置
- 可以透過選擇的筆記本操作
- Runtime的位置和模板的選擇
- notebooks editor
- 一個實際的notebook code cell
當建立新的notebook時(如上圖),使用者 ID 會自動填入。Notebook開啟時會顯示一些標準代碼:「歡迎使用 Colab Enterprise」文字單元和包含一些範例代碼的「Getting Started」部分。
我們需要先連接到Runtime,然後才能執行代碼。在此範例中,「Getting Started」下面的code cell使用 numpy 產生一些隨機資料,並使用 matplotlib 對其進行視覺化。要編輯代碼,只需按一下該cell。在backend,點擊「Create notebook」即可建立產業標準(ipynb file)。
建立Runtime instance
Runtime是從runtime templatesu衍生的instance,允許使用者執行 Colab notebook。
要建立Runtime,我們需要先建立一個runtime template(如上圖)。首先提供基本資訊,例如顯示名稱。選擇notebook所在的region、描述以及想要識別和群組範本的任何標籤。
接下來,選擇機器配置(如上圖)。我們可以使用預設值,也可以設定加速器和磁碟屬性。還可以設定閒置關機,它將在notebook在指定的時間間隔內沒動作之後關閉機器(例如,沒有運行命令或 UI 連接)。關機後,將無需支付 CPU 或 GPU 費用, 仍需支付磁碟費用。
接下來,可以選擇網路和安全性(選用的)。可以在此指定網路和安全設定。
runtime template已建立,並且顯示預設值,因為所有內容都已被接受,並且沒有任何配置是可選的。
現在我們已經連接到runtime,可以開始執行代碼。編碼的挑戰之一是沒有人能記住用特定程式語言編寫的所有代碼。因此,Colab Enterprise 提供線上代碼完成和代碼產生。只需輸入一些內容- 就像在上面這個例子中的df =,它是將資料帶入Pandas dataframe的代碼的開頭(本質上,我們正在連接到儲存資料的位置,並且希望將其帶入notebook) 。
Duet AI 會為您提供完整的statement。然後只需修改它即可顯示資料集的路徑。隨著它逐漸了解我們輸入內容的上下文,它會變得越來越好。
軟體開發最重要的特性之一是追蹤版本歷程的能力。上圖顯示了修訂歷程。
- 表示修訂歷史記錄是從「Action」選單中選擇的。
- 當選擇修訂歷史記錄時,可以並排看到帶有日期戳記和顏色編碼的更改,以紅色表示“舊”,以綠色表示“新”。
- 查看修訂歷史的三個選項:raw source、inline difference或source output。
軟體開發的另一個重要需求是能夠notebook共享和代碼協作。準備好共享後
- 必須從notebook的操作選單中選擇「share」(如上圖)。當選擇「share」時,將出現一個共用權限窗口
- 可以編輯或刪除權限,或選擇「Add Principal」來授予新的存取權限。當授予Principal存取資源的權限時,也可以新增role來指定principal可以採取的動作。
- 或者,可以新增條件,以便僅在滿足特定條件時才授予principal存取權限。 Principal是使用者、群組、網域或service account。角色由一組權限組成,決定Principal可以用該資源做什麼。
Vertex AI的Workbench instances
當我們使用 GitHub 時,Vertex AI Workbench Instance 提供協作環境和版本控制。 Github 是一個基於 Web 的介面,使用者可以在其中協作代碼專案、管理和儲存程式碼、審查和討論變更以及追蹤代碼隨時間的變化。
Vertex AI Workbench Instances 隨附一組預先安裝的深度學習包,包括對 TensorFlow 和 PyTorch 框架的支援。使用 Vertex AI Workbench instance,可以儲存 ML 模型、特徵和訓練集並執行 ML 應用程式。而且,與 Colab Enterprise 一樣,Vertex AI Workbench Instances 有一個 notebook editor 與notebook storage。
Vertex AI Workbench Instances 提供一系列客製化選項,以滿足資料科學家和ML從業者的多樣化需求。這些自訂選項可讓使用者根據他們的特定工作流程、偏好和專案要求自訂他們的workspace。
例如,Vertex AI Workbench Instances 讓我們可以最大程度地控制 Jupyter notebook環境(如上圖)。建立instance時,選擇進階選項以完全自訂notebook環境。使用進階選項建立new insatnce有七個步驟。
第一步,配置instance詳細資料(如上圖)。在詳細資料視窗中,可以為instance指定名稱,選擇可以執行資源的特定地理位置,並啟用對 Dataproc kernel的存取。 Dataproc 是一種完全託管的雲端服務,用於在 GCP上執行大數據處理、分析和機器學習工作負載。可以新增key and value pair labels來識別instance,並將標籤指派給network Vertex AI Workbench Instances 資源。
第二步,配置instance環境。所有環境預設使用 JupyterLab 3,並安裝最新的 NVIDIA GPU 和 Intel 函式庫和驅動程式。但也可以指定先前的版本。也可以為環境新增metadata。
在步驟3中,選擇機器類型。機器類型決定了機器的規格,例如notebook的記憶體量、虛擬核心和磁碟限制。如果需要 GPU,確保選擇的機器類型支援 GPU。 Shielded VM 可驗證 Compute Engine VM instance的完整性,因此可以確認instance沒有受到啟動或核心級惡意軟體或 rootkit 的攻擊。作為最佳實踐,請選擇啟用閒置關機。notebook在指定的時間間隔內處於不活動狀態後,機器將關閉,例如,沒有執行命令或 UI 連線。關機後 CPU 或 GPU 將不會收費,仍需支付磁碟費用。
第四步,選擇data disk type。data disk type指的是儲存空間。對於 persistent disk來說,儲存空間要便宜得多。在雲端運算中, persistent disk是即使VM instance關閉或終止後仍能保留資料的儲存類型。 persistent disk通常用於儲存需要保存的關鍵數據,例如作業系統檔案、應用程式資料和使用者檔案。
選單中還提供其他磁碟類型,例如 SSD ,它們比 persistent disk提供更高的效能和更低的延遲,更適合串流吞吐量。 persistent disk效能與 persistent disk volume的大小相關。可以選擇資料磁碟大小(以GB為單位)。雲端安全中的加密是將資料轉換為不可讀格式(稱為密文)的過程,以防止未經授權的存取。此instance需要網路存取才能使用。
第五步,選擇網路值。請確保選擇以下之一:
- 指派外部 IP 位址,選擇可以存取的網路
- 或開啟Private Google Access。私人 Google Access 還允許存取 App Engine 使用的外部 IP 位址,包括基於第三方 App Engine 的服務。
IAM和安全性決定了誰可以使用instance的 JupyterLab 介面。instance建立後無法變更。
第六步,選擇IAM和安全選項。指定具有特定service account的任何人都可以存取instance account或限制為單一使用者存取。或者,使用預設的 Compute Engine service account。有四個安全選項,允許使用者下載notebook或提供終端訪問,從而允許使用者從 JupyterLab 運行 shell 命令。
在步驟 7 中,配置系統健康。如果instance正在運行,可以選擇環境自動升級來自動升級instance。在Reporting選項中,可以選擇回報系統健康狀況,以驗證核心服務的狀態。也可以選擇將自訂指標回報給 Cloud Monitoring,以收集系統狀態和 JupyterLab 指標。選擇安裝Cloud Monitoring將回報系統和應用程式指標,例如磁碟、CPU、網路和process指標。最後,您可以報告所需 Google 網域的 DNS狀態。這將驗證網域的 DNS 狀態以進行代理註冊和狀態事件報告(proxy registration and status event reporting)。