blog.dopana

Back

TensorFlow Serving là hệ thống serving model máy học linh hoạt, hiệu suất cao của Google cho production. Nó lo phần inference của ML: nhận model đã huấn luyện, quản lý vòng đời và trả prediction cho client qua truy cập có version — thông qua bảng tra cứu đếm tham chiếu hiệu suất cao.

Nó Giải Quyết Điều Gì#

Serving model ML trong production khó hơn tưởng tượng:

  • Làm sao cập nhật model mà không rớt request hay phá client?
  • Làm sao chạy nhiều model / version trên cùng GPU?
  • Làm sao batch request để GPU không rảnh?
  • Làm sao test model mới an toàn (canary / A/B)?

TensorFlow Serving trả lời tất cả ngay lập tức.

Tính Năng Chính#

Tính năngTác dụng
Model có versionServe nhiều version đồng thời
Cập nhật không downtimeTriển khai version mới không cần đổi client
Canary & A/B testingĐiều hướng traffic đến version thử nghiệm
Batch GPUGom request thành batch, kiểm soát latency
gRPC + RESTCả hai giao diện có sẵn
Đa servableModel TF, embedding, vocabulary, feature transform
Overhead thấpThêm rất ít latency cho inference

Kiến Trúc#

  • ModelServer — binary serving
  • SavedModel — định dạng model đã serialize mà nó tiêu thụ
  • Trình quản lý version — nạp/dỡ version, hỗ trợ rollback
  • Batching scheduler — gom request inference để GPU hiệu quả

Endpoint REST API#

GET  /v1/models/{model}                          # trạng thái
GET  /v1/models/{model}/versions/{v}/metadata    # metadata
POST /v1/models/{model}:predict                  # dự đoán
POST /v1/models/{model}:classify                 # phân loại
POST /v1/models/{model}:regress                  # hồi quy
text

Request là JSON; dữ liệu nhị phân (ảnh) mã hóa Base64.

Serve Model Trong 60 Giây#

# Kéo image và clone model demo
docker pull tensorflow/serving
git clone https://github.com/tensorflow/serving

TESTDATA="$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata"

# Khởi động server
docker run -t --rm -p 8501:8501 \
    -v "$TESTDATA/saved_model_half_plus_two_cpu:/models/half_plus_two" \
    -e MODEL_NAME=half_plus_two \
    tensorflow/serving
bash
# Dự đoán
curl -d '{"instances": [1.0, 2.0, 5.0]}' \
    -X POST http://localhost:8501/v1/models/half_plus_two:predict
# Trả về => { "predictions": [2.5, 3.0, 4.5] }
bash

Export SavedModel#

import tensorflow as tf
from tensorflow import keras

model = keras.Sequential([keras.layers.Dense(1, input_shape=(1,))])
model.compile(optimizer="sgd", loss="mse")

# Huấn luyện...
model.fit(x_train, y_train, epochs=10)

# Export cho TensorFlow Serving
model.export("models/regressor/1")   # thư mục version "1"
python

Versioning: mỗi SavedModel nằm trong thư mục đánh số — thả thư mục mới là triển khai version mới tức thì.

Batch GPU#

Scheduler gom các request riêng lẻ thành batch để GPU chạy chung:

--enable_batching=true
--batching_parameters_file=config.json
text

Cấu hình được batch size, timeout và padding. Điều này tăng throughput đáng kể cho workload nhiều request nhỏ.

TFX — Pipeline Production#

TensorFlow Serving là chặng cuối của TFX (TensorFlow Extended), pipeline ML production end-to-end của Google:

Giai đoạnThành phần
Xác thực dữ liệuData Validation (schema, bất thường)
Biến đổiTransform (feature engineering)
Huấn luyệnTrainer (TF + Keras)
Đánh giáEvaluator (metric, fairness)
ServingTensorFlow Serving / Model Server

Giải Pháp Thay Thế#

Hệ thốngTốt nhất cho
TF ServingModel TF quy mô Google, serving có version
Triton Inference ServerServing GPU đa framework (tiêu chuẩn ngành)
TorchServeServing native PyTorch
ONNX RuntimeCPU/GPU/mobile đa framework
vLLMServing LLM với PagedAttention

Kết Luận#

TensorFlow Serving vẫn là máy chủ model production trưởng thành nhất cho model TensorFlow — versioning, batching, canary/A-B cấp Google với overhead latency tối thiểu. Nếu stack của bạn là TensorFlow (hoặc Keras), đây là lựa chọn mặc định; với đội ngũ đa framework, Triton là lựa chọn thay thế. Kết hợp với TFX, bạn có trọn đường từ huấn luyện đến serving quy mô đội xe.

Tài liệu tham khảo#