डॉकर के साथ विकास करना

विकास की छवि खींचना

एक विकास परिवेश के लिए जहां आप 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 बिल्ड कमांड चलाकर ऐसा कर सकते हैं:

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 के साथ बनाई जाएगी। इससे बेज़ेल सभी सीपीयू अनुकूलन के साथ एक मॉडलसर्वर बाइनरी का निर्माण करेगा, जिस होस्ट का आप समर्थन पर डॉकर छवि बना रहे हैं।

एक सर्विंग छवि बनाने के लिए जो आपके होस्ट के लिए पूरी तरह से अनुकूलित है, बस:

  1. TensorFlow सर्विंग प्रोजेक्ट को क्लोन करें

    git clone https://github.com/tensorflow/serving
    cd serving
    
  2. एक अनुकूलित मॉडलसर्वर के साथ एक छवि बनाएं

    • सीपीयू के लिए:

      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 .
      
  3. विकास छवि को आधार बनाकर एक सेवारत छवि बनाएं

    • सीपीयू के लिए:

      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 छवि की तरह ही कर सकते हैं।