डॉकर के साथ विकास करना
विकास की छवि खींचना
एक विकास वातावरण के लिए जहां आप TensorFlow सर्विंग का निर्माण कर सकते हैं, आप कोशिश कर सकते हैं:
docker pull tensorflow/serving:latest-devel
एक विकास वातावरण के लिए जहां आप GPU समर्थन के साथ TensorFlow सर्विंग का निर्माण कर सकते हैं, इसका उपयोग करें:
docker pull tensorflow/serving:latest-devel-gpu
डोकर हब देखें tensorflow / सेवा करने रेपो छवियों आप खींच सकते हैं के अन्य संस्करणों के लिए।
विकास उदाहरण
विकास डॉकर छवियों में से एक को खींचने के बाद, आप इसे जीआरपीसी पोर्ट (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 को बनाए रखते हैं:
Dockerfile
, जो TensorFlow साथ एक न्यूनतम वीएम है स्थापित सेवारत।Dockerfile.gpu
, जो TensorFlow GPU समर्थन के साथ सेवित के साथ एक न्यूनतम वीएम है के साथ प्रयोग की जाने वालीnvidia-docker
।Dockerfile.devel
, जो TensorFlow सेवित बनाने की जरूरत निर्भरता के सभी के साथ एक न्यूनतम वीएम है।Dockerfile.devel-gpu
है, जो TensorFlow GPU समर्थन के साथ सेवित बनाने की जरूरत निर्भरता के सभी के साथ एक न्यूनतम वीएम है।
Dockerfile से कंटेनर बनाना
यदि आप डॉकरफाइल से अपनी खुद की डॉकर छवि बनाना चाहते हैं, तो आप डॉकर बिल्ड कमांड चलाकर ऐसा कर सकते हैं:
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 की खपत होती है। यदि रैम आपके सिस्टम पर एक मुद्दा है, आप निर्दिष्ट करके RAM उपयोग को सीमित कर सकता --local_ram_resources=2048
Bazel लागू करते हुए। देखें Bazel डॉक्स अधिक जानकारी के लिए। आप उसी तंत्र का उपयोग उन अनुकूलन को बदलने के लिए कर सकते हैं जिनके साथ आप 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
कंटेनर।
जीआरपीसी पोर्ट (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
यह इंगित करता है कि आपका मॉडलसर्वर बाइनरी उस सीपीयू के लिए पूरी तरह से अनुकूलित नहीं है जिस पर वह चल रहा है। आप जिस मॉडल को पेश कर रहे हैं, उसके आधार पर आगे अनुकूलन की आवश्यकता नहीं हो सकती है। हालांकि, एक अनुकूलित बाइनरी बनाना सीधे आगे है।
जब प्रदान की से एक डोकर छवि निर्माण Dockerfile.devel
या Dockerfile.devel-gpu
फ़ाइलें, ModelServer द्विआधारी ध्वज के साथ बनाया जाएगा -march=native
। यह Bazel को सभी CPU अनुकूलन के साथ एक मॉडलसर्वर बाइनरी बनाने का कारण बनेगा, जिस होस्ट को आप समर्थन पर डॉकर छवि बना रहे हैं।
एक सर्विंग इमेज बनाने के लिए जो आपके होस्ट के लिए पूरी तरह से अनुकूलित है, बस:
TensorFlow सर्विंग प्रोजेक्ट का क्लोन बनाएं
git clone https://github.com/tensorflow/serving cd serving
एक अनुकूलित मॉडलसर्वर के साथ एक छवि बनाएं
सीपीयू के लिए:
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 .
आधार के रूप में विकास छवि के साथ एक सर्विंग इमेज बनाएं
सीपीयू के लिए:
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
छवि।