TensorFlow Decision Forests و TensorFlow Serving

TensorFlow Serving (TF Serving) ابزاری برای اجرای آنلاین مدل های TensorFlow در تنظیمات تولید بزرگ با استفاده از RPC یا REST API است. TensorFlow Decision Forests (TF-DF) بصورت بومی توسط TF Serving >=2.11 پشتیبانی می شود.

مدل های TF-DF به طور مستقیم با سرویس TF سازگار هستند. مدل های Yggdrasil را می توان پس از تبدیل شدن با سرویس TF استفاده کرد.

محدودیت ها

TensorFlow مقدار قابل توجهی از سربار محاسبات را اضافه می کند. برای مدل‌های کوچک و حساس به تأخیر (مثلاً زمان استنتاج مدل ~1µs)، این سربار می‌تواند مرتبه‌ای بزرگ‌تر از زمان مورد نیاز خود مدل باشد. در این مورد، توصیه می شود مدل های TF-DF را با جنگل های تصمیم گیری Yggdrasil اجرا کنید.

مثال استفاده

مثال زیر نحوه اجرای یک مدل TF-DF را در سرویس TF نشان می دهد:

ابتدا 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-Serving به مسیر کامل مدل نیاز دارد. به همین دلیل است که $(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-Sering را روی مدل شروع کنیم.

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

در نهایت می توانید با استفاده از Rest API درخواستی را به TF Serving ارسال کنید. دو فرمت موجود است: API predict+instance و predict+inputs 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"]} }'