TensorFlow পরিবেশনের জন্য SavedModel-এ SignatureDefs

উদ্দেশ্য

এই নথিটি SavedModel-এ SignatureDefs-এর উদ্দেশ্যপ্রণোদিত ব্যবহারের উদাহরণ প্রদান করে যা TensorFlow Serving-এর API-এর সাথে মানচিত্র তৈরি করে।

ওভারভিউ

একটি SignatureDef একটি TensorFlow গ্রাফে সমর্থিত একটি গণনার স্বাক্ষরকে সংজ্ঞায়িত করে। SignatureDefs-এর লক্ষ্য একটি ফাংশনের ইনপুট এবং আউটপুট সনাক্ত করতে জেনেরিক সহায়তা প্রদান করা এবং একটি SavedModel তৈরি করার সময় নির্দিষ্ট করা যেতে পারে।

পটভূমি

TF-Exporter এবং SessionBundle ব্যবহার করা স্বাক্ষর যা ধারণার ক্ষেত্রে একই রকম কিন্তু ব্যবহারকারীদের নাম ও ডিফল্ট স্বাক্ষরের মধ্যে পার্থক্য করতে হবে যাতে লোডের পরে সঠিকভাবে পুনরুদ্ধার করা যায়। যারা আগে TF-Exporter/SessionBundle ব্যবহার করেছেন, TF-Exporter-এ Signatures SavedModel-এ SignatureDefs দ্বারা প্রতিস্থাপিত হবে৷

SignatureDef গঠন

একটি SignatureDef এর স্পেসিফিকেশন প্রয়োজন:

  • টেনসরইনফোতে স্ট্রিং এর মানচিত্র হিসাবে inputs
  • টেনসরইনফোতে স্ট্রিং এর মানচিত্র হিসাবে outputs
  • method_name (যা লোডিং টুল/সিস্টেমে একটি সমর্থিত পদ্ধতির নামের সাথে মিলে যায়)।

দ্রষ্টব্য যে TensorInfo-এর নিজেই নাম, dtype এবং tensor আকৃতির স্পেসিফিকেশন প্রয়োজন। যদিও টেনসর তথ্য ইতিমধ্যেই গ্রাফে উপস্থিত রয়েছে, টেনসর ইনফোকে SignatureDef-এর অংশ হিসাবে স্পষ্টভাবে সংজ্ঞায়িত করা দরকারী কারণ টুলগুলি গ্রাফের সংজ্ঞা না পড়েই স্বাক্ষর যাচাইকরণ ইত্যাদি করতে পারে।

টুল এবং সিস্টেম জুড়ে পুনঃব্যবহার এবং ভাগ করার সহজতার জন্য, সাধারণত ব্যবহৃত সিগনেচারডেফ সম্পর্কিত ধ্রুবকগুলি যা টেনসরফ্লো সার্ভিং-এ সমর্থিত হবে সেগুলিকে ধ্রুবক হিসাবে সংজ্ঞায়িত করা হয়। বিশেষভাবে:

উপরন্তু, SavedModel একটি স্বাক্ষর-ডিফ তৈরি করতে সাহায্য করার জন্য একটি util প্রদান করে।

নমুনা কাঠামো

TensorFlow সার্ভিং অনুমান সম্পাদনের জন্য উচ্চ স্তরের API প্রদান করে। এই APIগুলিকে সক্ষম করতে, মডেলগুলিতে অবশ্যই এক বা একাধিক SignatureDefs অন্তর্ভুক্ত করতে হবে যা ইনপুট এবং আউটপুটের জন্য ব্যবহার করার জন্য সঠিক TensorFlow নোডগুলিকে সংজ্ঞায়িত করে৷ প্রতিটি API-এর জন্য TensorFlow সার্ভিং সমর্থন করে এমন নির্দিষ্ট SignatureDef-এর উদাহরণগুলির জন্য নীচে দেখুন।

মনে রাখবেন যে TensorFlow সার্ভিং প্রতিটি TensorInfo-এর কী (SignatureDef-এর ইনপুট এবং আউটপুটগুলিতে) এবং সেইসাথে SignatureDef-এর পদ্ধতি_নামের উপর নির্ভর করে। TensorInfo-এর প্রকৃত বিষয়বস্তু আপনার গ্রাফের জন্য নির্দিষ্ট।

শ্রেণীবিভাগ স্বাক্ষরডিফ

ক্লাসিফিকেশন SignatureDefs TensorFlow সার্ভিং এর ক্লাসিফিকেশন API-এ স্ট্রাকচার্ড কল সমর্থন করে। এগুলি নির্দেশ করে যে একটি inputs টেনসর থাকতে হবে এবং দুটি ঐচ্ছিক আউটপুট টেনসর রয়েছে: classes এবং scores , যার মধ্যে অন্তত একটি অবশ্যই উপস্থিত থাকতে হবে।

signature_def: {
  key  : "my_classification_signature"
  value: {
    inputs: {
      key  : "inputs"
      value: {
        name: "tf_example:0"
        dtype: DT_STRING
        tensor_shape: ...
      }
    }
    outputs: {
      key  : "classes"
      value: {
        name: "index_to_string:0"
        dtype: DT_STRING
        tensor_shape: ...
      }
    }
    outputs: {
      key  : "scores"
      value: {
        name: "TopKV2:0"
        dtype: DT_FLOAT
        tensor_shape: ...
      }
    }
    method_name: "tensorflow/serving/classify"
  }
}

ভবিষ্যদ্বাণী স্বাক্ষরডেফ

Predict SignatureDefs TensorFlow Serving-এর Predict API-এ কল সমর্থন করে। এই স্বাক্ষরগুলি আপনাকে নমনীয়ভাবে অনেক ইনপুট এবং আউটপুট টেনসরকে নির্বিচারে সমর্থন করতে দেয়। নীচের উদাহরণের জন্য, my_prediction_signature স্বাক্ষরটিতে একটি একক লজিক্যাল ইনপুট টেনসর images রয়েছে যা আপনার গ্রাফ x:0 এ প্রকৃত টেনসরের সাথে ম্যাপ করা হয়েছে।

Predict SignatureDefs মডেল জুড়ে বহনযোগ্যতা সক্ষম করে। এর মানে হল আপনি বিভিন্ন সংরক্ষিত মডেলে অদলবদল করতে পারেন, সম্ভবত বিভিন্ন অন্তর্নিহিত টেনসর নামের সাথে (যেমন x:0 এর পরিবর্তে সম্ভবত আপনার কাছে একটি টেনসর z:0 সহ একটি নতুন বিকল্প মডেল রয়েছে), যখন আপনার ক্লায়েন্টরা পুরানো এবং নতুন সম্পর্কে ক্রমাগত অনুসন্ধান করতে অনলাইনে থাকতে পারে। ক্লায়েন্ট-সাইড পরিবর্তন ছাড়াই এই মডেলের সংস্করণ।

Predict SignatureDefs আপনাকে আউটপুটগুলিতে ঐচ্ছিক অতিরিক্ত টেনসর যোগ করার অনুমতি দেয়, যা আপনি স্পষ্টভাবে জিজ্ঞাসা করতে পারেন। ধরা যাক যে scores নীচের আউটপুট কী ছাড়াও, আপনি ডিবাগিং বা অন্যান্য উদ্দেশ্যে একটি পুলিং স্তর আনতে চেয়েছিলেন। সেই ক্ষেত্রে, আপনি pool এবং উপযুক্ত মানের মতো কী সহ একটি অতিরিক্ত টেনসর যোগ করবেন।

signature_def: {
  key  : "my_prediction_signature"
  value: {
    inputs: {
      key  : "images"
      value: {
        name: "x:0"
        dtype: ...
        tensor_shape: ...
      }
    }
    outputs: {
      key  : "scores"
      value: {
        name: "y:0"
        dtype: ...
        tensor_shape: ...
      }
    }
    method_name: "tensorflow/serving/predict"
  }
}

রিগ্রেশন সিগনেচারডেফ

Regression SignatureDefs TensorFlow Serving এর Regression API-তে স্ট্রাকচার্ড কল সমর্থন করে। এগুলি নির্দেশ করে যে ঠিক একটি inputs টেনসর এবং একটি outputs টেনসর থাকতে হবে।

signature_def: {
  key  : "my_regression_signature"
  value: {
    inputs: {
      key  : "inputs"
      value: {
        name: "x_input_examples_tensor_0"
        dtype: ...
        tensor_shape: ...
      }
    }
    outputs: {
      key  : "outputs"
      value: {
        name: "y_outputs_0"
        dtype: DT_FLOAT
        tensor_shape: ...
      }
    }
    method_name: "tensorflow/serving/regress"
  }
}