本頁說明如何使用 Gemini Enterprise Agent Platform 將 AutoML 表格模型匯出至 Cloud Storage,將模型下載至地端部署伺服器或其他雲端服務供應商代管的伺服器,然後使用 Docker 讓模型可供預測。
如要瞭解如何匯出圖片和影片 Edge 模型,請參閱「匯出 AutoML Edge 模型」。
匯出表格模型後,如要將模型匯回 Agent Platform,請參閱「將模型匯入 Agent Platform」。
限制
匯出 AutoML 表格型模型時,有下列限制:
您只能匯出 AutoML 表格分類和迴歸模型。系統不支援匯出 AutoML 表格預測模型。
Vertex Explainable AI 無法搭配匯出的表格模型使用。如要使用 Vertex Explainable AI,您必須透過 Agent Platform 託管的模型提供預測。
匯出的表格模型只能在支援進階向量擴充功能 (AVX) 指令集的 x86 架構 CPU 上執行。
匯出程序
匯出模型的步驟如下:
- 設定環境。
- 匯出模型。
- 提取並執行模型伺服器。
- 要求預測。
事前準備
如要完成這項工作,您必須先完成下列工作:
- 按照「設定專案和開發環境」一文所述步驟設定專案。
- 訓練要下載的模型。
- 在用於執行匯出模型的伺服器上,安裝並初始化 Google Cloud CLI。
- 在伺服器上安裝 Docker。
匯出模型
控制台
REST
您可以使用 models.export 方法,將模型匯出至 Cloud Storage。使用任何要求資料之前,請先修改下列項目的值:
- LOCATION:您的區域。
- PROJECT:您的專案 ID
- MODEL_ID:要匯出的模型 ID。
-
GCS_DESTINATION:Cloud Storage 中的目的地資料夾。例如:
gs://export-bucket/exports。您無法將模型匯出至頂層值區。您必須使用至少一個層級的資料夾。
資料夾必須符合值區規定。
為獲得最佳效果,請建立新資料夾。您會在之後的步驟中複製整個資料夾的內容。
HTTP 方法和網址:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID:export
JSON 要求內文:
{
"outputConfig": {
"exportFormatId": "tf-saved-model",
"artifactDestination": {
"outputUriPrefix": "GCS_DESTINATION"
}
}
}
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID:export"
PowerShell
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID:export" | Select-Object -Expand Content
您應該會收到如下的 JSON 回覆:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/models/MODEL_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.aiplatform.v1.ExportModelOperationMetadata",
"genericMetadata": {
"createTime": "2020-10-12T20:53:40.130785Z",
"updateTime": "2020-10-12T20:53:40.130785Z"
},
"outputInfo": {
"artifactOutputUri": "gs://OUTPUT_BUCKET/model-MODEL_ID/EXPORT_FORMAT/YYYY-MM-DDThh:mm:ss.sssZ"
}
}
}
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 Agent Platform 快速入門導覽課程」中的 Java 設定說明操作。詳情請參閱 Agent Platform Java API 參考文件。
如要向 Agent Platform 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 Agent Platform 快速入門導覽課程」中的 Node.js 設定說明操作。詳情請參閱 Agent Platform Node.js API 參考文件。
如要向 Agent Platform 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
如要瞭解如何安裝或更新 Vertex AI SDK for Python,請參閱「安裝 Vertex AI SDK for Python」。 詳情請參閱 Python API 參考文件。
取得匯出作業的狀態
部分要求會啟動長時間執行的作業,需要一段時間才能完成。這些要求會傳回作業名稱,您可以使用該名稱查看作業狀態或取消作業。Agent Platform 提供輔助方法,可對長時間執行的作業發出呼叫。詳情請參閱「 處理長時間執行作業」。
提取並執行模型伺服器
在這項工作中,您將從 Cloud Storage 下載匯出的模型,並啟動 Docker 容器,讓模型準備好接收預測要求。
如要提取及執行模型伺服器,請執行下列操作:
在要執行模型的電腦上,切換至要儲存匯出模型的目錄。
下載匯出的模型:
gcloud storage cp <var>gcs-destination</var> . --recursive其中 gcs-destination 是匯出模型在 Cloud Storage 中的路徑。
模型會複製到目前目錄,路徑如下:
./model-<model-id>/tf-saved-model/<export-timestamp>路徑可能包含
tf-saved-model或custom-trained。重新命名目錄,移除時間戳記。
mv model-<model-id>/tf-saved-model/<export-timestamp> model-<model-id>/tf-saved-model/<new-dir-name>時間戳記會導致 Docker 無法使用目錄。
提取模型伺服器 Docker 映像檔。
sudo docker pull MODEL_SERVER_IMAGE要提取的模型伺服器映像檔位於匯出模型目錄的
environment.json檔案中。路徑應如下所示:./model-<model-id>/tf-saved-model/<new-dir-name>/environment.json使用您剛建立的目錄名稱啟動 Docker 容器:
docker run -v `pwd`/model-<model-id>/tf-saved-model/<new-dir-name>:/models/default -p 8080:8080 -it MODEL_SERVER_IMAGE
你隨時可以使用 Ctrl-C 停止模型伺服器。
更新模型伺服器 Docker 容器
由於您會在匯出模型時下載模型伺服器 Docker 容器,因此必須明確更新模型伺服器,才能取得更新和修正錯誤。您應使用下列指令,定期更新模型伺服器:
docker pull MODEL_SERVER_IMAGE
請確認 Docker 映像檔 URI 與先前提取的 Docker 映像檔 URI 相符。
從匯出的模型取得預測結果
Agent Platform 映像檔容器中的模型伺服器會處理預測要求,並傳回預測結果。
匯出的模型不支援批次預測。
預測資料格式
您需要以以下 JSON 格式,為預測要求提供資料 (payload 欄位):
{ "instances": [ { "column_name_1": value, "column_name_2": value, … } , … ] }
以下範例顯示含有三個資料欄的要求:類別資料欄、數字陣列和結構體。要求包含兩列。
{
"instances": [
{
"categorical_col": "mouse",
"num_array_col": [
1,
2,
3
],
"struct_col": {
"foo": "piano",
"bar": "2019-05-17T23:56:09.05Z"
}
},
{
"categorical_col": "dog",
"num_array_col": [
5,
6,
7
],
"struct_col": {
"foo": "guitar",
"bar": "2019-06-17T23:56:09.05Z"
}
}
]
}
提出預測要求
將要求資料放入文字檔,例如
tmp/request.json。預測要求中的資料列數 (稱為「迷你批次大小」) 會影響預測延遲和輸送量。迷你批次大小越大,延遲時間和輸送量就越高。如要縮短延遲時間,請使用較小的迷你批次大小。如要提高總處理量,請增加小批大小。最常使用的小批量大小為 1、32、64、128、256、512 和 1024。
提出預測要求:
curl -X POST --data @/tmp/request.json http://localhost:8080/predict
預測結果格式
結果格式取決於模型目標。
分類模型結果
分類模型 (二元和多類別) 的預測結果會傳回目標資料欄每個可能值的機率分數。您必須決定如何使用分數。舉例來說,如要從提供的評分取得二元分類,請找出門檻值。如果有兩個類別「A」和「B」,且「A」的分數高於所選門檻,則應將範例歸類為「A」,否則歸類為「B」。對於不平衡的資料集,門檻可能會接近 100% 或 0%。
分類模型的結果酬載類似於以下範例:
{
"predictions": [
{
"scores": [
0.539999994635582,
0.2599999845027924,
0.2000000208627896
],
"classes": [
"apple",
"orange",
"grape"
]
},
{
"scores": [
0.23999999463558197,
0.35999998450279236,
0.40000002086278963
],
"classes": [
"apple",
"orange",
"grape"
]
}
]
}
迴歸模型結果
系統會針對預測要求的每個有效資料列傳回預測值。匯出模型時,系統不會傳回預測間隔。
迴歸模型的結果酬載類似於以下範例:
{
"predictions": [
{
"value": -304.3663330078125,
"lower_bound": -56.32196807861328,
"upper_bound": 126.51904296875
},
{
"value": -112.3663330078125,
"lower_bound": 16.32196807861328,
"upper_bound": 255.51904296875
}
]
}