TensorFlow Serving (TF Serving) è uno strumento per eseguire modelli TensorFlow online in ambienti di produzione di grandi dimensioni utilizzando un'API RPC o REST. TensorFlow Decision Forests (TF-DF) è supportato in modo nativo da TF Serving >=2.11.
I modelli TF-DF sono direttamente compatibili con TF Serving. I modelli Yggdrasil possono essere utilizzati con TF Serving dopo essere stati prima convertiti .
Limitazioni
TensorFlow aggiunge una quantità significativa di sovraccarico di calcolo. Per modelli piccoli e sensibili alla latenza (ad esempio, tempo di inferenza del modello ~1μs), questo sovraccarico può essere un ordine di grandezza maggiore del tempo necessario al modello stesso. In questo caso, si consiglia di eseguire i modelli TF-DF con Yggdrasil Decision Forests .
Esempio di utilizzo
L'esempio seguente mostra come eseguire un modello TF-DF in TF Serving:
Innanzitutto, installa TF Serving . In questo esempio utilizzeremo una versione precompilata di 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
In questo esempio, utilizziamo un modello TF-DF già addestrato.
# 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}"
Note: TF-Serving richiede il percorso completo del modello. Questo è il motivo per cui usiamo $(pwd)
.
TF-Serving supporta il controllo delle versioni del modello. Il modello deve essere contenuto in una directory il cui nome è la versione del modello. Una versione del modello è un numero intero, ad esempio "1". Ecco una directory tipica per TF-Serving.
-
/path/to/model
-
1
: Versione 1 del modello -
5
: Versione 5 del modello -
6
: Versione 6 del modello
-
Per questo esempio, dobbiamo solo inserire il modello in una directory chiamata "1".
mkdir -p /tmp/tf_serving_model
cp -R "${MODEL_PATH}" /tmp/tf_serving_model/1
Ora possiamo avviare TF-Sering sul modello.
./tensorflow_model_server \
--rest_api_port=8502 \
--model_name=my_model \
--model_base_path=/tmp/tf_serving_model
Infine, puoi inviare una richiesta a TF Serving utilizzando l'API Rest. Sono disponibili due formati: API predittivo+istanze e API predittivo+input. Ecco un esempio di ciascuno di essi:
# 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"]} }'