TensorFlow Karar Ormanları ve TensorFlow Hizmeti

TensorFlow Serving (TF Serving), RPC veya REST API kullanarak TensorFlow modellerini büyük üretim ayarlarında çevrimiçi olarak çalıştırmaya yönelik bir araçtır. TensorFlow Karar Ormanları (TF-DF), TF Hizmeti >=2,11 tarafından yerel olarak desteklenir.

TF-DF modelleri, TF Sunumu ile doğrudan uyumludur. Yggdrasil modelleri ilk olarak dönüştürüldükten sonra TF Sunum ile kullanılabilir.

Sınırlamalar

TensorFlow önemli miktarda hesaplama yükü ekler. Küçük, gecikmeye duyarlı modeller için (örneğin, model çıkarım süresi ~1μs), bu ek yük, modelin kendisinin ihtiyaç duyduğu süreden daha büyük bir büyüklük sırası olabilir. Bu durumda TF-DF modellerinin Yggdrasil Decision Forests ile çalıştırılması tavsiye edilmektedir.

Kullanım örneği

Aşağıdaki örnek, TF Hizmetinde bir TF-DF modelinin nasıl çalıştırılacağını gösterir:

İlk önce TF Serving'i yükleyin . Bu örnekte TF-Serving + TF-DF'nin önceden derlenmiş bir sürümünü kullanacağız.

# 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

Bu örnekte önceden eğitilmiş bir TF-DF modelini kullanıyoruz.

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

Notlar: TF Sunumu, modelin tam yolunu gerektirir. Bu yüzden $(pwd) kullanıyoruz.

TF-Serving, model sürüm oluşturmayı destekler. Model, adı modelin versiyonu olan bir dizinde bulunmalıdır. Model versiyonu bir tam sayıdır, örneğin "1". İşte TF Sunumu için tipik bir dizin.

  • /path/to/model
    • 1 : Modelin 1. Versiyonu
    • 5 : Modelin 5. Versiyonu
    • 6 : Modelin 6. Versiyonu

Bu örnek için modeli sadece "1" isimli dizine koymamız yeterli.

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

Artık model üzerinde TF-Sering işlemine başlayabiliriz.

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

Son olarak Rest API'yi kullanarak TF Serving'e istek gönderebilirsiniz. İki format mevcuttur: tahmin+örnekler API'si ve tahmin+giriş API'si. İşte bunların her birine bir örnek:

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