در حال توسعه با Docker
کشیدن تصویر توسعه
برای یک محیط توسعه که در آن می توانید سرویس TensorFlow بسازید، می توانید امتحان کنید:
docker pull tensorflow/serving:latest-devel
برای یک محیط توسعه که در آن می توانید سرویس TensorFlow را با پشتیبانی GPU بسازید، از موارد زیر استفاده کنید:
docker pull tensorflow/serving:latest-devel-gpu
کارگر بارانداز توپی مشاهده tensorflow / خدمت مخزن برای نسخه های دیگر از تصاویر شما می توانید بکشید.
نمونه توسعه
پس از کشیدن یکی از تصاویر 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 خدمت نصب شده است.Dockerfile.gpu
است، که یک VM حداقل با TensorFlow خدمت با پشتیبانی GPU می شود با استفادهnvidia-docker
.Dockerfile.devel
است، که یک VM حداقل با تمام وابستگی مورد نیاز برای ساخت TensorFlow خدمت.Dockerfile.devel-gpu
است، که یک VM حداقل با تمام وابستگی مورد نیاز برای ساخت TensorFlow خدمت با پشتیبانی GPU.
ساخت کانتینر از Dockerfile
اگر می خواهید تصویر Docker خود را از یک Dockerfile بسازید، می توانید این کار را با اجرای دستور ساخت Docker انجام دهید:
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 / خدمت مخزن مطمئن شوید یک تصویر است که نیازهای شما در حال حاضر وجود ندارد.
ساختن از منابع رم زیادی مصرف می کند. اگر رم یک موضوع بر روی سیستم شما، شما ممکن است استفاده از RAM با مشخص محدود --local_ram_resources=2048
در حالی که با استناد به بازل. را ببینید اسناد بازل برای اطلاعات بیشتر. میتوانید از همین مکانیسم برای بهینهسازیهایی که با آنها سرویس TensorFlow را ایجاد میکنید، استفاده کنید. مثلا:
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=nvidia
.
از اینجا، شما می توانید دستورالعمل برای دنبال آزمایش یک محیط توسعه .
ساخت یک سرویس باینری بهینه شده
هنگام اجرای TensorFlow Serving's ModelServer، ممکن است متوجه یک پیام گزارش شوید که به شکل زیر است:
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 شما به طور کامل برای CPU که روی آن اجرا می شود بهینه نشده است. بسته به مدلی که ارائه می کنید، ممکن است بهینه سازی های بیشتری لازم نباشد. با این حال، ساختن یک باینری بهینه شده ساده است.
هنگامی که ساخت یک تصویر کارگر بارانداز از ارائه 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 .
برای پردازنده گرافیکی: `
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 .
تصویر جدید کارگر بارانداز بهینه سازی شده شما در حال حاضر
$USER/tensorflow-serving
، که شما می توانید استفاده از فقط شما را استانداردtensorflow/serving:latest
تصویر.برای پردازنده گرافیکی:
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 .
تصویر جدید کارگر بارانداز بهینه سازی شده شما در حال حاضر
$USER/tensorflow-serving-gpu
، که شما می توانید استفاده از فقط شما را استانداردtensorflow/serving:latest-gpu
تصویر.