本頁面將逐步說明如何透過圖像分類模型提供預測,並在網頁應用程式中查看這些預測。
本教學課程包含多個頁面:提供自訂圖片分類模型的預測結果。
每個頁面都假設您已執行本教學課程前幾頁的操作說明。
本文件其餘部分假設您使用的是按照本教學課程第一頁建立的相同 Cloud Shell 環境。如果原本的 Cloud Shell 工作階段已關閉,您可以按照下列步驟返回環境:-
在 Cloud de Confiance 控制台啟用 Cloud Shell。
-
在 Cloud Shell 工作階段中,執行下列指令:
cd hello-custom-sample
建立端點
如要從您在按照本教學課程上一頁操作時訓練的機器學習模型取得線上預測,請建立 Agent Platform 端點。端點會透過一或多個模型提供線上預測。
前往 Cloud de Confiance 控制台「Agent Platform」部分的「Models」(模型) 頁面。
找到您在本教學課程上一個步驟中訓練的模型
hello_custom所在的資料列,然後點選模型名稱,開啟模型詳細資料頁面。在「Deploy & test」(部署及測試) 分頁中,點選「Deploy to endpoint」(部署至端點),開啟「Deploy to endpoint」(部署至端點) 窗格。
在「Define your endpoint」(定義端點) 步驟中,新增端點的一些基本資訊:
選取「建立新端點」。
在「Endpoint name」(端點名稱) 欄位中輸入
hello_custom。在「Model settings」(模型設定) 部分,確認您看到模型名稱,也就是
hello_custom。指定下列模型設定:在「Traffic split」(流量分配) 欄位中輸入
100。Agent Platform 支援將端點流量拆分至多個模型,但本教學課程不會使用這項功能。在「Minimum number of compute nodes」(運算節點數量下限) 欄位中,輸入
1。在「Machine type」(機器類型) 下拉式選單中,選取「Standard」(標準) 區段中的「n1-standard-2」。
按一下「完成」。
在「Logging」(記錄) 部分,確認兩種預測記錄功能皆已啟用。
按一下「繼續」。
在「Endpoint details」(端點詳細資料) 步驟中,確認端點會部署至
us-central1 (Iowa)。請勿勾選「使用客戶自行管理的加密金鑰 (CMEK)」核取方塊。本教學課程不會使用 CMEK。
按一下「Deploy」(部署),建立端點並將模型部署至端點。
幾分鐘後,「Endpoints」(端點) 表格中的新端點旁會顯示 。同時,您也會收到一封電子郵件,指出您已成功建立端點,並將模型部署至端點。
部署 Cloud Run 函式
您可以向 Agent Platform API 的 REST 介面傳送要求,從剛建立的 Agent Platform 端點取得預測結果。不過,只有具備 aiplatform.endpoints.predict 權限的主體才能傳送線上預測要求。您不得將端點設為公開,讓任何人都能傳送要求 (例如透過網頁應用程式)。
在本節中,您會將程式碼部署至 Cloud Run functions,以處理未經驗證的要求。您在閱讀本教學課程第一頁時下載的程式碼範例,包含 function/ 目錄中這個 Cloud Run 函式的程式碼。您也可以視需要執行下列指令,探索 Cloud Run 函式程式碼:
less function/main.py
部署函式有以下用途:
您可以設定 Cloud Run 函式,接收未經驗證的要求。此外,函式預設會使用具備編輯者角色的服務帳戶執行,其中包含從 Agent Platform 端點取得預測所需的
aiplatform.endpoints.predict權限。這項函式也會對要求執行實用的預先處理作業。Agent Platform 端點預期使用已訓練的 TensorFlow Keras 圖形第一層的格式來提供預測要求:具有固定維度的正規化浮點數張量。這個函式會將圖片網址視為輸入內容,並在處理前將圖片預先處理為這個格式,然後向 Agent Platform 端點要求預測。
如要部署 Cloud Run 函式,請按照下列步驟操作:
前往 Cloud de Confiance 控制台「Agent Platform」(代理平台) 專區的「Endpoints」(端點) 頁面。
找到您在上一節建立的端點資料列,名稱為
hello_custom。按一下該列中的「Sample request」(範例要求),開啟「Sample request」(範例要求) 窗格。在「Sample request」(要求範例) 窗格中,找出符合下列模式的殼層程式碼行:
ENDPOINT_ID="ENDPOINT_ID"
ENDPOINT_ID 是用來識別這個特定端點的數字。
複製這行程式碼,並在 Cloud Shell 工作階段中執行,設定
ENDPOINT_ID變數。在 Cloud Shell 工作階段執行下列指令,部署 Cloud Run 函式:
gcloud functions deploy classify_flower \ --region=us-central1 \ --source=function \ --runtime=python37 \ --memory=2048MB \ --trigger-http \ --allow-unauthenticated \ --set-env-vars=ENDPOINT_ID=${ENDPOINT_ID}
部署網頁應用程式來傳送預測要求
最後,在 Cloud Storage 託管靜態網頁應用程式,透過訓練後的機器學習模型取得預測結果。網頁應用程式會將要求傳送至 Cloud Run 函式,函式會預先處理要求,並從 Agent Platform 端點取得預測結果。
您下載的程式碼範例 webapp 目錄中包含範例網頁應用程式。請在 Cloud Shell 工作階段中執行下列指令,準備及部署網頁應用程式:
為後續步驟中的指令設定幾個殼層變數:
PROJECT_ID=PROJECT_ID BUCKET_NAME=BUCKET_NAME更改下列內容:
編輯應用程式,提供 Cloud Run 函式的觸發網址:
echo "export const CLOUD_FUNCTION_URL = 'https://us-central1-${PROJECT_ID}.cloudfunctions.net/classify_flower';" \ > webapp/function-url.js將
webapp目錄上傳至 Cloud Storage bucket:gcloud storage cp webapp gs://${BUCKET_NAME}/ --recursive將剛剛上傳的網頁應用程式檔案設為可公開讀取:
gcloud storage objects update gs://${BUCKET_NAME}/webapp/** --add-acl-grant=entity=allUsers,role=READER您現在可以前往下列網址,開啟網頁應用程式並取得預測結果:
https://storage.googleapis.com/BUCKET_NAME/webapp/index.html
開啟網頁應用程式並按一下花卉圖片,即可查看機器學習模型的花卉類型分類。網頁應用程式會以花朵類型清單的形式呈現預測結果,以及這張圖片包含各個花朵類型的機率。
在下方的螢幕截圖中,網頁應用程式已取得一項預測結果,並正在傳送另一項預測要求。
後續步驟
按照教學課程最後一頁的指示,清除已建立的資源。