Hello 自訂訓練:透過自訂圖片分類模型提供預測結果

本頁面將逐步說明如何透過圖片分類模型提供預測結果,並在網頁應用程式中查看這些預測結果。

本教學課程包含多個頁面:

  1. 設定專案和環境。

  2. 訓練自訂圖片分類模型。

  3. 透過自訂圖片分類模型提供預測結果。

  4. 清除專案所用資源。

各頁面都假設您已按照本教學課程先前頁面的指示操作。

本文的其餘部分假設您使用的是在本教學課程第一頁中建立的 Cloud Shell 環境。如果原始 Cloud Shell 工作階段已關閉,請按照下列步驟返回環境:

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  2. 在 Cloud Shell 工作階段中,執行下列指令:

    cd hello-custom-sample
  3. 建立端點

    如要從您在上一頁訓練的機器學習模型取得線上預測結果,請建立 Vertex AI 端點。端點會透過一或多個模型提供線上預測。

    1. 在 Google Cloud 控制台的 Vertex AI 專區,前往「Models」頁面。

      前往「模型」

    2. 本教學課程的先前步驟中,找出您訓練的模型所在的資料列 hello_custom,然後點選模型名稱,開啟模型詳細資料頁面。

    3. 在「部署及測試」分頁中,按一下「部署至端點」,開啟「部署至端點」窗格。

    4. 在「定義端點」步驟中,為端點新增一些基本資訊:

      1. 選取「建立新端點」

      2. 在「Endpoint name」(端點名稱) 欄位中輸入 hello_custom

      3. 在「模型設定」部分,確認您看到模型名稱 (也稱為 hello_custom)。指定下列模型設定:

        1. 在「Traffic split」(流量分配) 欄位中,輸入 100。Vertex AI 支援將端點流量分配給多個模型,但本教學課程不會使用這項功能。

        2. 在「運算節點數量下限」欄位中輸入 1

        3. 在「Machine type」(機器類型) 下拉式清單中,選取「Standard」(標準) 部分中的「n1-standard-2」

        4. 按一下 [完成]

      4. 在「記錄」部分,確認已啟用兩種預測記錄類型。

      按一下「繼續」

    5. 在「端點詳細資料」步驟中,確認端點將部署至 us-central1 (Iowa)

      請勿選取「使用客戶自行管理的加密金鑰 (CMEK)」核取方塊。 本教學課程不會使用 CMEK

    6. 按一下「部署」,建立端點並將模型部署至端點。

    幾分鐘後,「端點」表格中新端點旁邊會顯示 。同時,您也會收到電子郵件,指出您已成功建立端點,並將模型部署至端點。

    部署 Cloud Run 函式

    您可以向 Vertex AI API 的 REST 介面傳送要求,從剛建立的 Vertex AI 端點取得預測結果。不過,只有具備aiplatform.endpoints.predict權限的主體才能傳送線上預測要求。您無法將端點設為公開,供任何人傳送要求,例如透過網頁應用程式。

    在本節中,請將程式碼部署至 Cloud Run 函式,以處理未經驗證的要求。您在閱讀本教學課程的第一頁時下載的範例程式碼,包含 function/ 目錄中這個 Cloud Run 函式的程式碼。您也可以執行下列指令,探索 Cloud Run 函式程式碼:

    less function/main.py 

    部署函式有下列用途:

  • 可以設定 Cloud Run 函式來接收未經驗證的請求。此外,函式預設會使用具備「編輯者」角色的服務帳戶執行,這類帳戶包含 aiplatform.endpoints.predict 權限,可從 Vertex AI 端點取得預測結果。

  • 這項函式也會對要求執行實用的前置處理作業。Vertex AI 端點預期使用已訓練的 TensorFlow Keras 圖形第一層的格式來提供預測要求:具有固定維度的正規化浮點數張量。函式會將圖片網址視為輸入內容,並在要求 Vertex AI 端點的預測之前,將圖片預先處理為這個格式。

如要部署 Cloud Run 函式,請按照下列步驟操作:

  1. 在 Google Cloud 控制台的 Vertex AI 專區中,前往「Endpoints」頁面。

    前往 Endpoints

  2. 找出您在前一節建立的端點列,名稱為 hello_custom。在這一列中,按一下「Sample request」(範例要求),開啟「Sample request」(範例要求) 窗格。

  3. 在「Sample request」(範例要求) 窗格中,找出符合下列模式的殼層程式碼行:

    ENDPOINT_ID="ENDPOINT_ID"

    ENDPOINT_ID 是識別這個特定端點的數字。

    複製這行程式碼,並在 Cloud Shell 工作階段中執行,設定 ENDPOINT_ID 變數。

  4. 在 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 中託管靜態網頁應用程式,透過訓練後的 ML 模型取得預測結果。網路應用程式會將要求傳送至 Cloud Run 函式,後者會預先處理要求,並從 Vertex AI 端點取得預測結果。

您下載的範例程式碼 webapp 目錄包含範例網頁應用程式。在 Cloud Shell 工作階段中,執行下列指令來準備及部署網頁應用程式:

  1. 設定幾個殼層變數,供後續步驟中的指令使用:

    PROJECT_ID=PROJECT_ID BUCKET_NAME=BUCKET_NAME 

    更改下列內容:

  2. 編輯應用程式,提供 Cloud Run 函式的觸發網址:

    echo "export const CLOUD_FUNCTION_URL = 'https://us-central1-${PROJECT_ID}.cloudfunctions.net/classify_flower';" \   > webapp/function-url.js 
  3. webapp 目錄上傳至 Cloud Storage bucket:

    gcloud storage cp webapp gs://${BUCKET_NAME}/ --recursive 
  4. 將剛剛上傳的網頁應用程式檔案設為可公開讀取

    gcloud storage objects update gs://${BUCKET_NAME}/webapp/** --add-acl-grant=entity=allUsers,role=READER 
  5. 您現在可以前往下列網址,開啟網頁應用程式並取得預測結果:

     https://storage.googleapis.com/BUCKET_NAME/webapp/index.html 

    開啟網頁應用程式並按一下花卉圖片,即可查看機器學習模型的花卉類型分類。網頁應用程式會以花朵類型清單的形式呈現預測結果,以及這張圖片包含各個花朵類型的機率。

在下列螢幕截圖中,網路應用程式已取得一項預測結果,並正在傳送另一項預測要求。

網頁應用程式,顯示四張已加上標籤的花卉圖片。其中一個下方顯示預測標籤的機率。另一個則下方有載入列。

後續步驟

請按照教學課程的最後一頁,清除您建立的資源。