डॉकर के साथ विकास करना
विकास की छवि खींचना
एक विकास परिवेश के लिए जहां आप TensorFlow सर्विंग का निर्माण कर सकते हैं, आप यह प्रयास कर सकते हैं:
docker pull tensorflow/serving:latest-devel
एक विकास परिवेश के लिए जहां आप GPU समर्थन के साथ TensorFlow सर्विंग का निर्माण कर सकते हैं, इसका उपयोग करें:
docker pull tensorflow/serving:latest-devel-gpu
छवियों के अन्य संस्करणों के लिए डॉकर हब टेंसरफ़्लो/सर्विंग रेपो देखें जिन्हें आप खींच सकते हैं।
विकास उदाहरण
विकास डॉकर छवियों में से एक को खींचने के बाद, आप इसे जीआरपीसी पोर्ट (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 सर्विंग के साथ एक न्यूनतम VM है।Dockerfile.gpu
, जोnvidia-docker
के साथ उपयोग किए जाने वाले GPU समर्थन के साथ TensorFlow सर्विंग वाला एक न्यूनतम VM है।Dockerfile.devel
, जो कि TensorFlow सर्विंग बनाने के लिए आवश्यक सभी निर्भरताओं वाला एक न्यूनतम VM है।Dockerfile.devel-gpu
, जो GPU समर्थन के साथ TensorFlow सर्विंग बनाने के लिए आवश्यक सभी निर्भरताओं वाला एक न्यूनतम VM है।
Dockerfile से एक कंटेनर बनाना
यदि आप Dockerfile से अपनी स्वयं की Docker छवि बनाना चाहते हैं, तो आप 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 .
टिप: एक छवि बनाने का प्रयास करने से पहले, यह सुनिश्चित करने के लिए डॉकर हब टेंसरफ्लो/सर्विंग रेपो की जांच करें कि आपकी आवश्यकताओं को पूरा करने वाली छवि पहले से मौजूद नहीं है।
स्रोतों से निर्माण में बहुत अधिक 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
कंटेनर बना लिया है।
जीआरपीसी पोर्ट (8500) खोलकर कंटेनर चलाने के लिए:
docker run -it -p 8500:8500 $USER/tensorflow-serving-devel
टिप: यदि आप GPU छवि चला रहे हैं, तो NVIDIA रनटाइम --runtime=nvidia
उपयोग करके चलाना सुनिश्चित करें।
यहां से, आप विकास परिवेश के परीक्षण के लिए निर्देशों का पालन कर सकते हैं।
एक अनुकूलित सर्विंग बाइनरी का निर्माण
TensorFlow सर्विंग का मॉडल सर्वर चलाते समय, आपको एक लॉग संदेश दिखाई दे सकता है जो इस तरह दिखता है:
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
फ़ाइलों से एक Docker छवि बनाते समय, मॉडलसर्वर बाइनरी ध्वज -march=native
के साथ बनाई जाएगी। इससे बेज़ेल सभी सीपीयू अनुकूलन के साथ एक मॉडलसर्वर बाइनरी का निर्माण करेगा, जिस होस्ट का आप समर्थन पर डॉकर छवि बना रहे हैं।
एक सर्विंग छवि बनाने के लिए जो आपके होस्ट के लिए पूरी तरह से अनुकूलित है, बस:
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
छवि की तरह ही कर सकते हैं।