經過最佳化的 TensorFlow 執行階段

相較於以開放原始碼為基礎的預建 TensorFlow Serving 容器,最佳化 TensorFlow 執行階段可最佳化模型,加快推論速度並降低成本。最佳化的 TensorFlow 執行階段會運用 Google 的專有和開放原始碼技術,達到這個目標。

機器學習 (ML) 模型越大,提供服務的費用就越高。與使用開放原始碼的 TensorFlow 執行階段相比,最佳化的 TensorFlow 執行階段可降低供應機器學習模型的成本,並加快推論速度。使用 Vertex AI 時,您不需要修改程式碼,就能充分運用經過最佳化的 TensorFlow 執行階段。而是選擇使用該映像檔的供應容器映像檔。

最佳化 TensorFlow 執行階段可與預先建構的 TensorFlow Serving 容器向後相容。如果您使用預建容器執行 TensorFlow 模型,只要稍做調整,就能改用最佳化 TensorFlow 執行階段容器。

使用最佳化 TensorFlow 執行階段可提升模型效能,但不同類型的模型效能影響程度不一。

最佳化 TensorFlow 執行階段總覽

相較於以開放原始碼為基礎的預建 TensorFlow Serving 容器,最佳化的 TensorFlow 執行階段採用模型最佳化和 Google 的全新專有技術,可提升推論速度並降低成本。

Vertex AI 會在上傳模型時進行最佳化,然後再執行模型。 將模型部署至端點後,最佳化記錄會新增至推論記錄。您可以使用這些記錄檔,排解最佳化期間可能發生的問題。

以下主題說明最佳化 TensorFlow 執行階段的改善項目。

模型最佳化

最佳化 TensorFlow 執行階段包含下列三項模型最佳化功能。

模型 XLA 預先編譯

TensorFlow 模型執行時,所有作業都會個別執行。執行個別作業時,會產生少量額外負擔。最佳化的 TensorFlow 執行階段可運用 XLA,將部分或所有 TensorFlow 圖形預先編譯為較大的核心,藉此移除部分負擔。

XLA 模型預先編譯為選用功能,預設為停用。如要瞭解如何在部署期間啟用模型 XLA 預先編譯功能,請參閱「啟用模型 XLA 預先編譯功能」。

模型壓縮最佳化

經過最佳化的 TensorFlow 執行階段可加快部分模型的執行速度,且對模型精確度的影響不大,並支援模型壓縮最佳化。啟用模型壓縮最佳化功能後,經過最佳化的 TensorFlow 執行階段會運用量化和權重修剪等技術,加快模型執行速度。

模型壓縮最佳化功能預設為停用。如要瞭解如何在部署期間啟用模型壓縮最佳化功能,請參閱「啟用模型壓縮最佳化功能」。

提升 GPU 的表格模型效能

TensorFlow 表格模型通常會在 CPU 上提供服務,因為這類模型無法有效運用加速器。經過最佳化的 TensorFlow 執行階段會將模型中運算量大的部分放在 GPU 上執行,藉此解決這個問題。其餘模型則會在 CPU 上執行,盡量減少主機與加速器之間的通訊。在 GPU 上執行模型中耗費資源的部分,其餘部分則在 CPU 上執行,這樣一來,表格模型的服務速度會更快,成本也會降低。

經過最佳化的 TensorFlow 執行階段可最佳化下列表格模型類型的服務。

自動將模型最佳化,以在 Cloud TPU 上執行

支援 Cloud TPU 的預建最佳化 TensorFlow 執行階段容器,可自動分割及最佳化模型,以便在 TPU 上執行。詳情請參閱「部署至 Cloud TPU」。

使用 TensorFlow 執行階段 (TFRT)

最佳化 TensorFlow 執行階段可使用 TensorFlow 執行階段 (TFRT)。TFRT 可有效率地使用多執行緒主機 CPU,支援非同步程式設計模型,並經過最佳化,處理低階作業的效率相當高。

除了 2.8 版以外,所有經過最佳化的 TensorFlow 執行階段 CPU 容器映像檔都已啟用 TFRT CPU。如要停用 TFRT CPU,請將 use_tfrt 標記設為 false

TFRT GPU 適用於夜間最佳化 TensorFlow 執行階段 GPU 容器映像檔,以及穩定版最佳化 TensorFlow 執行階段 GPU 容器映像檔 2.13 以上版本。如要啟用 TFRT GPU,請將 use_tfrtallow_precompilation 旗標設為 true。GPU 容器映像檔上的 TFRT 可盡量減少主機 CPU 與 GPU 之間的資料傳輸負擔。啟用 TFRT 後,系統會搭配 XLA 編譯作業運作。由於已啟用 XLA 先行編譯,您可能會遇到一些副作用,例如第一個要求延遲時間變長。詳情請參閱「啟用模型 XLA 預先編譯」。

使用 Google 執行階段

由於最佳化 TensorFlow 執行階段是使用 Google 內部堆疊建構而成,因此可充分利用 Google 專屬執行階段環境的優勢。

最佳化 TensorFlow 執行階段容器映像檔

Vertex AI 提供兩種最佳化的 TensorFlow 執行階段容器映像檔:穩定版和夜間版。

穩定版容器映像檔

穩定版最佳化 TensorFlow 執行階段容器會繫結至特定 TensorFlow 版本,就像以開放原始碼為基礎的預先建構 TensorFlow Serving 容器一樣。與特定版本綁定的最佳化 TensorFlow 執行階段容器,維護時間與綁定相同版本的開放原始碼建構版本相同。最佳化的 TensorFlow 執行階段建構版本與開放原始碼 TensorFlow 建構版本具有相同屬性,但推論速度更快。

建構作業可回溯相容。也就是說,您應該可以使用較新的容器,執行以舊版 TensorFlow 訓練的模型。近期容器的成效應優於舊容器。在極少數情況下,以舊版 TensorFlow 訓練的模型可能無法搭配較新的容器使用。

每夜容器映像檔

夜間最佳化 TensorFlow 執行階段版本包含最新改良和最佳化項目,但可能不如穩定版本可靠。主要用於實驗用途。夜間建構版本名稱會包含 nightly 標籤。與穩定版容器映像檔不同,夜間版容器不在 Vertex AI 服務水準協議 (SLA) 的涵蓋範圍內。

可用的容器映像檔

以下提供夜間和穩定版最佳化 TensorFlow 執行階段 Docker 容器映像檔。

ML 架構版本 支援的加速器 (如適用,請提供 CUDA 版本) 修補程式和支援服務終止日期 供應期限 支援的圖片
每晚 僅支援 CPU 不適用 不適用
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest
每晚 GPU (CUDA 12.x) 不適用 不適用
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.nightly:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.nightly:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.nightly:latest
每晚 Cloud TPU 不適用 不適用
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.nightly:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.nightly:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.nightly:latest
2.17 僅支援 CPU 2024 年 7 月 11 日 2025 年 7 月 11 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-17:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-17:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-17:latest
2.17 GPU (CUDA 12.x) 2024 年 7 月 11 日 2025 年 7 月 11 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-17:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-17:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-17:latest
2.17 Cloud TPU 2024 年 7 月 11 日 2025 年 7 月 11 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-17:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-17:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-17:latest
2.16 僅支援 CPU 2024 年 4 月 26 日 2025 年 4 月 26 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-16:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-16:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-16:latest
2.16 GPU (CUDA 12.x) 2024 年 4 月 26 日 2025 年 4 月 26 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-16:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-16:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-16:latest
2.16 Cloud TPU 2024 年 4 月 26 日 2025 年 4 月 26 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-16:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-16:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-16:latest
2.15 僅支援 CPU 2024 年 8 月 15 日 2025 年 8 月 15 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-15:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-15:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-15:latest
2.15 GPU (CUDA 12.x) 2024 年 8 月 15 日 2025 年 8 月 15 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-15:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-15:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-15:latest
2.15 Cloud TPU 2024 年 8 月 15 日 2025 年 8 月 15 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-15:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-15:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-15:latest
2.14 僅支援 CPU 2024 年 8 月 15 日 2025 年 8 月 15 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-14:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-14:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-14:latest
2.14 GPU (CUDA 12.x) 2024 年 8 月 15 日 2025 年 8 月 15 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-14:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-14:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-14:latest
2.13 僅支援 CPU 2024 年 8 月 15 日 2025 年 8 月 15 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-13:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-13:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-13:latest
2.13 GPU (CUDA 11.x) 2024 年 8 月 15 日 2025 年 8 月 15 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-13:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-13:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-13:latest
2.12 僅支援 CPU 2024 年 5 月 15 日 2025 年 5 月 15 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-12:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-12:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-12:latest
2.12 GPU (CUDA 11.x) 2024 年 5 月 15 日 2025 年 5 月 15 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-12:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-12:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-12:latest
2.11 僅支援 CPU 2023 年 11 月 15 日 2024 年 11 月 15 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-11:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-11:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-11:latest
2.11 GPU (CUDA 11.x) 2023 年 11 月 15 日 2024 年 11 月 15 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-11:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-11:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-11:latest
2.10 僅支援 CPU 2023 年 11 月 15 日 2024 年 11 月 15 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-10:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-10:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-10:latest
2.10 GPU (CUDA 11.x) 2023 年 11 月 15 日 2024 年 11 月 15 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-10:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-10:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-10:latest
2.9 僅支援 CPU 2023 年 11 月 15 日 2024 年 11 月 15 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-9:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-9:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-9:latest
2.9 GPU (CUDA 11.x) 2023 年 11 月 15 日 2024 年 11 月 15 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-9:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-9:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-9:latest
2.8 僅支援 CPU 2023 年 11 月 15 日 2024 年 11 月 15 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-8:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-8:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-8:latest
2.8 GPU (CUDA 11.x) 2023 年 11 月 15 日 2024 年 11 月 15 日
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-8:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-8:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-8:latest

透過私人端點使用最佳化的 TensorFlow 執行階段

使用私人端點透過 Vertex AI 提供線上推論結果,可與 Vertex AI 線上推論服務建立低延遲的安全連線,速度比使用公開端點更快。經過最佳化的 TensorFlow 執行階段可能用於提供延遲時間敏感模型,因此建議搭配私有端點使用。詳情請參閱「使用私人端點進行線上推論」。

使用最佳化的 TensorFlow 執行階段部署模型

使用最佳化 TensorFlow 執行階段部署模型以進行推論的程序,與使用以開放原始碼為基礎的預先建構 TensorFlow Serving 容器部署模型幾乎相同。唯一不同之處在於,建立模型時,您會指定使用最佳化 TensorFlow 執行階段的容器映像檔,並啟用本文件稍早所述的最佳化旗標。舉例來說,如果您使用 us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest 容器部署模型,可以透過 us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-8:latest 容器,使用經過最佳化的 TensorFlow 執行階段,提供相同模型。

下列程式碼範例說明如何使用us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest 最佳化 TensorFlow 執行階段容器建立模型。如要部署這個模型,請使用與部署其他預先建構的 TensorFlow Serving 容器模型相同的程序。

如要進一步瞭解這個範例中使用的 ModelServiceClient,請參閱「Class ModelServiceClient」。如要進一步瞭解如何使用 Vertex AI 部署模型,請參閱「使用 Vertex AI API 部署模型」。如要進一步瞭解 allow_precompilationallow_compression 設定,請參閱本文件稍早說明的模型最佳化

    from google.cloud.aiplatform import gapic as aip
    PROJECT_ID = PROJECT_ID
    REGION = LOCATION
    API_ENDPOINT = f"{REGION}-aiplatform.googleapis.com"
    PARENT = f"projects/{PROJECT_ID}/locations/{REGION}"

    client_options = {"api_endpoint": API_ENDPOINT}
    model_service_client = aip.ModelServiceClient(client_options=client_options)
    tf_opt_model_dict = {
        "display_name": "DISPLAY_NAME",
        "metadata_schema_uri": "",
        "artifact_uri": "MODEL_URI",
        "container_spec": {
            "image_uri": "us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest",
            "args": [
                # The optimized TensorFlow runtime includes the following
                # options that can be set here.
                # "--allow_precompilation=true" - enable XLA precompilation
                # "--allow_compression=true" - enable
                #    model compression optimization
            ],
        },
    }
    tf_opt_model = model_service_client.upload_model(
        parent=PARENT,
        model=tf_opt_model_dict).result(timeout=180).model

模型最佳化旗標

使用最佳化 TensorFlow 執行階段部署模型時,您可以啟用兩項功能,進一步最佳化 TensorFlow 模型服務。

  1. 模型 XLA 前置編譯
  2. 影響模型壓縮的最佳化

您可以同時啟用 XLA 模型預先編譯和模型壓縮最佳化功能。下列各節說明如何在部署期間使用旗標啟用這些選項。

啟用模型 XLA 預先編譯

如要將最佳化的 TensorFlow 執行階段設定為預先編譯模型,請將 allow_precompilation 標記設為 true。模型 XLA 預先編譯適用於各種模型,且在大多數情況下都能提升效能。XLA 前置編譯最適合批量大的要求。

當第一個要求連同新的批次大小抵達時,模型 XLA 預先編譯就會開始。如要確保在第一個要求之前初始化執行階段,可以加入暖機要求檔案。詳情請參閱 TensorFlow 說明文件中的「SavedModel 預熱」。

XLA 前置編譯作業需要幾秒到幾分鐘不等,視模型複雜度而定。如果您使用 XLA 前置編譯模型,請注意下列事項。

  • 如果您使用暖機檔案,請嘗試納入批次大小的要求,這些要求代表您預期模型會收到的批次大小。在暖機檔案中提供大量要求,會導致模型伺服器啟動速度變慢。

  • 如果預期模型會收到不同批次大小的要求,您可能需要啟用伺服器端批次處理,並為 allow_batch_sizes 設定一組固定值。如要進一步瞭解如何啟用伺服器端

    批次處理,請參閱 TensorFlow 說明文件中的「為 TensorFlow 啟用伺服器端要求批次處理」。

  • 由於 XLA 前置編譯會增加記憶體負擔,因此部分大型模型可能會在 GPU 上發生記憶體不足錯誤。

建議您先在模型上測試 XLA 前置編譯,再於正式環境中啟用這項功能。

啟用模型壓縮最佳化功能

如要設定最佳化的 TensorFlow 執行階段,以使用模型壓縮最佳化功能,請將其 allow_compression 標記設為 true。測試啟用這個標記對模型精確度的影響,然後判斷是否要在正式環境中啟用。

停用最佳化功能

如要設定最佳化 TensorFlow 執行階段來執行未經最佳化的模型,請將 disable_optimizer 旗標設為 true

最佳化 TensorFlow 執行階段限制

最佳化的 TensorFlow 執行階段有下列限制:

  • 最佳化 TensorFlow 執行階段與舊版 NVIDIA GPU 不相容,例如 Tesla P4 和 Tesla P100。
  • 最佳化 TensorFlow 執行階段目前僅支援取樣 Shapley 可解釋性。

定價

使用最佳化的 TensorFlow 執行階段部署模型時,不會產生額外費用。費用與其他推論部署作業相同,都是根據使用的 VM 和加速器數量計費。詳情請參閱「Vertex AI 定價」。