মোবাইলের জন্য TFX

ভূমিকা

এই নির্দেশিকাটি দেখায় যে কিভাবে Tensorflow Extended (TFX) মেশিন লার্নিং মডেল তৈরি এবং মূল্যায়ন করতে পারে যা ডিভাইসে স্থাপন করা হবে। TFX এখন TFLite- এর জন্য নেটিভ সাপোর্ট প্রদান করে, যা মোবাইল ডিভাইসে অত্যন্ত দক্ষ অনুমান করা সম্ভব করে।

এই নির্দেশিকাটি আপনাকে TFLite মডেল তৈরি এবং মূল্যায়ন করার জন্য যে কোনো পাইপলাইনে যে পরিবর্তনগুলি করা যেতে পারে তার মধ্য দিয়ে চলে। আমরা এখানে একটি সম্পূর্ণ উদাহরণ প্রদান করি, প্রদর্শন করে যে কিভাবে TFX TFLite মডেলগুলিকে প্রশিক্ষণ ও মূল্যায়ন করতে পারে যেগুলি MNIST ডেটাসেট থেকে প্রশিক্ষিত। আরও, আমরা দেখাই কিভাবে একই পাইপলাইন একই সাথে স্ট্যান্ডার্ড কেরাস-ভিত্তিক সেভডমডেল এবং সেইসাথে টিএফলাইট এক উভয়ই রপ্তানি করতে ব্যবহার করা যেতে পারে, যা ব্যবহারকারীদের উভয়ের গুণমানের তুলনা করতে দেয়।

আমরা ধরে নিচ্ছি আপনি TFX, আমাদের উপাদান এবং আমাদের পাইপলাইনগুলির সাথে পরিচিত৷ যদি না হয়, তাহলে অনুগ্রহ করে এই টিউটোরিয়ালটি দেখুন।

ধাপ

TFX-এ একটি TFLite মডেল তৈরি এবং মূল্যায়ন করার জন্য শুধুমাত্র দুটি ধাপ প্রয়োজন। প্রশিক্ষিত টেনসরফ্লো মডেলটিকে একটি TFLite মডেলে রূপান্তর করতে প্রথম ধাপটি হল TFX প্রশিক্ষকের প্রেক্ষাপটে TFLite রিরাইটারকে আহ্বান করা। দ্বিতীয় ধাপ হল TFLite মডেলের মূল্যায়ন করার জন্য মূল্যায়নকারীকে কনফিগার করা। আমরা এখন পালাক্রমে প্রতিটি আলোচনা.

প্রশিক্ষকের মধ্যে TFLite রিরাইটারকে আহ্বান করা।

TFX প্রশিক্ষক আশা করে যে একটি ব্যবহারকারী-সংজ্ঞায়িত run_fn একটি মডিউল ফাইলে নির্দিষ্ট করা হবে। এই run_fn প্রশিক্ষিত মডেলটিকে সংজ্ঞায়িত করে, এটিকে নির্দিষ্ট সংখ্যক পুনরাবৃত্তির জন্য প্রশিক্ষণ দেয় এবং প্রশিক্ষিত মডেলটি রপ্তানি করে।

এই অংশের বাকি অংশে, আমরা কোড স্নিপেট প্রদান করি যা TFLite রিরাইটার চালু করতে এবং একটি TFLite মডেল রপ্তানির জন্য প্রয়োজনীয় পরিবর্তনগুলি দেখায়। এই সমস্ত কোড MNIST TFLite মডিউলের run_fn এ অবস্থিত।

নীচের কোডে দেখানো হয়েছে, আমাদের প্রথমে একটি স্বাক্ষর তৈরি করতে হবে যা ইনপুট হিসাবে প্রতিটি বৈশিষ্ট্যের জন্য একটি Tensor নেয়। মনে রাখবেন যে এটি TFX-এর বেশিরভাগ বিদ্যমান মডেল থেকে একটি প্রস্থান, যা ইনপুট হিসাবে ক্রমানুসারী tf. উদাহরণ প্রোটো গ্রহণ করে।

 signatures = {
      'serving_default':
          _get_serve_tf_examples_fn(
              model, tf_transform_output).get_concrete_function(
                  tf.TensorSpec(
                      shape=[None, 784],
                      dtype=tf.float32,
                      name='image_floats'))
  }

তারপর কেরাস মডেলটিকে সেভডমডেল হিসাবে সেভ করা হয় যেভাবে এটি সাধারণত হয়।

  temp_saving_model_dir = os.path.join(fn_args.serving_model_dir, 'temp')
  model.save(temp_saving_model_dir, save_format='tf', signatures=signatures)

অবশেষে, আমরা TFLite রিরাইটার ( tfrw ) এর একটি উদাহরণ তৈরি করি এবং TFLite মডেল পেতে এটিকে SavedModel-এ আহ্বান করি। আমরা এই TFLite মডেলটি serving_model_dir এ সঞ্চয় করি যা run_fn এর কলার দ্বারা প্রদত্ত। এইভাবে, TFLite মডেলটি সেই স্থানে সংরক্ষণ করা হয় যেখানে সমস্ত ডাউনস্ট্রিম TFX উপাদানগুলি মডেলটি খুঁজে পাওয়ার আশা করবে।

  tfrw = rewriter_factory.create_rewriter(
      rewriter_factory.TFLITE_REWRITER, name='tflite_rewriter')
  converters.rewrite_saved_model(temp_saving_model_dir,
                                 fn_args.serving_model_dir,
                                 tfrw,
                                 rewriter.ModelType.TFLITE_MODEL)

TFLite মডেল মূল্যায়ন.

TFX মূল্যায়নকারী প্রশিক্ষিত মডেলগুলিকে বিস্তৃত মেট্রিক্স জুড়ে তাদের গুণমান বোঝার জন্য বিশ্লেষণ করার ক্ষমতা প্রদান করে। SavedModels বিশ্লেষণ করার পাশাপাশি, TFX মূল্যায়নকারী এখন TFLite মডেলগুলিকেও বিশ্লেষণ করতে সক্ষম।

নিম্নলিখিত কোড স্নিপেট ( MNIST পাইপলাইন থেকে পুনরুত্পাদিত), দেখায় কিভাবে একটি মূল্যায়নকারী কনফিগার করতে হয় যা একটি TFLite মডেল বিশ্লেষণ করে৷

  # Informs the evaluator that the model is a TFLite model.
  eval_config_lite.model_specs[0].model_type = 'tf_lite'

  ...

  # Uses TFMA to compute the evaluation statistics over features of a TFLite
  # model.
  model_analyzer_lite = Evaluator(
      examples=example_gen.outputs['examples'],
      model=trainer_lite.outputs['model'],
      eval_config=eval_config_lite,
  ).with_id('mnist_lite')

উপরে দেখানো হিসাবে, শুধুমাত্র পরিবর্তন যা আমাদের করতে হবে তা হল model_type ক্ষেত্রটিকে tf_lite এ সেট করা। TFLite মডেল বিশ্লেষণ করার জন্য অন্য কোন কনফিগারেশন পরিবর্তনের প্রয়োজন নেই। একটি TFLite মডেল বা একটি SavedModel বিশ্লেষণ করা হোক না কেন, Evaluator আউটপুটে ঠিক একই কাঠামো থাকবে।

যাইহোক, অনুগ্রহ করে মনে রাখবেন যে মূল্যায়নকারী অনুমান করে যে TFLite মডেলটি trainer_lite.outputs['model']-এর মধ্যে tflite নামের একটি ফাইলে সংরক্ষিত হয়েছে।