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 mediante una RPC o REST API. 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 Yggdrasil se pueden usar con TF Serving después de convertirlos primero.

Limitaciones

TensorFlow agrega una cantidad significativa de sobrecarga de cómputo. Para modelos pequeños sensibles a la latencia (p. ej., tiempo de inferencia del modelo ~1 µs), esta sobrecarga puede ser un orden de magnitud mayor que el tiempo que necesita el propio modelo. 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, utilizaremos 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, usamos 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. Es por eso que usamos $(pwd) .

TF-Serving admite el control de 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, solo 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 comenzar 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 usando la API Rest. Hay dos formatos disponibles: API predict+instances y API predict+inputs. Aquí hay 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"]} }'