Forêts de décision TensorFlow et service TensorFlow

TensorFlow Serving (TF Serving) est un outil permettant d'exécuter des modèles TensorFlow en ligne dans de grands environnements de production à l'aide d'une API RPC ou REST. TensorFlow Decision Forests (TF-DF) est pris en charge nativement par TF Serving >=2.11.

Les modèles TF-DF sont directement compatibles avec TF Serving. Les modèles Yggdrasil peuvent être utilisés avec TF Serving après avoir été convertis au préalable.

Limites

TensorFlow ajoute une quantité importante de surcharge de calcul. Pour les petits modèles sensibles à la latence (par exemple, temps d'inférence du modèle ~ 1 µs), cette surcharge peut être d'un ordre de grandeur supérieure au temps nécessaire au modèle lui-même. Dans ce cas, il est recommandé d'exécuter les modèles TF-DF avec Yggdrasil Decision Forests .

Exemple d'utilisation

L'exemple suivant montre comment exécuter un modèle TF-DF dans TF Serving :

Tout d'abord, installez TF Serving . Dans cet exemple, nous utiliserons une version précompilée de 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

Dans cet exemple, nous utilisons un modèle TF-DF déjà entraîné.

# 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}"

Remarques : TF-Serving nécessite le chemin complet du modèle. C'est pourquoi nous utilisons $(pwd) .

TF-Serving prend en charge la gestion des versions de modèles. Le modèle doit être contenu dans un répertoire dont le nom est la version du modèle. Une version de modèle est un nombre entier, par exemple « 1 ». Voici un répertoire typique pour TF-Serving.

  • /path/to/model
    • 1 : Version 1 du modèle
    • 5 : Version 5 du modèle
    • 6 : Version 6 du modèle

Pour cet exemple, il suffit de placer le modèle dans un répertoire appelé "1".

mkdir -p /tmp/tf_serving_model
cp -R "${MODEL_PATH}" /tmp/tf_serving_model/1

Maintenant, nous pouvons démarrer TF-Sering sur le modèle.

./tensorflow_model_server \
    --rest_api_port=8502 \
    --model_name=my_model \
    --model_base_path=/tmp/tf_serving_model

Enfin, vous pouvez envoyer une requête à TF Serving à l'aide de l'API Rest. Deux formats sont disponibles : API Predict+Instances et API Predict+Inputs. Voici un exemple de chacun d’eux :

# 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"]} }'