פיתוח עם Docker
משיכת תמונת פיתוח
לסביבת פיתוח שבה אתה יכול לבנות את TensorFlow Serving, אתה יכול לנסות:
docker pull tensorflow/serving:latest-devel
לסביבת פיתוח שבה אתה יכול לבנות TensorFlow Serving עם תמיכה ב-GPU, השתמש ב:
docker pull tensorflow/serving:latest-devel-gpu
עיין ב-Docker Hub tensorflow/serving repo עבור גרסאות אחרות של תמונות שאתה יכול למשוך.
דוגמא לפיתוח
לאחר משיכת אחת מתמונות הפיתוח של Docker, תוכל להפעיל אותה תוך כדי פתיחת יציאת ה-gRPC (8500):
docker run -it -p 8500:8500 --gpus all tensorflow/serving:latest-devel
בדיקת סביבת הפיתוח
כדי לבדוק דגם, מתוך המיכל נסה:
# train the mnist model
python tensorflow_serving/example/mnist_saved_model.py /tmp/mnist_model
# serve the model
tensorflow_model_server --port=8500 --model_name=mnist --model_base_path=/tmp/mnist_model/ &
# test the client
python tensorflow_serving/example/mnist_client.py --num_tests=1000 --server=localhost:8500
Dockerfiles
כרגע אנו מתחזקים את ה-Dockerfiles הבאים:
Dockerfile
, שהוא VM מינימלי עם TensorFlow Serving מותקן.Dockerfile.gpu
, שהוא VM מינימלי עם TensorFlow Serving עם תמיכה ב-GPU לשימוש עםnvidia-docker
.Dockerfile.devel
, שהוא VM מינימלי עם כל התלות הדרושות לבניית TensorFlow Serving.Dockerfile.devel-gpu
, שהוא VM מינימלי עם כל התלות הדרושה לבניית TensorFlow Serving עם תמיכה ב-GPU.
בניית קונטיינר מ-Dockerfile
אם תרצה לבנות תמונת Docker משלך מתוך Dockerfile, תוכל לעשות זאת על ידי הפעלת פקודת ה-Docker build:
Dockerfile
:
docker build --pull -t $USER/tensorflow-serving .
Dockerfile.gpu
:
docker build --pull -t $USER/tensorflow-serving-gpu -f Dockerfile.gpu .
Dockerfile.devel
:
docker build --pull -t $USER/tensorflow-serving-devel -f Dockerfile.devel .
Dockerfile.devel-gpu
:
docker build --pull -t $USER/tensorflow-serving-devel-gpu -f Dockerfile.devel-gpu .
טיפ: לפני שתנסה לבנות תמונה, בדוק את ה- Tensorflow/Repo של Docker Hub כדי לוודא שתמונה שעונה על הצרכים שלך לא קיימת כבר.
בנייה ממקורות צורכת הרבה זיכרון RAM. אם זיכרון RAM הוא בעיה במערכת שלך, אתה יכול להגביל את השימוש ב-RAM על ידי ציון --local_ram_resources=2048
תוך כדי הפעלת Bazel. עיין במסמכי Bazel למידע נוסף. אתה יכול להשתמש באותו מנגנון כדי לכוונן את האופטימיזציות שאתה בונה איתן את TensorFlow Serving. לְדוּגמָה:
docker build --pull --build-arg TF_SERVING_BUILD_OPTIONS="--copt=-mavx \
--cxxopt=-D_GLIBCXX_USE_CXX11_ABI=0 --local_ram_resources=2048" -t \
$USER/tensorflow-serving-devel -f Dockerfile.devel .
הפעלת מיכל
זה מניח שבנית את המיכל Dockerfile.devel
.
כדי להפעיל את המכולה הפותחת את יציאת ה-gRPC (8500):
docker run -it -p 8500:8500 $USER/tensorflow-serving-devel
טיפ: אם אתה מפעיל תמונת GPU, הקפד להפעיל באמצעות NVIDIA runtime --runtime=nvidia
.
מכאן, תוכל לעקוב אחר ההוראות לבדיקת סביבת פיתוח .
בניית קובץ הגשה בינארי אופטימלי
בעת הפעלת ModelServer של TensorFlow Serving, ייתכן שתבחין בהודעת יומן שנראית כך:
I external/org_tensorflow/tensorflow/core/platform/cpu_feature_guard.cc:141]
Your CPU supports instructions that this TensorFlow binary was not compiled to
use: AVX2 FMA
זה מצביע על כך שהבינארי ModelServer שלך אינו מותאם במלואו למעבד שבו הוא פועל. בהתאם לדגם שאתה מגיש, ייתכן שלא יהיה צורך באופטימיזציות נוספות. עם זאת, בניית קובץ בינארי מותאם היא פשוטה.
בעת בניית תמונת Docker מקבצי Dockerfile.devel
או Dockerfile.devel-gpu
שסופקו, הבינארי ModelServer ייבנה עם הדגל -march=native
. זה יגרום ל-Bazel לבנות קובץ בינארי של ModelServer עם כל אופטימיזציות ה-CPU שהמארח שבו אתה בונה את תמונת Docker תומך.
כדי ליצור תמונת הגשה שעברה אופטימיזציה מלאה עבור המארח שלך, פשוט:
שכפל את פרויקט TensorFlow Serving
git clone https://github.com/tensorflow/serving cd serving
בנה תמונה עם ModelServer מותאם
עבור CPU:
docker build --pull -t $USER/tensorflow-serving-devel \ -f tensorflow_serving/tools/docker/Dockerfile.devel .
עבור GPU: `
docker build --pull -t $USER/tensorflow-serving-devel-gpu \ -f tensorflow_serving/tools/docker/Dockerfile.devel-gpu .
בניית תמונת הגשה עם תמונת הפיתוח כבסיס
עבור CPU:
docker build -t $USER/tensorflow-serving \ --build-arg TF_SERVING_BUILD_IMAGE=$USER/tensorflow-serving-devel \ -f tensorflow_serving/tools/docker/Dockerfile .
תמונת Docker הממוטבת החדשה שלך היא כעת
$USER/tensorflow-serving
, שבה אתה יכול להשתמש בדיוק כפי שהיית משתמש בתמונה הסטנדרטיתtensorflow/serving:latest
.עבור GPU:
docker build -t $USER/tensorflow-serving-gpu \ --build-arg TF_SERVING_BUILD_IMAGE=$USER/tensorflow-serving-devel-gpu \ -f tensorflow_serving/tools/docker/Dockerfile.gpu .
תמונת ה-Docker האופטימלית החדשה שלך היא כעת
$USER/tensorflow-serving-gpu
, שבה אתה יכול להשתמש בדיוק כפי שהיית משתמש בתמונתtensorflow/serving:latest-gpu
הסטנדרטית.