TensorFlow Serving (TF Serving) é uma ferramenta para executar modelos TensorFlow on-line em grandes configurações de produção usando um RPC ou API REST. O TensorFlow Decision Forests (TF-DF) é suportado nativamente pelo TF Serving >=2.11.
Os modelos TF-DF são diretamente compatíveis com TF Serving. Os modelos Yggdrasil podem ser usados com TF Serving após serem convertidos primeiro.
Limitações
O TensorFlow adiciona uma quantidade significativa de sobrecarga computacional. Para modelos pequenos e sensíveis à latência (por exemplo, tempo de inferência do modelo ~1µs), essa sobrecarga pode ser uma ordem de grandeza maior que o tempo necessário para o próprio modelo. Neste caso, recomenda-se executar os modelos TF-DF com Yggdrasil Decision Forests .
Exemplo de uso
O exemplo a seguir mostra como executar um modelo TF-DF no TF Serving:
Primeiro, instale o TF Serving . Neste exemplo, usaremos uma versão pré-compilada do 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
Neste exemplo, usamos um modelo TF-DF já treinado.
# 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}"
Notas: TF-Serving requer o caminho completo do modelo. É por isso que usamos $(pwd)
.
TF-Serving suporta versionamento de modelo. O modelo deve estar contido em um diretório cujo nome seja a versão do modelo. Uma versão do modelo é um número inteiro, por exemplo, "1". Aqui está um diretório típico para TF-Serving.
-
/path/to/model
-
1
: Versão 1 do modelo -
5
: Versão 5 do modelo -
6
: Versão 6 do modelo
-
Para este exemplo, precisamos apenas colocar o modelo em um diretório chamado “1”.
mkdir -p /tmp/tf_serving_model
cp -R "${MODEL_PATH}" /tmp/tf_serving_model/1
Agora podemos iniciar o TF-Sering no modelo.
./tensorflow_model_server \
--rest_api_port=8502 \
--model_name=my_model \
--model_base_path=/tmp/tf_serving_model
Finalmente, você pode enviar uma solicitação ao TF Serving usando a API Rest. Dois formatos estão disponíveis: API de previsão+instâncias e API de previsão+inputs. Aqui está um exemplo de cada um deles:
# 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"]} }'