相較於以開放原始碼為基礎的預建 TensorFlow Serving 容器,最佳化 TensorFlow 執行階段可最佳化模型,加快推論速度並降低成本。最佳化的 TensorFlow 執行階段會運用 Google 的專有和開放原始碼技術,達到這個目標。
機器學習 (ML) 模型越大,提供服務的成本就越高。相較於使用以開放原始碼為基礎的 TensorFlow 執行階段,使用最佳化 TensorFlow 執行階段可降低提供機器學習模型服務的成本,並提升推論速度。如要在使用 Gemini Enterprise Agent Platform 時運用最佳化 TensorFlow 執行階段,您不需要修改程式碼,只要選擇使用該執行階段的服務容器映像檔即可。
最佳化 TensorFlow 執行階段可與預先建構的 TensorFlow Serving 容器向後相容。如果您使用預建容器執行 TensorFlow 模型,可以輕鬆切換至最佳化 TensorFlow 執行階段容器。
使用最佳化 TensorFlow 執行階段可提升模型效能,但不同類型的模型效能影響程度不一。
最佳化 TensorFlow 執行階段總覽
相較於以開放原始碼為基礎的預建 TensorFlow Serving 容器,最佳化的 TensorFlow 執行階段採用模型最佳化和 Google 的全新專有技術,可提升推論速度並降低成本。
Gemini Enterprise Agent Platform 會在模型上傳後執行最佳化,然後再執行模型。 將模型部署至端點後,最佳化記錄會新增至推論記錄。您可以使用這些記錄檔,排解最佳化期間可能發生的問題。
以下主題說明最佳化 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_tfrt 和 allow_precompilation 旗標設為 true。GPU 容器映像檔上的 TFRT 可盡量減少主機 CPU 和 GPU 之間的資料傳輸負擔。啟用 TFRT 後,系統會與 XLA 編譯功能搭配運作。由於已啟用 XLA 先行編譯,您可能會遇到一些副作用,例如第一個要求延遲時間增加。詳情請參閱「啟用模型 XLA 預先編譯」。
使用 Google 執行階段
由於最佳化 TensorFlow 執行階段是使用 Google 內部堆疊建構而成,因此可充分利用 Google 專屬執行階段環境。
最佳化 TensorFlow 執行階段容器映像檔
Gemini Enterprise Agent Platform 提供兩種最佳化 TensorFlow 執行階段容器映像檔:穩定版和夜間版。
穩定版容器映像檔
穩定的最佳化 TensorFlow 執行階段容器會繫結至特定 TensorFlow 版本,就像以開放原始碼為基礎的預建 TensorFlow Serving 容器一樣。繫結至特定版本的最佳化 TensorFlow 執行階段容器,維護時間與繫結至相同版本的開放原始碼建構版本相同。最佳化 TensorFlow 執行階段建構版本與開放原始碼 TensorFlow 建構版本具有相同屬性,但推論速度更快。
建構作業可回溯相容。也就是說,您應該可以使用較新的容器,執行以舊版 TensorFlow 訓練的模型。近期建立的容器效能應優於舊容器。在極少數情況下,以舊版 TensorFlow 訓練的模型可能無法搭配新版容器使用。
每夜容器映像檔
每夜最佳化 TensorFlow 執行階段建構版本包含最新的改良和最佳化項目,但可能不如穩定版本可靠,主要用於實驗用途。每夜建構版本名稱包含 nightly 標籤。與穩定版容器映像檔不同,每夜版容器不在 Gemini Enterprise Agent Platform 服務水準協議 (SLA) 的涵蓋範圍內。
可用的容器映像檔
以下提供夜間和穩定版最佳化 TensorFlow 執行階段 Docker 容器映像檔。
| 機器學習架構版本 | 支援的加速器 (如適用,請提供 CUDA 版本) | 修補程式和支援服務終止日期 | 供應期限 | 支援的圖片 |
|---|---|---|---|---|
| 每晚 | 僅限 CPU | 不適用 | 不適用 |
|
| 每晚 | GPU (CUDA 12.x) | 不適用 | 不適用 |
|
| 每晚 | Cloud TPU | 不適用 | 不適用 |
|
| 2.17 | 僅限 CPU | 2024 年 7 月 11 日 | 2025 年 7 月 11 日 |
|
| 2.17 | GPU (CUDA 12.x) | 2024 年 7 月 11 日 | 2025 年 7 月 11 日 |
|
| 2.17 | Cloud TPU | 2024 年 7 月 11 日 | 2025 年 7 月 11 日 |
|
| 2.16 | 僅限 CPU | 2024 年 4 月 26 日 | 2025 年 4 月 26 日 | |
| 2.16 | GPU (CUDA 12.x) | 2024 年 4 月 26 日 | 2025 年 4 月 26 日 | |
| 2.16 | Cloud TPU | 2024 年 4 月 26 日 | 2025 年 4 月 26 日 | |
| 2.15 | 僅限 CPU | 2024 年 8 月 15 日 | 2025 年 8 月 15 日 | |
| 2.15 | GPU (CUDA 12.x) | 2024 年 8 月 15 日 | 2025 年 8 月 15 日 | |
| 2.15 | Cloud TPU | 2024 年 8 月 15 日 | 2025 年 8 月 15 日 | |
| 2.14 | 僅限 CPU | 2024 年 8 月 15 日 | 2025 年 8 月 15 日 | |
| 2.14 | GPU (CUDA 12.x) | 2024 年 8 月 15 日 | 2025 年 8 月 15 日 | |
| 2.13 | 僅限 CPU | 2024 年 8 月 15 日 | 2025 年 8 月 15 日 | |
| 2.13 | GPU (CUDA 11.x) | 2024 年 8 月 15 日 | 2025 年 8 月 15 日 | |
| 2.12 | 僅限 CPU | 2024 年 5 月 15 日 | 2025 年 5 月 15 日 | |
| 2.12 | GPU (CUDA 11.x) | 2024 年 5 月 15 日 | 2025 年 5 月 15 日 | |
| 2.11 | 僅限 CPU | 2023 年 11 月 15 日 | 2024 年 11 月 15 日 | |
| 2.11 | GPU (CUDA 11.x) | 2023 年 11 月 15 日 | 2024 年 11 月 15 日 | |
| 2.10 | 僅限 CPU | 2023 年 11 月 15 日 | 2024 年 11 月 15 日 | |
| 2.10 | GPU (CUDA 11.x) | 2023 年 11 月 15 日 | 2024 年 11 月 15 日 | |
| 2.9 | 僅限 CPU | 2023 年 11 月 15 日 | 2024 年 11 月 15 日 | |
| 2.9 | GPU (CUDA 11.x) | 2023 年 11 月 15 日 | 2024 年 11 月 15 日 | |
| 2.8 | 僅限 CPU | 2023 年 11 月 15 日 | 2024 年 11 月 15 日 | |
| 2.8 | GPU (CUDA 11.x) | 2023 年 11 月 15 日 | 2024 年 11 月 15 日 |
使用經過最佳化的 TensorFlow 執行階段和私人端點
使用私人端點透過 Gemini Enterprise Agent Platform 提供線上推論服務,可與 Gemini Enterprise Agent Platform 線上推論服務建立低延遲的連線,且速度比使用公開端點更快。最佳化的 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,請參閱類別 ModelServiceClient。如要進一步瞭解如何使用 Gemini Enterprise Agent Platform 部署模型,請參閱「使用 Agent Platform API 部署模型」。如要進一步瞭解 allow_precompilation 和 allow_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 模型服務。
您可以同時啟用模型 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 和加速器數量計費。詳情請參閱「Gemini Enterprise Agent Platform 定價」。