इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

Denser के साथ सेवा करते हुए TensorFlow

सबसे आसान तरीकों में से एक TensorFlow सेवा का उपयोग कर के साथ है आरंभ करने के लिए डोकर

# Download the TensorFlow Serving Docker image and repo
docker pull tensorflow/serving
git clone https://github.com/tensorflow/serving # Location of demo models TESTDATA="$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata" # Start TensorFlow Serving container and open the REST API port docker run -t --rm -p 8501:8501 \ -v "$TESTDATA/saved_model_half_plus_two_cpu:/models/half_plus_two" \ -e MODEL_NAME=half_plus_two \ tensorflow/serving & # Query the model using the predict API curl -d '{"instances": [1.0, 2.0, 5.0]}' \ -X POST http://localhost:8501/v1/models/half_plus_two:predict
# Returns => { "predictions": [2.5, 3.0, 4.5] }

अतिरिक्त सेवारत समापन बिंदुओं के लिए, क्लाइंट रीस्ट एपीआई देखें

डॉकर स्थापित करें

सामान्य इंस्टॉलेशन निर्देश डॉकर साइट पर हैं , लेकिन हम यहां कुछ त्वरित लिंक देते हैं:

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

एक सेवारत छवि खींचना

एक बार आपके पास डॉकटर स्थापित हो जाने पर, आप नवीनतम TensorFlow को डॉकिंग इमेज को चलाकर खींच सकते हैं:

docker pull tensorflow/serving

यह TensorFlow सर्विंग के साथ एक न्यूनतम डॉकर छवि को नीचे खींच देगा।

आप खींच सकते हैं छवियों के अन्य संस्करणों के लिए डॉकर हब टेंसरफ़्लो / सेवारत रेपो देखें।

सेवारत प्रतिमा चलाना

सेवारत छवियों (सीपीयू और जीपीयू दोनों) में निम्नलिखित गुण हैं:

  • पोर्ट 8500 जीआरपीसी के लिए सामने आया
  • पोर्ट 8501 REST API के लिए सामने आया
  • वैकल्पिक पर्यावरण चर MODEL_NAME ( model चूक)
  • वैकल्पिक पर्यावरण चर MODEL_BASE_PATH ( /models लिए चूक)

जब सेवारत छवि ModelServer चलाती है, तो वह इसे निम्नानुसार चलाता है:

tensorflow_model_server --port=8500 --rest_api_port=8501 \
  --model_name=${MODEL_NAME} --model_base_path=${MODEL_BASE_PATH}/${MODEL_NAME}

डॉकर के साथ सेवा करने के लिए, आपको आवश्यकता होगी:

  • अपने मेजबान पर एक खुला बंदरगाह पर सेवा करने के लिए
  • सेवा करने के लिए एक SavedModel
  • आपके ग्राहक के लिए आपके मॉडल का एक नाम

आप क्या करेंगे डॉकटर कंटेनर को चलाएं , कंटेनर के पोर्ट को अपने होस्ट के पोर्ट पर प्रकाशित करें, और अपने होस्ट के पथ को सेव्डमॉडल तक बढ़ाएं जहां कंटेनर मॉडल की अपेक्षा करता है।

आइए एक उदाहरण देखें:

docker run -p 8501:8501 \
  --mount type=bind,source=/path/to/my_model/,target=/models/my_model \
  -e MODEL_NAME=my_model -t tensorflow/serving

इस मामले में, हमने एक डॉकटर कंटेनर शुरू किया है, हमारे मेजबान के पोर्ट 8501 पर REST API पोर्ट प्रकाशित किया है, और हमने एक मॉडल लिया है जिसका नाम my_model और इसे डिफ़ॉल्ट मॉडल बेस पथ ( ${MODEL_BASE_PATH}/${MODEL_NAME} लिए बाध्य किया है = /models/my_model )। अंत में, हमने my_model साथ पर्यावरण चर MODEL_NAME में भर दिया है, और MODEL_BASE_PATH को इसके डिफ़ॉल्ट मान पर छोड़ दिया है।

यह कंटेनर में चलेगा:

tensorflow_model_server --port=8500 --rest_api_port=8501 \
  --model_name=my_model --model_base_path=/models/my_model

यदि हम gRPC पोर्ट को प्रकाशित करना चाहते हैं, तो हम -p 8500:8500 उपयोग करेंगे। आप एक ही समय में gRPC और REST API दोनों पोर्ट खोल सकते हैं, या केवल एक या दूसरे को खोल सकते हैं।

अतिरिक्त तर्क पारित करना

tensorflow_model_server कई अतिरिक्त तर्कों का समर्थन करता है जो आप सेवारत tensorflow_model_server को दे सकते हैं। उदाहरण के लिए, यदि हम मॉडल नाम निर्दिष्ट करने के बजाय एक मॉडल कॉन्फिग फाइल पास करना चाहते हैं, तो हम निम्नलिखित कर सकते हैं:

docker run -p 8500:8500 -p 8501:8501 \
  --mount type=bind,source=/path/to/my_model/,target=/models/my_model \
  --mount type=bind,source=/path/to/my/models.config,target=/models/models.config \
  -t tensorflow/serving --model_config_file=/models/models.config

यह दृष्टिकोण किसी भी अन्य कमांड लाइन तर्कों के लिए काम करता है जो कि tensorflow_model_server समर्थन करता है।

अपनी स्वयं की सेवा करने वाली छवि बनाना

यदि आप एक सेवारत छवि चाहते हैं जिसमें आपका मॉडल कंटेनर में बनाया गया है, तो आप अपनी खुद की छवि बना सकते हैं।

डेमन के रूप में सर्वप्रथम एक सेवारत प्रतिमा चलाएं:

docker run -d --name serving_base tensorflow/serving

इसके बाद, अपने SavedModel को कंटेनर के मॉडल फ़ोल्डर में कॉपी करें:

docker cp models/<my model> serving_base:/models/<my model>

अंत में, उस कंटेनर को कमिट करें जो आपके मॉडल के नाम से मेल खाने के लिए MODEL_NAME को बदलकर आपके मॉडल की सेवा कर रहा है ':

docker commit --change "ENV MODEL_NAME <my model>" serving_base <my container>

अब आप सेवा करना बंद कर सकते serving_base

docker kill serving_base

यह आपको <my container> नामक एक डॉक छवि के साथ छोड़ देगा जिसे आप तैनात कर सकते हैं और स्टार्टअप पर सेवा के लिए अपने मॉडल को लोड करेंगे।

उदाहरण देना

चलो एक पूर्ण उदाहरण के माध्यम से चलते हैं जहां हम एक SavedModel लोड करते हैं और इसे REST API का उपयोग करके कॉल करते हैं। सर्विंग इमेज को पहले खींचे:

docker pull tensorflow/serving

यह स्थापित मॉडल के साथ नवीनतम TensorFlow सर्विंग छवि को खींच देगा।

इसके बाद, हम एक खिलौना मॉडल कहा जाता का उपयोग करेगा Half Plus Two , जो उत्पन्न करता है 0.5 * x + 2 के मूल्यों के लिए x हम भविष्यवाणी के लिए प्रदान करते हैं।

इस मॉडल को प्राप्त करने के लिए, पहले TensorFlow सर्विंग रेपो को क्लोन करें।

mkdir -p /tmp/tfserving
cd /tmp/tfserving
git clone https://github.com/tensorflow/serving

इसके बाद, TensorFlow सर्विंग कंटेनर को इस मॉडल पर इंगित करें और REST API पोर्ट खोलें (8501):

docker run -p 8501:8501 \
  --mount type=bind,\
source=/tmp/tfserving/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_cpu,\
target=/models/half_plus_two \
  -e MODEL_NAME=half_plus_two -t tensorflow/serving &

यह docker कंटेनर चलाएगा और TensorFlow Serving Model Server को लॉन्च करेगा, REST API पोर्ट 8501 को बाइंड करेगा, और हमारे होस्ट से हमारे वांछित मॉडल को मैप करेगा जहां कंटेनर में मॉडल अपेक्षित हैं। हम एक पर्यावरण चर के रूप में मॉडल का नाम भी पास करते हैं, जो कि मॉडल को क्वेरी करते समय महत्वपूर्ण होगा।

भविष्यवाणी एपीआई का उपयोग करके मॉडल को क्वेरी करने के लिए, आप चला सकते हैं

curl -d '{"instances": [1.0, 2.0, 5.0]}' \
  -X POST http://localhost:8501/v1/models/half_plus_two:predict

यह मानों का एक सेट लौटना चाहिए:

{ "predictions": [2.5, 3.0, 4.5] }

RESTful API का उपयोग करने के बारे में अधिक जानकारी यहां पाई जा सकती है

अपने GPU का उपयोग करके डॉकर के साथ सेवा करना

एनवीडिया-डोक्टर स्थापित करें

GPU के साथ सेवा करने से पहले, डॉकर को स्थापित करने के अलावा, आपको इसकी आवश्यकता होगी:

GPU सेवा छवि चलाना

जीपीयू सेवारत छवि को चलाना सीपीयू छवि को चलाने के समान है। अधिक जानकारी के लिए, एक सेवारत छवि को चलाना देखें।

GPU सेवा उदाहरण

चलो एक पूर्ण उदाहरण के माध्यम से चलते हैं जहां हम GPU- बाध्य ऑप्स के साथ एक मॉडल लोड करते हैं और इसे REST API का उपयोग करके कॉल करते हैं।

सबसे पहले nvidia-docker स्थापित करें। आगे आप नवीनतम TensorFlow चलाकर GPU docker छवि को खींच सकते हैं:

docker pull tensorflow/serving:latest-gpu

यह स्थापित किए गए GPU पर चलने के लिए बनाए गए ModelServer के साथ एक न्यूनतम डॉकर छवि को नीचे खींच देगा।

इसके बाद, हम एक खिलौना मॉडल कहा जाता का उपयोग करेगा Half Plus Two , जो उत्पन्न करता है 0.5 * x + 2 के मूल्यों के लिए x हम भविष्यवाणी के लिए प्रदान करते हैं। यह मॉडल जीपीयू डिवाइस से जुड़ा ऑप्स होगा, और सीपीयू पर नहीं चलेगा।

इस मॉडल को प्राप्त करने के लिए, पहले TensorFlow सर्विंग रेपो को क्लोन करें।

mkdir -p /tmp/tfserving
cd /tmp/tfserving
git clone https://github.com/tensorflow/serving

इसके बाद, TensorFlow सर्विंग कंटेनर को इस मॉडल पर इंगित करें और REST API पोर्ट खोलें (8501):

docker run --runtime=nvidia -p 8501:8501 \
--mount type=bind,\
source=/tmp/tfserving/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_gpu,\
target=/models/half_plus_two \
  -e MODEL_NAME=half_plus_two -t tensorflow/serving:latest-gpu &

यह dov कंटेनर को nvidia-docker docker रनटाइम के साथ चलाएगा, TensorFlow Serving Model Server को लॉन्च करेगा, REST API पोर्ट 8501 को बाइंड करेगा, और हमारे होस्ट से हमारे वांछित मॉडल को मैप करेगा जहां कंटेनर में मॉडल अपेक्षित हैं। हम एक पर्यावरण चर के रूप में मॉडल का नाम भी पास करते हैं, जो कि मॉडल को क्वेरी करते समय महत्वपूर्ण होगा।

TIP: मॉडल को क्वेरी करने से पहले, जब तक आपको निम्न जैसा कोई संदेश दिखाई न दे, तब तक प्रतीक्षा करना सुनिश्चित करें, यह दर्शाता है कि सर्वर अनुरोध प्राप्त करने के लिए तैयार है:

2018-07-27 00:07:20.773693: I tensorflow_serving/model_servers/main.cc:333]
Exporting HTTP/REST API at:localhost:8501 ...

भविष्यवाणी एपीआई का उपयोग करके मॉडल को क्वेरी करने के लिए, आप चला सकते हैं

$ curl -d '{"instances": [1.0, 2.0, 5.0]}' \
  -X POST http://localhost:8501/v1/models/half_plus_two:predict

यह मानों का एक सेट लौटना चाहिए:

{ "predictions": [2.5, 3.0, 4.5] }

TIP: GPU के बिना मशीन पर GPU मॉडल को चलाने की कोशिश या बिना TensorFlow मॉडल सर्वर के काम करने वाले GPU के निर्माण में त्रुटि दिखाई देगी जो इस प्रकार है:

Cannot assign a device for operation 'a': Operation was explicitly assigned to /device:GPU:0

RESTful API का उपयोग करने के बारे में अधिक जानकारी यहां पाई जा सकती है

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

टेंसरफ़्लो सर्विंग को बनाने और विकसित करने के निर्देशों के लिए, कृपया डॉकटर गाइड के साथ डेवलपिंग देखें।