কাস্টম অপ্স সহ TensorFlow মডেল পরিবেশন করা

TensorFlow বিভিন্ন হার্ডওয়্যার প্রকারের (CPU, GPU, ইত্যাদি) জন্য সূক্ষ্ম-টিউন করা ops এবং op কার্নেলের একটি বিস্তৃত লাইব্রেরি সহ পূর্ব-নির্মিত আসে। এই ক্রিয়াকলাপগুলি স্বয়ংক্রিয়ভাবে টেনসরফ্লো সার্ভিং মডেল সার্ভার বাইনারিতে লিঙ্ক করা হয়েছে যাতে ব্যবহারকারীর দ্বারা কোনও অতিরিক্ত কাজের প্রয়োজন হয় না। যাইহোক, দুটি ব্যবহারের ক্ষেত্রে রয়েছে যেগুলির জন্য ব্যবহারকারীকে মডেল সার্ভারে স্পষ্টভাবে লিঙ্ক করতে হবে:

  • আপনি আপনার নিজস্ব কাস্টম অপশন লিখেছেন (যেমন এই গাইড ব্যবহার করে)
  • আপনি একটি ইতিমধ্যে বাস্তবায়িত অপ ব্যবহার করছেন যা TensorFlow এর সাথে পাঠানো হয় না

আপনি অপটি প্রয়োগ করেছেন বা না করেছেন তা নির্বিশেষে, কাস্টম অপ্স সহ একটি মডেল পরিবেশন করার জন্য, আপনাকে অপের উত্সে অ্যাক্সেসের প্রয়োজন৷ এই নির্দেশিকা আপনাকে পরিবেশনের জন্য কাস্টম অপ্স উপলব্ধ করার জন্য উত্স ব্যবহার করার ধাপগুলির মধ্য দিয়ে চলে। কাস্টম অপ্স বাস্তবায়নের নির্দেশনার জন্য, অনুগ্রহ করে টেনসরফ্লো/কাস্টম-অপ রেপো দেখুন।

পূর্বশর্ত: ডকার ইনস্টল করার সাথে, আপনি টেনসরফ্লো সার্ভিং রিপোজিটরি ক্লোন করেছেন এবং আপনার বর্তমান কার্যকারী ডিরেক্টরিটি রেপোর মূল।

সার্ভিং প্রোজেক্টে অপ সোর্সের উপর কপি করুন

আপনার কাস্টম অপারেশনগুলির সাথে টেনসরফ্লো সার্ভিং তৈরি করতে, আপনাকে প্রথমে আপনার পরিবেশন প্রকল্পে অপ সোর্সটি কপি করতে হবে। এই উদাহরণের জন্য, আপনি উপরে উল্লিখিত কাস্টম-অপ রিপোজিটরি থেকে tensorflow_zero_out ব্যবহার করবেন।

সার্ভিং রেপোর মধ্যে, একটি custom_ops ডিরেক্টরি তৈরি করুন, যেখানে আপনার সমস্ত কাস্টম অপস থাকবে। এই উদাহরণের জন্য, আপনার কাছে শুধুমাত্র tensorflow_zero_out কোড থাকবে।

mkdir tensorflow_serving/custom_ops
cp -r <custom_ops_repo_root>/tensorflow_zero_out tensorflow_serving/custom_ops

অপের জন্য স্ট্যাটিক লাইব্রেরি তৈরি করুন

tensorflow_zero_out-এর BUILD ফাইলে , আপনি একটি টার্গেট একটি শেয়ার্ড অবজেক্ট ফাইল তৈরি করতে দেখতে পাচ্ছেন ( .so ), যা আপনি আপনার মডেল তৈরি এবং প্রশিক্ষণের জন্য পাইথনে লোড করবেন। টেনসরফ্লো সার্ভিং, তবে, বিল্ড টাইমে স্থিরভাবে অপ্সকে লিঙ্ক করে এবং একটি .a ফাইলের প্রয়োজন হয়। তাই আপনি একটি বিল্ড নিয়ম যোগ করবেন যা এই ফাইলটি tensorflow_serving/custom_ops/tensorflow_zero_out/BUILD তে তৈরি করে:

cc_library(
    name = 'zero_out_ops',
    srcs = [
        "cc/kernels/zero_out_kernels.cc",
        "cc/ops/zero_out_ops.cc",
    ],
    alwayslink = 1,
    deps = [
        "@org_tensorflow//tensorflow/core:framework",
    ]
)

অপটি লিঙ্ক করা সহ মডেল সার্ভার তৈরি করুন

একটি কাস্টম অপ ব্যবহার করে এমন একটি মডেল পরিবেশন করতে, আপনাকে মডেল সার্ভার বাইনারি তৈরি করতে হবে সেই অপটি লিঙ্কের সাথে। বিশেষভাবে, আপনি মডেল সার্ভারের BUILD ফাইলে উপরে তৈরি করা zero_out_ops বিল্ড টার্গেট যোগ করুন।

SUPPORTED_TENSORFLOW_OPS এ আপনার কাস্টম অপ বিল্ড টার্গেট যোগ করতে tensorflow_serving/model_servers/BUILD সম্পাদনা করুন যা server_lib টার্গেটে অন্তর্ভুক্ত:

SUPPORTED_TENSORFLOW_OPS = [
    ...
    "//tensorflow_serving/custom_ops/tensorflow_zero_out:zero_out_ops"
]

তারপরে মডেল সার্ভার তৈরি করতে ডকার পরিবেশ ব্যবহার করুন:

tools/run_in_docker.sh bazel build tensorflow_serving/model_servers:tensorflow_model_server

আপনার কাস্টম অপ ধারণকারী একটি মডেল পরিবেশন করুন

আপনি এখন মডেল সার্ভার বাইনারি চালাতে পারেন এবং একটি মডেল পরিবেশন শুরু করতে পারেন যাতে এই কাস্টম অপটি রয়েছে:

tools/run_in_docker.sh -o "-p 8501:8501" \
bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server \
--rest_api_port=8501 --model_name=<model_name> --model_base_path=<model_base_path>

ম্যানুয়ালি অপ পরীক্ষা করার জন্য একটি অনুমান অনুরোধ পাঠান

আপনি এখন আপনার কাস্টম অপ পরীক্ষা করার জন্য মডেল সার্ভারে একটি অনুমান অনুরোধ পাঠাতে পারেন:

curl http://localhost:8501/v1/models/<model_name>:predict -X POST \
-d '{"inputs": [[1,2], [3,4]]}'

এই পৃষ্ঠায় মডেল সার্ভারে REST অনুরোধ পাঠানোর জন্য আরও সম্পূর্ণ API রয়েছে।