當您開始研究一個新的機器學習問題時,我猜您首先會使用的環境便是 notebook。也許您喜歡在本地環境中運行 Jupyter、使用 Kaggle Kernel,或者我個人比較喜歡使用的 Colab。有了這些工具,創建并進行機器學習實驗變得越來越便利。盡管在 notebooks 中進行實驗時一切順利,但在您將實驗提升到生產環境時,很容易碰壁。突然間,您的關注點不再只是追求準確度上的高分。
如果您有長時間運行的作業,如進行分布式訓練或是托管一個在線預測模型,這時該怎么辦?亦或您的用例需要有關安全性和數據隱私的更細粒度的權限,您的數據在使用期間會是怎樣的?您將如何處理代碼更改,或者如何隨著時間推移監控模型的表現?
要打造生產級應用或訓練大型模型,您需要額外的工具來幫您實現擴縮,而不僅僅是在 notebook 中編寫代碼。使用云服務提供商可以幫助解決這個問題,但這一過程可能會讓人感到有點望而生畏。如果瀏覽一下 Google Cloud 產品的完整列表,您可能完全不知道該從何入手。
因此,為了讓您的旅程更輕松,我將向您介紹從實驗性 notebook 代碼到云中部署模型的快速路徑。
您可以在此處獲取本示例中使用的代碼。此 notebook 在 TF Flowers 數據集上訓練了一個圖像分類模型。您將看到如何在云中部署該模型,并通過 REST 端點獲取對新花卉圖像的預測。
請注意,為了遵循此教程進行實驗,您需要有一個啟用計費功能的 Google Cloud 項目。如果您以前從未使用過 Google Cloud,可以按照此處的說明設置一個項目,并免費獲得 300 美元贈金以進行實驗。
以下是您需要采取的 5 個步驟:
1.創建一個 Vertex AI Workbench 代管式 notebook
2.上傳 .ipynb 文件
3.啟動 notebook 執行
4.部署模型
5.獲取預測
創建一個 Vertex AI Workbench 代管 notebook
要訓練和部署該模型,您將使用 Google Cloud 的代管式機器學習平臺 Vertex AI。Vertex AI 包含許多不同的產品,可以在 ML 工作流的整個生命周期中為您提供幫助。今天,您將使用其中的一些產品,讓我們先從代管式 notebook 產品 Workbench 開始。
在 Cloud Console 的“Vertex AI”部分下,選擇“Workbench”。請注意,如果這是您首次在項目中使用 Vertex AI,系統將提示您啟用 Vertex API 和 Notebooks API。因此,請務必點擊界面中的按鈕來執行此操作。
接下來,選擇“MANAGED NOTEBOOKS”,然后選擇“NEW NOTEBOOK”。
在“Advanced Settings”下,您可以通過指定機器類型和位置、添加 GPU、提供自定義容器以及啟用終端訪問來自定義 notebook。目前,請保留默認設置,只需為 notebook 命名即可。然后點擊“CREATE”。
當 OPEN JUPYTERLAB 文本變為藍色時,表示您的 notebook 已準備就緒。首次打開 notebook 時,系統會提示您進行身份驗證,您可以按照界面中的步驟操作。
打開 JupyterLab 實例后,您會看到幾種不同的 notebook 選項。Vertex AI Workbench 提供了不同的內核(TensorFlow、R、XGBoost 等),這些內核是預安裝了通用數據科學庫的代管式環境。如果您需要向內核中添加其他庫,和在 Colab 中一樣,您可以在 notebook 單元中使用 pip install。
第 1 步已完成!您已經創建了代管式 JupyterLab 環境。
上傳 .ipynb 文件
現在,將 TensorFlow 代碼放入 Google Cloud 中。如果您一直在使用不同的環境(Colab、本地等),則可以將任何需要的代碼工件上傳到您的 Vertex AI Workbench 代管式 notebook,甚至可以與 GitHub 集成。在未來,您可以直接在 Workbench 中完成所有的開發工作,但現在讓我們假設您一直在使用 Colab。
Colab notebooks 可以導出為 .ipynb 文件。
您可以點擊“上傳文件”圖標,將文件上傳到 Workbench。
當您在 Workbench 中打開此 notebook 時,系統會提示您選擇內核,即 notebook 的運行環境。有幾種不同的內核可供選擇,但由于此代碼示例使用 TensorFlow,因此需要選擇 TensorFlow 2 內核。
選擇內核后,在 notebook 中執行的任何單元都將在此代管式 TensorFlow 環境中運行。例如,如果執行導入單元,則可以導入 TensorFlow、TensorFlow Datasets 和 NumPy。這是因為所有這些庫都包含在 Vertex AI Workbench TensorFlow 2 內核中。當然,由于 XGBoost 內核中沒有安裝 TensorFlow,如果您嘗試在該內核中執行相同的 notebook 單元,則會看到一條錯誤消息。
啟動 notebook 執行
雖然我們可以手動運行其余的 notebook 單元,但對于需要長時間訓練的模型而言,notebook 并不總是最方便的選擇。如果使用 ML 構建應用,通常來說您需要對模型進行多次訓練。隨著時間的推移,您會想要重新訓練模型,以確保其保持實時更新,并不斷產生有價值的結果。
如果您要開始處理一個新的機器學習問題,手動執行 notebook 單元可能是不錯的選擇。但是,如果您想要大規模進行自動化實驗,或者為生產應用重新訓練模型,代管式 ML 訓練選項將大大簡化您的工作。
啟動訓練作業最快的方法是使用 notebook 執行功能,該功能將在 Vertex AI 代管式訓練服務上逐個運行 notebook 單元。
notebook 執行功能
啟動訓練作業后,它將在作業完成后您無法訪問的機器上運行。因此,您不希望將 TensorFlow 模型工件保存到本地路徑。您想要將其保存到 Google Cloud 的對象存儲空間 Cloud Storage 中,以便您可在其中存儲圖像、csv 文件、txt 文件和保存的模型工件。幾乎包括任何類型的內容。
Cloud Storage 涉及“存儲分區”的概念,它用于存放數據。您可以通過界面創建存儲分區。Cloud Storage 中存儲的所有內容都必須包含在存儲分區中。在存儲分區中,您可以創建文件夾來組織數據。
通過界面創建存儲分區
Cloud Storage 中的每個文件都有一個路徑,就像本地文件系統上的文件一樣,只是 Cloud Storage 路徑始終以gs:// 開頭
您需要更新訓練代碼,以便將內容保存到 Cloud Storage 存儲分區而非本地路徑中。
例如,在這里,我從 model.save('model_ouput"). 更新了 notebook 的最后一個單元,將工件保存到我在項目中創建的名為 nikita-flower-demo-bucket 的存儲分區中,而不是保存到本地。
現在,我們可以啟動執行了。
選擇“Execute”按鈕,為您的執行命名,然后添加 GPU。在“環境”下方,選擇 TensorFlow 2.7 GPU 映像。該容器預安裝了 TensorFlow 和許多其他數據科學庫。
然后,點擊“SUBMIT”。
您可以在“EXECUTIONS”標簽頁中跟蹤訓練作業的狀態。作業完成后,您可以在“VIEW RESULT”下查看 notebook 和每個單元的輸出,它們存儲在 GCS 存儲分區中。這意味著,您始終可以將模型運行與執行的代碼關聯在一起。
訓練完成后,您將能夠在存儲分區中看到 TensorFlow 保存的模型工件。
部署到端點
現在,您已經了解到如何在 Google Cloud 上快速啟動無服務器訓練作業。但 ML 不僅僅只是用于訓練。如果我們不使用模型來實際完成一些任務,那么所有這些工作有什么意義呢?
就像訓練一樣,我們可以通過調用 model.predict 直接從 notebook 執行預測。但是,如果我們想要獲取對大量數據的預測,或在運行中獲取低延遲預測,則需要比 notebook 更強大的工具。
讓我們回到 Vertex AI Workbench 代管式 notebook。您可以將下面的代碼粘貼到一個單元中,該單元會使用 Vertex AI Python SDK 將您剛剛訓練的模型部署到 Vertex AI Prediction 服務。將模型部署到端點會將保存的模型工件與物理資源相關聯,從而確保低延遲預測。
首先,導入 Vertex AI Python SDK。
Vertex AI Python SDK
然后,將您的模型上傳到 Vertex AI Model Registry。您需要為模型命名,并提供一個用于傳送的容器映像,這是將用于運行您的預測的環境。Vertex AI 提供了用于傳送的預構建容器,在本例中,我們使用的是 TensorFlow 2.8 映像。
Vertex AI Model Registry
預構建容器
您還需要將 artifact_uri 替換為存儲保存的模型工件的存儲分區路徑。對我來說,該路徑是“nikita-flower-demo-bucket”。您還需要將 project 替換為您的項目 ID。
然后,將模型部署到端點。我目前使用的是默認值,但如果您想詳細了解流量分配和自動擴縮,請務必查看相關文檔。請注意,如果您的用例不需要低延遲預測,則無需將模型部署到端點,而是可以使用批量預測功能。
流量分配
自動擴縮
批量預測功能
![](https://file.elecfans.com/web2/M00/51/94/poYBAGLKhQKAfZMAAABQ5CLRUBs073.jpg)
部署完成后,您可以在控制臺中看到您的模型和端點。
獲取預測
現在,該模型已部署到端點,您可以像使用任何其他 REST 端點一樣使用它。也就是說,您可以將模型集成到下游應用中并獲取預測。
現在,我們直接在 Workbench 中測試該模型。
首先,打開一個新的 TensorFlow notebook。
在此 notebook 中,導入 Vertex AI Python SDK。
然后,創建端點,替換 project_number 和 endpoit_id。
您可以在 Cloud Console 的“Endpoints”部分找到端點 ID。
您可以在控制臺首頁找到項目編號。注意,該編號與項目 ID 不同。
當您向在線預測服務器發送請求時,HTTP 服務器會接收該請求。HTTP 服務器會從 HTTP 請求內容正文中提取預測請求。提取的預測請求會被轉發到傳送函數。在線預測的基本格式是數據實例列表。此類列表可以是普通的值列表,也可以是 JSON 對象成員,具體取決于您如何在訓練應用中配置輸入。
為了測試端點,我首先將一張花卉圖像上傳到 Workbench 實例。
下面的代碼使用 PIL 打開圖像并調整其大小,然后將其轉換為 NumPy 數組。
接下來,我們將 NumPy 數據轉換為 float32 類型和列表。我們將其轉換為列表,是由于 NumPy 數據不支持 JSON 序列化,因此我們不能在請求的正文中發送這些數據。請注意,不需要將數據擴縮 255,因為該步驟已通過 tf.keras.layers.Rescaling(1./255). 包含在我們的模型架構中。為了避免調整圖像的大小,可以將 tf.keras.layers.Resizing 添加到模型中,而不是將其作為 tf.data 流水線的一部分。
然后,調用 predict
所得到的結果是模型的輸出,這是一個包含 5 個單元的 softmax 層。看起來索引 2 的類(郁金香)得分最高。
提示:為了節省成本,如果您不打算使用端點,請務必取消部署端點!要取消部署,轉到控制臺的“Endpoints”部分,選擇端點,然后選擇“Undeploy model form endpoint”選項。如果需要,您可以隨時在未來重新部署。
在更加實際的例子中,您可能希望直接將圖像發送到端點,而不是先將其加載到 NumPy 中。如果您想查看相關示例,可以參閱此 notebook 。
開始您的探索吧!
現在您已了解到如何從 notebook 實驗過渡到云中部署。有了這一框架,您可以開始思考如何使用 notebooks 和 Vertex AI 構建新的 ML 應用啦。
審核編輯:劉清
-
gpu
+關注
關注
28文章
4786瀏覽量
129411 -
Notebook
+關注
關注
0文章
19瀏覽量
8618 -
REST
+關注
關注
0文章
33瀏覽量
9451
原文標題:從 notebook 到部署模型的 5 個步驟
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
dsm hyper v,在Hyper-V中部署DSM的步驟
![dsm hyper v,在Hyper-V<b class='flag-5'>中部署</b>DSM的步驟](https://file1.elecfans.com/web3/M00/07/30/wKgZPGejEiKAHBsIAABGug_nNGA465.png)
先進電動汽車的電壓轉換策略 在48V電動汽車供電網絡中部署區域架構
![先進電動汽車的電壓轉換策略 在48V電動汽車供電網絡<b class='flag-5'>中部署</b>區域架構](https://file1.elecfans.com/web3/M00/07/18/wKgZO2eTAXaAf1j_AAAUSSM9VtM311.jpg)
EE-130:從ADSP-21xx快速過渡到ADSP-219x
![EE-130:<b class='flag-5'>從</b>ADSP-21xx快速<b class='flag-5'>過渡到</b>ADSP-219x](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
浪潮信息與實驗室合作部署42kW風冷算力倉
實驗室部署42kW風冷算力倉,加速AI for Science科研創新
華為云 Flexus X 實例部署安裝 Jupyter Notebook,學習 AI,機器學習算法
![華為云 Flexus X 實例<b class='flag-5'>部署</b>安裝 Jupyter <b class='flag-5'>Notebook</b>,學習 AI,機器學習算法](https://file1.elecfans.com//web3/M00/04/8B/wKgZPGd2J4SABwWpAAGTB6rKYaM050.png)
如何從零部署SD-WAN高效網絡?
如何使用Copilot提高工作效率
什么叫自動控制系統的過渡過程
如何將PSoC4000部件的設計過渡到PSoC4000T部件?
如何用加載分散法將軟件中部分變量從內部RAM轉移到外部RAM?
鴻蒙實戰開發-本地部署、SmartPerf 編譯部署指導文檔
請問cortex-M7核單片機主要應用在哪些領域?
【轉載】英特爾開發套件“哪吒”快速部署YoloV8 on Java | 開發者實戰
![【轉載】英特爾開發套件“哪吒”快速<b class='flag-5'>部署</b>YoloV8 on Java | 開發者實戰](https://file1.elecfans.com/web2/M00/04/E0/wKgZombVIV-AW0slAAEH1ZLR7Gc388.png)
評論