Bosques de decisión de TensorFlow y servicio de TensorFlow

TensorFlow Serving (TF Serving) es una herramienta para ejecutar modelos de TensorFlow en línea en entornos de producción grandes utilizando una API RPC o REST. TensorFlow Decision Forests (TF-DF) es compatible de forma nativa con TF Serving >=2.11.

Los modelos TF-DF son directamente compatibles con TF Serving. Los modelos de Yggdrasil se pueden usar con TF Serving después de convertirlos primero.

Limitaciones

TensorFlow agrega una cantidad significativa de gastos de cálculo. Para modelos pequeños y sensibles a la latencia (por ejemplo, tiempo de inferencia del modelo ~1 µs), esta sobrecarga puede ser un orden de magnitud mayor que el tiempo que necesita el modelo en sí. En este caso, se recomienda ejecutar los modelos TF-DF con Yggdrasil Decision Forests .

Ejemplo de uso

El siguiente ejemplo muestra cómo ejecutar un modelo TF-DF en TF Serving:

Primero, instale TF Serving . En este ejemplo, usaremos una versión precompilada 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

En este ejemplo, utilizamos un modelo TF-DF ya entrenado.

# 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 requiere la ruta completa del modelo. Por eso usamos $(pwd) .

TF-Serving admite versiones de modelos. El modelo debe estar contenido en un directorio cuyo nombre sea la versión del modelo. Una versión del modelo es un número entero, por ejemplo "1". Aquí hay un directorio típico para TF-Serving.

  • /path/to/model
    • 1 : Versión 1 del modelo
    • 5 : Versión 5 del modelo
    • 6 : Versión 6 del modelo.

Para este ejemplo, sólo necesitamos poner el modelo en un directorio llamado "1".

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

Ahora podemos iniciar TF-Sering en el modelo.

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

Finalmente, puede enviar una solicitud a TF Serving utilizando Rest API. Hay dos formatos disponibles: API de predicción+instancias y API de predicción+entradas. A continuación se muestra un ejemplo de cada uno de ellos:

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