TensorFlow מגיע בנוי מראש עם ספרייה נרחבת של אופציות וגרעיני הפעלה (יישומים) מכוונים לסוגי חומרה שונים (CPU, GPU וכו'). פעולות אלו מקושרות אוטומטית לתוך TensorFlow Serving ModelServer הבינארי ללא עבודה נוספת הנדרשת על ידי המשתמש. עם זאת, ישנם שני מקרי שימוש המחייבים את המשתמש לקשר באופציות ל-ModelServer במפורש:
- כתבת אופציה מותאמת אישית משלך (לדוגמה באמצעות מדריך זה )
- אתה משתמש באופ שכבר מיושם שלא נשלח עם TensorFlow
לא משנה אם יישמת את האופ או לא, כדי להגיש מודל עם אופציות מותאמות אישית, אתה צריך גישה למקור האופ. מדריך זה מנחה אותך בשלבי השימוש במקור כדי להפוך אופציות מותאמות אישית לזמינות להגשה. להדרכה לגבי הטמעת פעולות מותאמות אישית, עיין ב- tensorflow/custom-op repo.
תנאי מוקדם: כאשר Docker מותקן, שיבטת את מאגר TensorFlow Serving וספריית העבודה הנוכחית שלך היא השורש של המאגר.
העתק על קוד הפעלה לפרויקט הגשה
על מנת לבנות את TensorFlow Serving עם המבצעים המותאמים אישית שלך, תחילה עליך להעתיק את מקור ההפעלה לפרויקט ההגשה שלך. עבור דוגמה זו, תשתמש ב- tensorflow_zero_out ממאגר ה-Custom-op שהוזכר לעיל.
בתוך ריפו ההגשה, צור ספריית custom_ops
, שתכיל את כל הפעולות המותאמות אישית שלך. עבור דוגמה זו, יהיה לך רק את הקוד tensorflow_zero_out .
mkdir tensorflow_serving/custom_ops
cp -r <custom_ops_repo_root>/tensorflow_zero_out tensorflow_serving/custom_ops
בניית ספרייה סטטית עבור האופ
בקובץ BUILD של tensorflow_zero_out, אתה רואה יעד שמייצר קובץ אובייקט משותף ( .so
), אותו היית טוען ל-python כדי ליצור ולאמן את המודל שלך. עם זאת, TensorFlow Serving מקשרת באופן סטטי פעולות בזמן הבנייה, ודורשת קובץ .a
. אז תוסיף כלל בנייה שמייצר את הקובץ הזה ל- tensorflow_serving/custom_ops/tensorflow_zero_out/BUILD
:
cc_library(
name = 'zero_out_ops',
srcs = [
"cc/kernels/zero_out_kernels.cc",
"cc/ops/zero_out_ops.cc",
],
alwayslink = 1,
deps = [
"@org_tensorflow//tensorflow/core:framework",
]
)
בנה ModelServer עם ה-Op מקושר
כדי לשרת מודל שמשתמש באופ מותאם אישית, עליך לבנות את ה-ModelServer הבינארי עם ה-Op שלו מקושר פנימה. באופן ספציפי, אתה מוסיף את יעד הבנייה zero_out_ops
שנוצר לעיל לקובץ BUILD
של ModelServer.
ערוך tensorflow_serving/model_servers/BUILD
כדי להוסיף את יעד ה-op build המותאם אישית שלך ל- SUPPORTED_TENSORFLOW_OPS
הכלול ביעד server_lib
:
SUPPORTED_TENSORFLOW_OPS = [
...
"//tensorflow_serving/custom_ops/tensorflow_zero_out:zero_out_ops"
]
לאחר מכן השתמש בסביבת Docker כדי לבנות את ModelServer:
tools/run_in_docker.sh bazel build tensorflow_serving/model_servers:tensorflow_model_server
הגישו דגם המכיל את האופציה המותאמת אישית שלכם
כעת תוכל להפעיל את ה-ModelServer הבינארי ולהתחיל להגיש מודל המכיל את האופציה המותאמת אישית הזו:
tools/run_in_docker.sh -o "-p 8501:8501" \
bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server \
--rest_api_port=8501 --model_name=<model_name> --model_base_path=<model_base_path>
שלח בקשת הסקה לבדיקת הפעלה ידנית
כעת תוכל לשלוח בקשת הסקה לשרת הדגם כדי לבדוק את האופציה המותאמת אישית שלך:
curl http://localhost:8501/v1/models/<model_name>:predict -X POST \
-d '{"inputs": [[1,2], [3,4]]}'
דף זה מכיל API שלם יותר לשליחת בקשות REST לשרת הדגם.