又到了跑範例環節,這次要試著學習 Tensorflow Serving,
Tensorflow Serving 是 Tensorflow 專門給 Tensorflow 模型的後端 API 服務。
簡單的說,指定模型位置給它讀,它就會自動幫你跑一個 server,設計好 API 路徑可以直接呼叫。
完全不需要親自寫伺服器提供服務,所以我之前手刻 server 是刻心酸的。
想當初我研究所研究的是 Docker 和 kubernates,但現在我接的案子都還用不到這兩個技術。
Docker 的操作細節就略過,因為網路上已經有很多教學了,有問題可以在底下發問。
Tensorflow 給的範例如下。
# Download the TensorFlow Serving Docker image and repo
docker pull tensorflow/serving
git clone https://github.com/tensorflow/serving
# Location of demo models
TESTDATA="$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata"
# Start TensorFlow Serving container and open the REST API port
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 &
# Query the model using the predict API
curl -d '{"instances": [1.0, 2.0, 5.0]}' \
-X POST http://localhost:8501/v1/models/half_plus_two:predict
# Returns => { "predictions": [2.5, 3.0, 4.5] }
不過很可惜,教學腳本只有給 linux 的指令,所以我得把它微調一下,讓 windows 可以執行。
用 %cd% 取代 pwd,用 %var% 取代 $var,以及調整 json 的引號格式。
# Download the TensorFlow Serving Docker image and repo
docker pull tensorflow/serving
# Start TensorFlow Serving container and open the REST API port
git clone https://github.com/tensorflow/serving
# Location of demo models
set TESTDATA="%cd%/serving/tensorflow_serving/servables/tensorflow/testdata"
echo %TESTDATA%
# Start TensorFlow Serving container and open the REST API port
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
# Query the model using the predict API
curl -d "{\"instances\": [1.0, 2.0, 5.0]}" -X POST http://localhost:8501/v1/models/half_plus_two:predict
# Returns => { "predictions": [2.5, 3.0, 4.5] }
回傳資料和範例的一致
https://www.tensorflow.org/tfx/serving/docker