টেনসরফ্লো পরিবেশনার জন্য সেভডমোডেলে সিগনেচারডেফস

সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।

উদ্দেশ্য

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

ওভারভিউ

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

পটভূমি

মেমরি-রপ্তানিকারক এবং SessionBundle ব্যবহৃত স্বাক্ষর অনুক্রমে নামে এবং ডিফল্ট স্বাক্ষর মধ্যে পার্থক্য যা ধারণা অনুরূপ কিন্তু প্রয়োজন হয় ব্যবহারকারীদের তা বোঝা উপর সঠিকভাবে প্রাপ্ত করা জন্য। যারা পূর্বে মেমরি-রপ্তানিকারক / SessionBundle ব্যবহৃত, জন্য Signatures মেমরি-রপ্তানিকারক দ্বারা প্রতিস্থাপিত হবে SignatureDefs SavedModel হবে।

SignatureDef স্ট্রাকচার

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

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

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

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

উপরন্তু, SavedModel একটি উপলব্ধ util সাহায্যের গড়ে তুলতে একটি স্বাক্ষর-Def।

নমুনা কাঠামো

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

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

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

ক্লাসিফিকেশন SignatureDefs TensorFlow সার্ভিং এর ক্লাসিফিকেশন API-এ স্ট্রাকচার্ড কল সমর্থন করে। এই নির্ধারণ যে একটি হওয়া আবশ্যক inputs দুই ঐচ্ছিক আউটপুট Tensors আছে টেন্সর, এবং যে: 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 মডেল জুড়ে বহনযোগ্যতা সক্ষম করে। এর অর্থ আপনি সম্ভবত বিভিন্ন অন্তর্নিহিত টেন্সর নামের সাথে, বিভিন্ন SavedModels মধ্যে অদলবদল করতে পারেন (যেমন পরিবর্তে 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"
  }
}