經過最佳化的 TensorFlow 執行階段

經過最佳化的 TensorFlow 執行階段可將模型最佳化,讓推論速度更快,成本也更低,勝過以開放原始碼為基礎的預先建構的 TensorFlow Serving 容器。經過最佳化的 TensorFlow 執行階段會利用 Google 專屬和開放原始碼技術執行這項作業。

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

經過最佳化的 TensorFlow 執行階段可向後相容預先建構的 TensorFlow Serving 容器。如果您使用預建容器執行 TensorFlow 模型,可以輕鬆切換至經過最佳化的 TensorFlow 執行階段容器。

雖然使用最佳化 TensorFlow 執行階段後,模型效能會有所提升,但不同類型的模型對效能影響程度可能有所不同。

最佳化 TensorFlow 執行階段總覽

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

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 自動最佳化模型

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

使用 TensorFlow 執行階段 (TFRT)

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

在所有經過最佳化的 TensorFlow 執行階段 CPU 容器映像檔中,除了 2.8 版之外,都會啟用 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 執行階段。

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

如要進一步瞭解此範例中使用的 ModelServiceClient,請參閱「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 定價」。