如何使用 TensorFlow Serving 在 Python 中部署模型?
部署機器學習模型對於使 AI 應用發揮功能至關重要,為了有效地在生產環境中服務模型,TensorFlow Serving 提供了一種可靠的解決方案。當模型經過訓練並準備好部署時,高效地服務模型以處理即時請求至關重要。TensorFlow Serving 是一個強大的工具,可以促進機器學習模型在生產環境中的順利部署。
在本文中,我們將深入探討使用 TensorFlow Serving 在 Python 中部署模型的步驟。
什麼是模型部署?
模型部署是指使經過訓練的機器學習模型可用於即時預測。這意味著將模型從開發環境轉移到生產系統,以便它能夠高效地處理傳入的請求。TensorFlow Serving 是一個專門設計的、高效能的系統,專門用於部署機器學習模型。
設定 TensorFlow Serving
首先,我們需要在系統上安裝 TensorFlow Serving。請按照以下步驟設定 TensorFlow Serving:
步驟 1:安裝 TensorFlow Serving
首先使用包管理器 pip 安裝 TensorFlow Serving。開啟命令提示符或終端並輸入以下命令:
pip install tensorflow-serving-api
步驟 2:啟動 TensorFlow Serving 伺服器
安裝完成後,執行以下命令啟動 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 Serving 部署模型:
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 格式,並儲存在指定的 export_path 中。
然後使用 **os.system()** 函式啟動 TensorFlow Serving 伺服器,該函式執行 tensorflow_model_server 命令。此命令指定伺服器埠、模型名稱 (your_model) 和匯出模型所在的基路徑。
請確保已安裝 TensorFlow Serving 並將檔案路徑替換為您系統的相應值。
預期輸出
伺服器成功啟動後,即可準備提供預測服務。您可以使用另一個程式或 API 向伺服器傳送預測請求,伺服器將根據載入的模型返回預測輸出。
結論
總之,將機器學習模型部署到生產環境中非常重要,以便利用其預測能力。在本文中,我們探討了使用 TensorFlow Serving 在 Python 中部署模型的過程。我們討論了 TensorFlow Serving 的安裝、準備模型進行部署、服務模型以及測試其效能。透過按照這些步驟,我們可以成功部署 TensorFlow 模型並進行精確的即時預測。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP