部署模型

本頁面說明如何將模型部署到 AI Platform 以取得預測資料。

如要將經過訓練的模型部署至 AI Platform,您必須:

  • 將儲存的模型上傳至 Cloud Storage 值區。
  • 建立 AI Platform 模型資源
  • 建立 AI Platform 版本資源,然後為已儲存的模型指定 Cloud Storage 路徑。

事前準備

模型訓練完成後,您必須先調整一些重要設定,才能將模型部署至 AI Platform 以用於預測服務。

如果您已選擇使用自訂預測處理常式 (Beta 版),請參閱自訂預測處理常式指南,以瞭解您必須上傳至 Cloud Storage 的其他成果和程式碼,以及建立版本時必須指定的其他參數。

將模型儲存在 Cloud Storage 中

一般而言,最簡單的方法就是在用於 AI Platform 的專案中使用專屬的 Cloud Storage 值區。

如果您使用的值區位於不同專案,則必須確定您的 AI Platform 服務帳戶可以存取 Cloud Storage 中的模型。如果沒有適當的權限,建立 AI Platform 模型版本的要求將會失敗。詳情請參閱授予儲存空間權限的說明。

設定 Cloud Storage 值區

本節說明如何建立新值區。您可以使用現有值區,但如果該值區並不屬於用來執行 AI Platform 的專案,就必須明確將值區的存取權授予這些 AI Platform 服務帳戶

  1. 指定新值區的名稱。Cloud Storage 中所有值區的名稱皆不得重複。

    BUCKET_NAME="your_bucket_name"

    例如,使用您的專案名稱,並在後面附加 -mlengine

    PROJECT_ID=$(gcloud config list project --format "value(core.project)")
    BUCKET_NAME=${PROJECT_ID}-mlengine
  2. 檢查您建立的值區名稱。

    echo $BUCKET_NAME
  3. 選取值區的地區,然後設定 REGION 環境變數。

    例如,下列程式碼會建立 REGION 並設為 us-central1

    REGION=us-central1
  4. 建立新值區:

    gsutil mb -l $REGION gs://$BUCKET_NAME

    附註:使用的地區必須與您預計要執行 AI Platform 工作的地區相同。本範例使用 us-central1,因為這是入門指南操作說明中所使用的地區。

將匯出的模型上傳至 Cloud Storage

執行以下指令,以將儲存的模型上傳至 Cloud Storage 中的值區:

SAVED_MODEL_DIR=$(ls ./your-export-dir-base | tail -1)
gsutil cp -r $SAVED_MODEL_DIR gs://your-bucket

當您tf.keras 或是從 TensorFlow Estimator 匯出 SavedModel 時,系統即會針對您選擇的基本匯出目錄,將其儲存為加上時間戳記的子目錄,例如 your-export-dir-base/1487877383942。本範例說明如何上傳具有最新時間戳記的目錄。如果您透過不同的方式建立 SavedModel,則可能位於本機檔案系統上的不同位置。

如果您正在部署自訂預測處理常式 (Beta 版),請將所有模型成果上傳至 Cloud Storage 值區的模型目錄。

當您建立模型的後續版本時,請將每個版本分別放入 Cloud Storage 值區的專屬目錄以便管理。

上傳自訂程式碼

如果您正在部署自訂預測處理常式,則必須一併上傳包含自訂程式碼的來源發行版本套件。例如:

gsutil cp dist/my_custom_code-0.1.tar.gz gs://your-bucket/my_custom_code-0.1.tar.gz

您可以將此 tarball 上傳至 Cloud Storage 中與模型檔案相同的目錄,但不一定要這樣做。事實上,將兩者分開放置可能更有利於管理,尤其是當您部署多個版本的模型和程式碼時。

使用本機預測來測試模型

您可以使用 gcloud 部署模型以進行本機預測。這個選用步驟可在您將模型部署至 AI Platform 之前,對模型執行例行性檢查,協助您節省時間。使用您上傳至 Cloud Storage 的模型檔案,就可以在本機執行線上預測,並預覽 AI Platform 預測伺服器將傳回的結果。

使用本機預測功能和一小部分測試資料來偵錯,找出訓練和提供特徵之間是否有不一致。舉例來說,如果隨著預測要求傳送的資料與模型預期的資料不符,您可以在雲端線上預測要求產生費用之前發現這個情形。

請參閱使用 gcloud ai-platform local predict 的相關詳情。

  1. 為包含您的模型 (「gs://your-bucket/」)、架構和輸入檔案名稱的 Cloud Storage 目錄設定環境變數 (如果尚未設定):

    MODEL_DIR="gs://your-bucket/"
    INPUT_FILE="input.json"
    FRAMEWORK="TENSORFLOW"
    
  2. 傳送預測要求:

    gcloud ai-platform local predict --model-dir=$MODEL_DIR \
        --json-instances $INPUT_FILE \
        --framework $FRAMEWORK
    

部署模型和版本

AI Platform 使用「模型」和「版本」資源來組織經過訓練的模型。在 AI Platform 中,模型是指存放機器學習模型各個版本的容器。

如要部署模型,請在 AI Platform 中建立模型資源、建立該模型的版本,然後將模型版本連結到儲存在 Cloud Storage 中的模型檔案。

建立模型資源

AI Platform 使用模型資源來整理不同版本的模型。

主控台

  1. 在 GCP 主控台中開啟 AI Platform「models」(模型) 頁面:

    在 GCP 主控台中開啟「models」(模型)

  2. 視需求建立要加入新版本的模型:

    1. 按一下「Models」(模型) 頁面頂端的 [New Model] (新增模型) 按鈕。這會將您導向至「建立模型」頁面。

    2. 在「Model name」(模型名稱) 方塊中,為您的模型輸入不重複的名稱。您也可以在「Description」(說明) 欄位中輸入模型的說明。

    3. 按一下 [Create] (建立)。

    4. 確認您已返回「Models」(模型) 頁面,且您的新模型出現在清單中。

gcloud

為您的模型版本建立模型資源,並填入您想要的模型名稱 (不使用括號):

    gcloud ai-platform models create "[YOUR-MODEL-NAME]"

REST API

  1. 模型物件放在要求主體中,以格式化要求。您至少必須指定模型名稱。填入您偏好的模型名稱 (不使用括號):

      {"name": "[YOUR-MODEL-NAME]" }
    
  2. 對下列路徑進行 REST API 呼叫,將 [VALUES_IN_BRACKETS] 取代為適當的值:

      POST https://ml.googleapis.com/v1/projects/[YOUR-PROJECT-ID]/models/
    

    舉例來說,您可以使用 cURL 發出以下要求:

      curl -X POST -H "Content-Type: application/json" \
        -d '{"name": "[YOUR-MODEL-NAME]"}' \
        -H "Authorization: Bearer `gcloud auth print-access-token`" \
        "https://ml.googleapis.com/v1/projects/[YOUR-PROJECT-ID]/models"
    

    畫面會顯示類似以下的輸出:

      {
        "name": "projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]",
        "regions": [
          "us-central1"
        ]
      }
    

更多詳細資訊請參閱 AI Platform 模型 API

建立模型版本

現在您已經準備好使用訓練過並上傳至 Cloud Storage 的模型來建立模型版本。建立版本時,請指定下列參數:

  • name:不能與 AI Platform 模型中的其他名稱重複。
  • deploymentUri:Cloud Storage 中 SavedModel 目錄的路徑,通常是加上時間戳記的目錄,例如 gs://your_bucket_name/job_20190321/export/1553208972357/

    如果您正在部署自訂預測處理常式,此模型目錄即包含您所有的模型成果。

  • frameworkTENSORFLOW。如果您正在部署自訂預測處理常式,請省略此參數。

  • runtimeVersion:以 TensorFlow 版本以及模型所需的其他依附元件為基礎的執行階段版本。如果您正在部署自訂預測處理常式,此項目至少必須為 1.4。

  • packageUris (選用):Cloud Storage 中自訂程式碼發行版本套件 (.tar.gz 檔案) 的路徑清單。只有在部署自訂預測處理常式 (Beta 版) 時,才需要提供此參數。

  • predictionClass (選用):採用 module_name.class_name 格式的 Predictor 類別名稱。只有在部署自訂預測處理常式 (Beta 版) 時,才需要提供此參數。

  • pythonVersion:必須設為「3.5」才能與使用 Python 3 匯出的模型檔案相容。如果未設定,系統預設為「2.7」。

請參閱版本資源適用的 AI Platform Training and Prediction API 說明以深入瞭解每個參數。

請參閱每個執行階段版本的完整詳細資料

主控台

  1. 在「Models」(模型) 頁面上,選取您要用來建立版本的模型資源名稱。這會將您導向至「模型詳細資料」頁面。

    在 GCP 主控台中開啟「models」(模型)

  2. 按一下「模型詳細資料」頁面頂端的 [新增版本] 按鈕。這會將您導向至「建立版本」頁面。

  3. 在「名稱」欄位中輸入版本名稱。您也可以在「說明」欄位中輸入版本的說明。

  4. 將下列關於如何訓練模型的資訊輸入到對應的下拉式方塊中:

    • 選取您用來訓練模型的「Python version」(Python 版本)
    • 選取「Framework」(架構) 和「Framework version」(架構版本)。
    • 選取「ML runtime version」(ML 執行階段版本)。進一步瞭解 AI Platform 執行階段版本
  5. 您也可以選取要執行線上預測的「Machine type」(機器類型)。這個欄位預設為 [Single core CPU] (單核心 CPU)。

  6. 在「Model URI」(模型 URI) 欄位中,輸入您要上傳模型檔案的 Cloud Storage 值區位置。您可以使用 [Browse] (瀏覽) 按鈕尋找正確路徑。

    請務必指定包含檔案的「目錄」路徑,而「非」模型檔案本身的路徑。 舉例來說,請使用「gs://your_bucket_name/model-dir/」,而非「gs://your_bucket_name/model-dir/model.pkl」。

  7. 為線上預測部署作業選取「Scaling」(資源調度) 選項:

    • 如果您選取 [Auto scaling] (自動調整資源配置),隨即會顯示選填的「Minimum number of nodes」(節點數量下限)欄位。您可以輸入在調降服務資源配置時,隨時保持運作狀態的節點數量下限。這個欄位預設為 0。

    • 如果您選取 [Manual scaling] (手動調整資源配置),則必須輸入您要隨時保持運作的「Number of nodes」(節點數量)。

      進一步瞭解預測費用的計費方式

  8. 如要完成模型版本建立程序,請按一下 [Save] (儲存)

gcloud

  1. 將環境變數設定為儲存路徑到包含模型二進位檔、模型名稱、版本名稱和架構選項的 Cloud Storage 目錄。

    [VALUES_IN_BRACKETS] 改成適當的值:

    MODEL_DIR="gs://your_bucket_name/"
    VERSION_NAME="[YOUR-VERSION-NAME]"
    MODEL_NAME="[YOUR-MODEL-NAME]"
    FRAMEWORK="TENSORFLOW"
    

    如果是自訂預測處理常式 (Beta 版),請省略 FRAMEWORK 變數,並使用自訂程式碼 tarball 的路徑以及 Predictor 類別的名稱來設定其他變數:

    MODEL_DIR="gs://your_bucket_name/"
    VERSION_NAME="[YOUR-VERSION-NAME]"
    MODEL_NAME="[YOUR-MODEL-NAME]"
    CUSTOM_CODE_PATH="gs://your_bucket_name/my_custom_code-0.1.tar.gz"
    PREDICTOR_CLASS="[MODULE_NAME].[CLASS_NAME]"
    
  2. 建立版本:

    gcloud ai-platform versions create $VERSION_NAME \
      --model $MODEL_NAME \
      --origin $MODEL_DIR \
      --runtime-version=1.13 \
      --framework $FRAMEWORK \
      --python-version=3.5
    

    如果是自訂預測處理常式 (Beta 版),請使用 gcloud beta 元件、省略 --framework 標記並且設定 --package-uris--prediction-class 標記:

    gcloud components install beta
    
    gcloud beta ai-platform versions create $VERSION_NAME \
      --model $MODEL_NAME \
      --origin $MODEL_DIR \
      --runtime-version=1.13 \
      --python-version=3.5
      --package-uris=$CUSTOM_CODE_PATH
      --prediction-class=$PREDICTOR_CLASS
    

    建立版本需要幾分鐘的時間。完成後,畫面會顯示以下輸出:

    Creating version (this might take a few minutes)......done.

  3. 取得新版本的相關資訊:

    gcloud ai-platform versions describe $VERSION_NAME \
      --model $MODEL_NAME
    

    畫面會顯示類似以下的輸出:

    createTime: '2018-02-28T16:30:45Z'
    deploymentUri: gs://your_bucket_name
    framework: TENSORFLOW
    machineType: mls1-highmem-1
    name: projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions/[YOUR-VERSION-NAME]
    pythonVersion: '3.5'
    runtimeVersion: '1.13'
    state: READY

REST API

  1. 設定要求主體格式以包含版本物件。以下範例指定了版本的 namedeploymentUriruntimeVersionframework。將 [VALUES_IN_BRACKETS] 取代為適當的值:

      {
        "name": "[YOUR-VERSION-NAME]",
        "deploymentUri": "gs://your_bucket_name/"
        "runtimeVersion": "1.13"
        "framework": "TENSORFLOW"
        "pythonVersion": "3.5"
      }
    
  2. 對下列路徑進行 REST API 呼叫,將 [VALUES_IN_BRACKETS] 取代為適當的值:

      POST https://ml.googleapis.com/v1/projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions
    

    舉例來說,您可以使用 cURL 發出以下要求:

        curl -X POST -H "Content-Type: application/json" \
          -d '{"name": "[YOUR-VERSION-NAME]", "deploymentUri": "gs://your_bucket_name/", "runtimeVersion": "1.13", "framework": "TENSORFLOW", "pythonVersion": "3.5"}' \
          -H "Authorization: Bearer `gcloud auth print-access-token`" \
          "https://ml.googleapis.com/v1/projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions"
    

    建立版本需要幾分鐘的時間。建立完成後,畫面會顯示類似以下的輸出內容:

      {
        "name": "projects/[YOUR-PROJECT-ID]/operations/create_[YOUR-MODEL-NAME]_[YOUR-VERSION-NAME]-[TIMESTAMP]",
        "metadata": {
          "@type": "type.googleapis.com/google.cloud.ml.v1.OperationMetadata",
          "createTime": "2018-07-07T02:51:50Z",
          "operationType": "CREATE_VERSION",
          "modelName": "projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]",
          "version": {
            "name": "projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions/[YOUR-VERSION-NAME]",
            "deploymentUri": "gs://your_bucket_name",
            "createTime": "2018-07-07T02:51:49Z",
            "runtimeVersion": "1.13",
            "framework": "TENSORFLOW",
            "machineType": "mls1-highmem-1",
            "pythonVersion": "3.5"
          }
        }
      }
    

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
TensorFlow 適用的 AI Platform