Леса решений TensorFlow и обслуживание TensorFlow

TensorFlow Serving (TF Serving) — это инструмент для онлайн-запуска моделей TensorFlow в крупных производственных условиях с использованием RPC или REST API. Леса решений TensorFlow (TF-DF) изначально поддерживаются TF Serving >=2.11.

Модели TF-DF напрямую совместимы с TF Serving. Модели Yggdrasil можно использовать с TF Serving после предварительного преобразования .

Ограничения

TensorFlow добавляет значительный объем вычислительных затрат. Для небольших моделей, чувствительных к задержке (например, время вывода модели ~ 1 мкс), эти накладные расходы могут быть на порядок больше, чем время, необходимое самой модели. В этом случае рекомендуется запускать модели TF-DF с Yggdrasil Decision Forests .

Пример использования

В следующем примере показано, как запустить модель TF-DF в TF Serving:

Сначала установите TF Serving . В этом примере мы будем использовать предварительно скомпилированную версию 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

В этом примере мы используем уже обученную модель TF-DF.

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

Примечания. Для обслуживания TF требуется полный путь к модели. Вот почему мы используем $(pwd) .

TF-Serving поддерживает управление версиями модели. Модель должна находиться в каталоге, имя которого соответствует версии модели. Версия модели представляет собой целое число, например «1». Вот типичный каталог для TF-Serving.

  • /path/to/model
    • 1 : Версия 1 модели.
    • 5 : Версия 5 модели.
    • 6 : Версия 6 модели.

В этом примере нам нужно всего лишь поместить модель в каталог с именем «1».

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

Теперь мы можем запустить TF-серинг модели.

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

Наконец, вы можете отправить запрос в TF Serving, используя Rest API. Доступны два формата: API прогнозирования+экземпляров и API прогнозирования+входов. Вот пример каждого из них:

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