搜尋
首頁後端開發Python教學如何使用TensorFlow Serving在Python中部署模型?

如何使用TensorFlow Serving在Python中部署模型?

部署機器學習模型對於使人工智慧應用程式發揮作用至關重要,為了在生產環境中有效地服務模型,TensorFlow Serving 提供了可靠的解決方案。當模型經過訓練並準備部署時,有效地為其提供服務以處理即時請求至關重要。 TensorFlow Serving 是一個強大的工具,有助於在生產環境中順利部署機器學習模式。

在本文中,我們將深入研究使用 TensorFlow Serving 在 Python 中部署模型所涉及的步驟。

什麼是模型部署?

模型部署涉及使經過訓練的機器學習模型可用於即時預測。這意味著將模型從開發環境轉移到生產系統,在那裡它可以有效地處理傳入的請求。 TensorFlow Serving 是專為部署機器學習模型而設計的專用高效能係統。

設定 TensorFlow 服務

首先,我們需要在我們的系統上安裝 TensorFlow Serving。請依照下列步驟設定 TensorFlow Serving -

第 1 步:安裝 TensorFlow Serving

首先使用套件管理器 pip 安裝 TensorFlow Serving。開啟命令提示字元或終端機並輸入以下命令 -

pip install tensorflow-serving-api

第 2 步:啟動 TensorFlow 服務伺服器

安裝後,透過執行下列指令啟動 TensorFlow Serving 伺服器 -

tensorflow_model_server --rest_api_port=8501 --model_name=my_model --model_base_path=/path/to/model/directory

`/path/to/model/directory` 替換為儲存訓練模型的路徑。

準備部署模型

在部署模型之前,需要將其儲存為 TensorFlow Serving 可以理解的格式。請按照以下步驟準備您的模型進行部署 -

以 SavedModel 格式儲存模型

在Python腳本中,使用以下程式碼將訓練後的模型儲存為SavedModel格式 -

import tensorflow as tf

# Assuming `model` is your trained TensorFlow model
tf.saved_model.save(model, '/path/to/model/directory')

定義模型簽章

模型簽章提供有關模型輸入和輸出張量的資訊。使用 `tf.saved_model.signature_def_utils.build_signature_def` 函數定義模型簽章。這是一個例子 -

inputs = {'input': tf.saved_model.utils.build_tensor_info(model.input)}
outputs = {'output': tf.saved_model.utils.build_tensor_info(model.output)}

signature = tf.saved_model.signature_def_utils.build_signature_def(
   inputs=inputs,
   outputs=outputs,
   method_name=tf.saved_model.signature_constants.PREDICT_METHOD_NAME
)

使用簽名保存模型

要將模型與簽名一起儲存,請使用以下程式碼 -

builder = tf.saved_model.builder.SavedModelBuilder('/path/to/model/directory')
builder.add_meta_graph_and_variables(
   sess=tf.keras.backend.get_session(),
   tags=[tf.saved_model.tag_constants.SERVING],
   signature_def_map={
      tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: signature
   }
)
builder.save

()

使用 TensorFlow Serving 為模型提供服務

現在我們的模型已準備就緒,是時候使用 TensorFlow Serving 為其提供服務了。請依照以下步驟操作 -

與 TensorFlow Serving 建立連線

在Python腳本中,使用gRPC協定與TensorFlow Serving建立連線。這是一個例子 -

from tensorflow_serving.apis import predict_pb2
from tensorflow_serving.apis import prediction_service_pb2_grpc

channel = grpc.insecure_channel('localhost:8501')
stub = prediction_service_pb2_grpc.PredictionServiceStub(channel)

建立請求

要進行預測,請建立請求 protobuf 訊息並指定模型名稱和簽章名稱。這是一個例子 -

request = predict_pb2.PredictRequest()
request.model_spec.name = 'my_model'
request.model_spec.signature_name = tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY
request.inputs['input'].CopyFrom(tf.contrib.util.make_tensor_proto(data, shape=data.shape))

`data` 替換為您要進行預測的輸入資料。

發送請求並獲取回應

將請求傳送到 TensorFlow Serving 並檢索回應。這是一個例子 -

response = stub.Predict(request, timeout_seconds)
output = tf.contrib.util.make_ndarray(response.outputs['output'])

`timeout_seconds`參數指定等待回應的最長時間。

測試部署的模型

為了確保部署的模型正常運行,必須使用範例輸入對其進行測試。以下是測試已部署模型的方法 -

準備範例資料

建立一組與模型的預期輸入格式相符的範例輸入資料。

向已部署的模型發送請求

建立請求並將其傳送到已部署的模型。

request = predict_pb2.PredictRequest()
request.model_spec.name = 'my_model'
request.model_spec.signature_name = tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY
request.inputs['input'].CopyFrom(tf.contrib.util.make_tensor_proto(data, shape=data.shape))

評估輸出

將從已部署模型收到的輸出與預期輸出進行比較。此步驟可確保模型做出準確的預測。

擴充與監控部署

隨著預測需求的增加,擴展部署以處理大量傳入請求至關重要。此外,監控部署有助於追蹤已部署模型的效能和運作狀況。考慮實施以下擴展和監控策略 -

縮放

  • 使用 TensorFlow Serving 的多個執行個體進行負載平衡。

  • 使用 Docker 和 Kubernetes 等平台進行容器化。

監控

  • 收集請求延遲、錯誤率和吞吐量等指標。

  • 設定關鍵事件的警報和通知。

範例

下面的程式範例展示如何使用 TensorFlow 服務部署模型 -

import tensorflow as tf
from tensorflow import keras

# Load the trained model
model = keras.models.load_model("/path/to/your/trained/model")

# Convert the model to the TensorFlow SavedModel format
export_path = "/path/to/exported/model"
tf.saved_model.save(model, export_path)

# Start the TensorFlow Serving server
import os
os.system("tensorflow_model_server --port=8501 --model_name=your_model --model_base_path={}".format(export_path))

在上面的範例中,您需要將“/path/to/your/trained/model”替換為訓練模型的實際路徑。模型將使用 Keras 的 load_model() 函數載入。

接下來,模型將轉換為 TensorFlow SavedModel 格式並儲存在指定的匯出路徑中。

接著使用os.system()函數啟動TensorFlow Serving伺服器,函數執行tensorflow_model_server指令。此命令指定伺服器連接埠、模型名稱 (your_model) 以及匯出模型所在的基本路徑。

請確保您已安裝 TensorFlow Serving,並將檔案路徑替換為適合您系統的值。

期望的輸出

伺服器成功啟動後,它將準備好提供預測服務。您可以使用其他程式或 API 向伺服器發送預測請求,伺服器將根據載入的模型以預測輸出進行回應。

結論

總之,在生產環境中部署機器學習模型以利用其預測能力非常重要。在本文中,我們探討了使用 TensorFlow Serving 在 Python 中部署模型的流程。我們討論了 TensorFlow Serving 的安裝、準備部署模型、服務模型以及測試其效能。透過以下步驟,我們可以成功部署TensorFlow模型並做出精確的即時預測。

以上是如何使用TensorFlow Serving在Python中部署模型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:tutorialspoint。如有侵權,請聯絡admin@php.cn刪除
Python:自動化,腳本和任務管理Python:自動化,腳本和任務管理Apr 16, 2025 am 12:14 AM

Python在自動化、腳本編寫和任務管理中表現出色。 1)自動化:通過標準庫如os、shutil實現文件備份。 2)腳本編寫:使用psutil庫監控系統資源。 3)任務管理:利用schedule庫調度任務。 Python的易用性和豐富庫支持使其在這些領域中成為首選工具。

Python和時間:充分利用您的學習時間Python和時間:充分利用您的學習時間Apr 14, 2025 am 12:02 AM

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python:遊戲,Guis等Python:遊戲,Guis等Apr 13, 2025 am 12:14 AM

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

Python vs.C:申請和用例Python vs.C:申請和用例Apr 12, 2025 am 12:01 AM

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時的Python計劃:一種現實的方法2小時的Python計劃:一種現實的方法Apr 11, 2025 am 12:04 AM

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python:探索其主要應用程序Python:探索其主要應用程序Apr 10, 2025 am 09:41 AM

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

您可以在2小時內學到多少python?您可以在2小時內學到多少python?Apr 09, 2025 pm 04:33 PM

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?Apr 02, 2025 am 07:18 AM

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器