TensorFlow Serving (TF Serving) to narzędzie do uruchamiania modeli TensorFlow online w dużych ustawieniach produkcyjnych przy użyciu interfejsu API RPC lub REST. Lasy decyzyjne TensorFlow (TF-DF) są obsługiwane natywnie przez TF Serving >=2.11.
Modele TF-DF są bezpośrednio kompatybilne z TF Serving. Modele Yggdrasil mogą być używane z TF Serving po uprzedniej konwersji .
Ograniczenia
TensorFlow dodaje znaczną ilość narzutów obliczeniowych. W przypadku małych modeli wrażliwych na opóźnienia (np. czas wnioskowania modelu ~1 µs) ten narzut może być o rząd wielkości większy niż czas potrzebny samemu modelowi. W takim przypadku zaleca się uruchomienie modeli TF-DF z lasami decyzyjnymi Yggdrasil .
Przykład użycia
Poniższy przykład pokazuje, jak uruchomić model TF-DF w TF Serving:
Najpierw zainstaluj TF Serving . W tym przykładzie użyjemy wstępnie skompilowanej wersji TF-Serving + TF-DF.
# Download TF Serving
wget https://github.com/tensorflow/decision-forests/releases/download/serving-1.0.1/tensorflow_model_server_linux.zip
unzip tensorflow_model_server_linux.zip
# Check that TF Serving works.
./tensorflow_model_server --version
W tym przykładzie używamy już wytrenowanego modelu TF-DF.
# Get a TF-DF model
git clone https://github.com/tensorflow/decision-forests.git
MODEL_PATH=$(pwd)/decision-forests/tensorflow_decision_forests/test_data/model/saved_model_adult_rf
echo "The TF-DF model is available at: ${MODEL_PATH}"
Uwagi: TF-Serving wymaga pełnej ścieżki modelu. Dlatego używamy $(pwd)
.
TF-Serving obsługuje wersjonowanie modelu. Model powinien znajdować się w katalogu, którego nazwa jest wersją modelu. Wersja modelu jest liczbą całkowitą, np. „1”. Oto typowy katalog dla TF-Serving.
-
/path/to/model
-
1
: Wersja 1 modelu -
5
: Wersja 5 modelu -
6
: Wersja 6 modelu
-
W tym przykładzie wystarczy umieścić model w katalogu o nazwie „1”.
mkdir -p /tmp/tf_serving_model
cp -R "${MODEL_PATH}" /tmp/tf_serving_model/1
Teraz możemy rozpocząć TF-Sering na modelu.
./tensorflow_model_server \
--rest_api_port=8502 \
--model_name=my_model \
--model_base_path=/tmp/tf_serving_model
Na koniec możesz wysłać żądanie do TF Serving za pomocą interfejsu API Rest. Dostępne są dwa formaty: API przewidywania+instancji i API przewidywania+wejść. Oto przykład każdego z nich:
# Predictions with the predict+instances API.
curl http://localhost:8502/v1/models/my_model:predict -X POST \
-d '{"instances": [{"age":39,"workclass":"State-gov","fnlwgt":77516,"education":"Bachelors","education_num":13,"marital_status":"Never-married","occupation":"Adm-clerical","relationship":"Not-in-family","race":"White","sex":"Male","capital_gain":2174,"capital_loss":0,"hours_per_week":40,"native_country":"United-States"}]}'
# Predictions with the predict+inputs API
curl http://localhost:8502/v1/models/my_model:predict -X POST \
-d '{"inputs": {"age":[39],"workclass":["State-gov"],"fnlwgt":[77516],"education":["Bachelors"],"education_num":[13],"marital_status":["Never-married"],"occupation":["Adm-clerical"],"relationship":["Not-in-family"],"race":["White"],"sex":["Male"],"capital_gain":[2174],"capital_loss":[0],"hours_per_week":[40],"native_country":["United-States"]} }'