টেনসরফ্লো লাইট টাস্ক লাইব্রেরি

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

টাস্ক লাইব্রেরি থেকে কি আশা করা যায়

  • নন-এমএল-বিশেষজ্ঞদের দ্বারা ব্যবহারযোগ্য পরিষ্কার এবং সু-সংজ্ঞায়িত API
    কোডের মাত্র 5 লাইনের মধ্যে অনুমান করা যায়। টাস্ক লাইব্রেরিতে শক্তিশালী এবং সহজে ব্যবহারযোগ্য APIগুলিকে বিল্ডিং ব্লক হিসাবে ব্যবহার করুন যাতে আপনি সহজেই মোবাইল ডিভাইসে TFLite এর সাথে ML বিকাশ করতে পারেন৷

  • জটিল কিন্তু সাধারণ ডেটা প্রসেসিং
    আপনার ডেটা এবং মডেলের প্রয়োজনীয় ডেটা বিন্যাসের মধ্যে রূপান্তর করতে সাধারণ দৃষ্টি এবং প্রাকৃতিক ভাষা প্রক্রিয়াকরণ যুক্তি সমর্থন করে। প্রশিক্ষণ এবং অনুমানের জন্য একই, ভাগযোগ্য প্রক্রিয়াকরণ যুক্তি প্রদান করে।

  • উচ্চ কর্মক্ষমতা লাভ
    টেনসরফ্লো লাইট ব্যবহার করে দ্রুত অনুমানের অভিজ্ঞতা নিশ্চিত করে ডেটা প্রক্রিয়াকরণে কয়েক মিলিসেকেন্ডের বেশি সময় লাগবে না।

  • এক্সটেনসিবিলিটি এবং কাস্টমাইজেশন
    আপনি টাস্ক লাইব্রেরি অবকাঠামো প্রদান করে সমস্ত সুবিধার সুবিধা নিতে পারেন এবং সহজেই আপনার নিজের Android/iOS অনুমান API তৈরি করতে পারেন।

সমর্থিত কাজ

নীচে সমর্থিত টাস্ক ধরনের তালিকা আছে. আমরা আরও বেশি বেশি ব্যবহারের ক্ষেত্রে সক্ষম করার সাথে সাথে তালিকাটি বাড়বে বলে আশা করা হচ্ছে।

প্রতিনিধিদের সাথে টাস্ক লাইব্রেরি চালান

ডেলিগেটরা GPU এবং Coral Edge TPU- এর মতো অন-ডিভাইস এক্সিলারেটর ব্যবহার করে TensorFlow Lite মডেলের হার্ডওয়্যার ত্বরণ সক্ষম করে। নিউরাল নেটওয়ার্ক ক্রিয়াকলাপের জন্য তাদের ব্যবহার করা লেটেন্সি এবং পাওয়ার দক্ষতার ক্ষেত্রে বিশাল সুবিধা প্রদান করে। উদাহরণ স্বরূপ, GPU গুলি মোবাইল ডিভাইসে লেটেন্সিতে 5x পর্যন্ত গতি প্রদান করতে পারে, এবং Coral Edge TPU গুলি ডেস্কটপ CPU গুলির থেকে 10x দ্রুত গতিতে অনুমান করতে পারে৷

টাস্ক লাইব্রেরি আপনার প্রতিনিধিদের সেট আপ এবং ব্যবহার করার জন্য সহজ কনফিগারেশন এবং ফল ব্যাক বিকল্প সরবরাহ করে। নিম্নলিখিত অ্যাক্সিলারেটরগুলি এখন টাস্ক API-তে সমর্থিত:

টাস্ক সুইফট/ওয়েব এপিআই-এ ত্বরণ সমর্থন শীঘ্রই আসছে।

জাভাতে অ্যান্ড্রয়েডে জিপিইউ ব্যবহারের উদাহরণ

ধাপ 1. আপনার মডিউলের build.gradle ফাইলে GPU প্রতিনিধি প্লাগইন লাইব্রেরি যোগ করুন:

dependencies {
    // Import Task Library dependency for vision, text, or audio.

    // Import the GPU delegate plugin Library for GPU inference
    implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin'
}

ধাপ 2. BaseOptions এর মাধ্যমে টাস্ক অপশনে GPU প্রতিনিধি কনফিগার করুন। উদাহরণস্বরূপ, আপনি ObjectDetector নিম্নরূপ GPU সেট আপ করতে পারেন:

// Turn on GPU delegation.
BaseOptions baseOptions = BaseOptions.builder().useGpu().build();
// Configure other options in ObjectDetector
ObjectDetectorOptions options =
    ObjectDetectorOptions.builder()
        .setBaseOptions(baseOptions)
        .setMaxResults(1)
        .build();

// Create ObjectDetector from options.
ObjectDetector objectDetector =
    ObjectDetector.createFromFileAndOptions(context, modelFile, options);

// Run inference
List<Detection> results = objectDetector.detect(image);

C++ এ Android-এ GPU-এর ব্যবহার উদাহরণ

ধাপ 1. আপনার বেজেল বিল্ড টার্গেটে GPU প্রতিনিধি প্লাগইনের উপর নির্ভর করুন, যেমন:

deps = [
  "//tensorflow_lite_support/acceleration/configuration:gpu_plugin", # for GPU
]

ধাপ 2. টাস্ক অপশনে GPU প্রতিনিধি কনফিগার করুন। উদাহরণস্বরূপ, আপনি BertQuestionAnswerer এ GPU সেট আপ করতে পারেন নিম্নরূপ:

// Initialization
BertQuestionAnswererOptions options;
// Load the TFLite model.
auto base_options = options.mutable_base_options();
base_options->mutable_model_file()->set_file_name(model_file);
// Turn on GPU delegation.
auto tflite_settings = base_options->mutable_compute_settings()->mutable_tflite_settings();
tflite_settings->set_delegate(Delegate::GPU);
// (optional) Turn on automatical fallback to TFLite CPU path on delegation errors.
tflite_settings->mutable_fallback_settings()->set_allow_automatic_fallback_on_execution_error(true);

// Create QuestionAnswerer from options.
std::unique_ptr<QuestionAnswerer> answerer = BertQuestionAnswerer::CreateFromOptions(options).value();

// Run inference on GPU.
std::vector<QaAnswer> results = answerer->Answer(context_of_question, question_to_ask);

এখানে আরো উন্নত অ্যাক্সিলারেটর সেটিংস অন্বেষণ করুন।

পাইথনে কোরাল এজ টিপিইউ-এর ব্যবহার উদাহরণ

টাস্কের বেস বিকল্পগুলিতে কোরাল এজ TPU কনফিগার করুন। উদাহরণস্বরূপ, আপনি ImageClassifier কোরাল এজ টিপিইউ সেট আপ করতে পারেন:

# Imports
from tflite_support.task import vision
from tflite_support.task import core

# Initialize options and turn on Coral Edge TPU delegation.
base_options = core.BaseOptions(file_name=model_path, use_coral=True)
options = vision.ImageClassifierOptions(base_options=base_options)

# Create ImageClassifier from options.
classifier = vision.ImageClassifier.create_from_options(options)

# Run inference on Coral Edge TPU.
image = vision.TensorImage.create_from_file(image_path)
classification_result = classifier.classify(image)

C++ এ কোরাল এজ TPU-এর ব্যবহার উদাহরণ

ধাপ 1. আপনার বেজেল বিল্ড টার্গেটে কোরাল এজ TPU প্রতিনিধি প্লাগইনের উপর নির্ভর করুন, যেমন:

deps = [
  "//tensorflow_lite_support/acceleration/configuration:edgetpu_coral_plugin", # for Coral Edge TPU
]

ধাপ 2. টাস্ক অপশনে কোরাল এজ TPU কনফিগার করুন। উদাহরণস্বরূপ, আপনি ImageClassifier কোরাল এজ টিপিইউ সেট আপ করতে পারেন:

// Initialization
ImageClassifierOptions options;
// Load the TFLite model.
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
// Turn on Coral Edge TPU delegation.
options.mutable_base_options()->mutable_compute_settings()->mutable_tflite_settings()->set_delegate(Delegate::EDGETPU_CORAL);
// Create ImageClassifier from options.
std::unique_ptr<ImageClassifier> image_classifier = ImageClassifier::CreateFromOptions(options).value();

// Run inference on Coral Edge TPU.
const ClassificationResult result = image_classifier->Classify(*frame_buffer).value();

ধাপ 3. নীচের মত libusb-1.0-0-dev প্যাকেজ ইনস্টল করুন। এটি ইতিমধ্যে ইনস্টল করা থাকলে, পরবর্তী ধাপে যান।

# On the Linux
sudo apt-get install libusb-1.0-0-dev

# On the macOS
port install libusb
# or
brew install libusb

ধাপ 4. আপনার বেজেল কমান্ডে নিম্নলিখিত কনফিগারেশনের সাথে কম্পাইল করুন:

# On the Linux
--define darwinn_portable=1 --linkopt=-lusb-1.0

# On the macOS, add '--linkopt=-lusb-1.0 --linkopt=-L/opt/local/lib/' if you are
# using MacPorts or '--linkopt=-lusb-1.0 --linkopt=-L/opt/homebrew/lib' if you
# are using Homebrew.
--define darwinn_portable=1 --linkopt=-L/opt/local/lib/ --linkopt=-lusb-1.0

# Windows is not supported yet.

আপনার কোরাল এজ টিপিইউ ডিভাইসের সাথে টাস্ক লাইব্রেরি CLI ডেমো টুল ব্যবহার করে দেখুন। পূর্বপ্রশিক্ষিত এজ টিপিইউ মডেল এবং উন্নত এজ টিপিইউ সেটিংস সম্পর্কে আরও অনুসন্ধান করুন।

C++ এ Core ML প্রতিনিধির উদাহরণ ব্যবহার

একটি সম্পূর্ণ উদাহরণ ইমেজ ক্লাসিফায়ার কোর এমএল ডেলিগেট টেস্টে পাওয়া যাবে।

ধাপ 1. আপনার বেজেল বিল্ড টার্গেটে কোর এমএল ডেলিগেট প্লাগইনের উপর নির্ভর করুন, যেমন:

deps = [
  "//tensorflow_lite_support/acceleration/configuration:coreml_plugin", # for Core ML Delegate
]

ধাপ 2। টাস্ক অপশনে কোর এমএল ডেলিগেট কনফিগার করুন। উদাহরণস্বরূপ, আপনি ImageClassifier কোর এমএল প্রতিনিধি সেট আপ করতে পারেন:

// Initialization
ImageClassifierOptions options;
// Load the TFLite model.
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
// Turn on Core ML delegation.
options.mutable_base_options()->mutable_compute_settings()->mutable_tflite_settings()->set_delegate(::tflite::proto::Delegate::CORE_ML);
// Set DEVICES_ALL to enable Core ML delegation on any device (in contrast to
// DEVICES_WITH_NEURAL_ENGINE which creates Core ML delegate only on devices
// with Apple Neural Engine).
options.mutable_base_options()->mutable_compute_settings()->mutable_tflite_settings()->mutable_coreml_settings()->set_enabled_devices(::tflite::proto::CoreMLSettings::DEVICES_ALL);
// Create ImageClassifier from options.
std::unique_ptr<ImageClassifier> image_classifier = ImageClassifier::CreateFromOptions(options).value();

// Run inference on Core ML.
const ClassificationResult result = image_classifier->Classify(*frame_buffer).value();