গুগল আই/ও একটি মোড়ক! TensorFlow সেশনগুলি দেখুন সেশনগুলি দেখুন

টেনসরফ্লো লাইট কোর এমএল প্রতিনিধি

টেনসরফ্লো লাইট কোর এমএল প্রতিনিধি কোর এমএল কাঠামোর উপর টেনসরফ্লো লাইট মডেলগুলি চালিত করতে সক্ষম করে, যার ফলস্বরূপ আইওএস ডিভাইসগুলিতে দ্রুত মডেল নির্ধারণের ফলস্বরূপ।

সমর্থিত আইওএস সংস্করণ এবং ডিভাইস:

  • iOS 12 এবং তারপরে। পুরানো আইওএস সংস্করণগুলিতে, কোর এমএল প্রতিনিধি স্বয়ংক্রিয়ভাবে সিপিইউতে ফালব্যাক করবে।
  • ডিফল্টরূপে, কোর এমএল প্রতিনিধি কেবলমাত্র এ 12 এসসি এবং পরবর্তীকালে (আইফোন এক্স এবং পরে) ডিভাইসগুলিতে সুনির্দিষ্ট ইঞ্জিনটি দ্রুত অনুমানের জন্য ব্যবহার করতে সক্ষম হবে। আপনি যদি পুরানো ডিভাইসে কোর এমএল প্রতিনিধিও ব্যবহার করতে চান তবে দয়া করে সেরা অনুশীলনগুলি দেখুন

সমর্থিত মডেল

কোর এমএল প্রতিনিধি বর্তমানে ফ্লোট (এফপি 32 এবং এফপি 16) মডেলগুলিকে সমর্থন করে।

আপনার নিজের মডেলটিতে কোর এমএল প্রতিনিধি চেষ্টা করছেন

কোর এমএল প্রতিনিধি ইতিমধ্যে টেনসরফ্লো লাইট কোকোপডগুলি প্রকাশের জন্য অন্তর্ভুক্ত। কোর এমএল প্রতিনিধি ব্যবহার করতে, আপনার Podfile সাবপেক CoreML অন্তর্ভুক্ত করতে আপনার Podfile লাইট পডটি পরিবর্তন করুন।

target 'YourProjectName'
  pod 'TensorFlowLiteSwift/CoreML', '~> 2.4.0'  # Or TensorFlowLiteObjC/CoreML

বা

# Particularily useful when you also want to include 'Metal' subspec.
target 'YourProjectName'
  pod 'TensorFlowLiteSwift', '~> 2.4.0', :subspecs => ['CoreML']

সুইফট

    let coreMLDelegate = CoreMLDelegate()
    var interpreter: Interpreter

    // Core ML delegate will only be created for devices with Neural Engine
    if coreMLDelegate != nil {
      interpreter = try Interpreter(modelPath: modelPath,
                                    delegates: [coreMLDelegate!])
    } else {
      interpreter = try Interpreter(modelPath: modelPath)
    }
      

উদ্দেশ্য গ


    // Import module when using CocoaPods with module support
    @import TFLTensorFlowLite;

    // Or import following headers manually
    # import "tensorflow/lite/objc/apis/TFLCoreMLDelegate.h"
    # import "tensorflow/lite/objc/apis/TFLTensorFlowLite.h"

    // Initialize Core ML delegate
    TFLCoreMLDelegate* coreMLDelegate = [[TFLCoreMLDelegate alloc] init];

    // Initialize interpreter with model path and Core ML delegate
    TFLInterpreterOptions* options = [[TFLInterpreterOptions alloc] init];
    NSError* error = nil;
    TFLInterpreter* interpreter = [[TFLInterpreter alloc]
                                    initWithModelPath:modelPath
                                              options:options
                                            delegates:@[ coreMLDelegate ]
                                                error:&error];
    if (error != nil) { /* Error handling... */ }

    if (![interpreter allocateTensorsWithError:&error]) { /* Error handling... */ }
    if (error != nil) { /* Error handling... */ }

    // Run inference ...
      

সি (2.3.0 অবধি)

    #include "tensorflow/lite/delegates/coreml/coreml_delegate.h"

    // Initialize interpreter with model
    TfLiteModel* model = TfLiteModelCreateFromFile(model_path);

    // Initialize interpreter with Core ML delegate
    TfLiteInterpreterOptions* options = TfLiteInterpreterOptionsCreate();
    TfLiteDelegate* delegate = TfLiteCoreMlDelegateCreate(NULL);  // default config
    TfLiteInterpreterOptionsAddDelegate(options, delegate);
    TfLiteInterpreterOptionsDelete(options);

    TfLiteInterpreter* interpreter = TfLiteInterpreterCreate(model, options);

    TfLiteInterpreterAllocateTensors(interpreter);

    // Run inference ...

    /* ... */

    // Dispose resources when it is no longer used.
    // Add following code to the section where you dispose of the delegate
    // (e.g. `dealloc` of class).

    TfLiteInterpreterDelete(interpreter);
    TfLiteCoreMlDelegateDelete(delegate);
    TfLiteModelDelete(model);
      

সেরা অনুশীলন

নিউরাল ইঞ্জিন ছাড়া ডিভাইসে কোর এমএল প্রতিনিধি ব্যবহার করা

ডিফল্টরূপে, ডিভাইসটিতে নিউরাল ইঞ্জিন থাকলেই কেবল এমএল প্রতিনিধি তৈরি করা হবে, এবং যদি প্রতিনিধি তৈরি না করা হয় তবে তা null যাবে। আপনি যদি অন্যান্য পরিবেশে উদাহরণস্বরূপ কোর এমএল প্রতিনিধি চালাতে চান (উদাহরণস্বরূপ, সিমুলেটর), .all প্রতিনিধি তৈরি করার সময় একটি বিকল্প হিসাবে .all পাস করুন। সি ++ (এবং অবজেক্টিভ-সি) এ, আপনি TfLiteCoreMlDelegateAllDevices পাস করতে পারেন। নিম্নলিখিত উদাহরণটি দেখায় যে এটি কীভাবে করা যায়:

সুইফট

    var options = CoreMLDelegate.Options()
    options.enabledDevices = .all
    let coreMLDelegate = CoreMLDelegate(options: options)!
    let interpreter = try Interpreter(modelPath: modelPath,
                                      delegates: [coreMLDelegate])
      

উদ্দেশ্য গ

    TFLCoreMLDelegateOptions* coreMLOptions = [[TFLCoreMLDelegateOptions alloc] init];
    coreMLOptions.enabledDevices = TFLCoreMLDelegateEnabledDevicesAll;
    TFLCoreMLDelegate* coreMLDelegate = [[TFLCoreMLDelegate alloc]
                                          initWithOptions:coreMLOptions];

    // Initialize interpreter with delegate
      

    TfLiteCoreMlDelegateOptions options;
    options.enabled_devices = TfLiteCoreMlDelegateAllDevices;
    TfLiteDelegate* delegate = TfLiteCoreMlDelegateCreate(&options);
    // Initialize interpreter with delegate
      

ফ্যালব্যাক হিসাবে ধাতব (জিপিইউ) প্রতিনিধি ব্যবহার করা।

যখন কোর এমএল প্রতিনিধি তৈরি করা হবে না, বিকল্পভাবে আপনি এখনও পারফরম্যান্স সুবিধা পেতে ধাতব প্রতিনিধি ব্যবহার করতে পারেন। নিম্নলিখিত উদাহরণটি দেখায় যে এটি কীভাবে করা যায়:

সুইফট

    var delegate = CoreMLDelegate()
    if delegate == nil {
      delegate = MetalDelegate()  // Add Metal delegate options if necessary.
    }

    let interpreter = try Interpreter(modelPath: modelPath,
                                      delegates: [delegate!])
      

উদ্দেশ্য গ

    TFLDelegate* delegate = [[TFLCoreMLDelegate alloc] init];
    if (!delegate) {
      // Add Metal delegate options if necessary
      delegate = [[TFLMetalDelegate alloc] init];
    }
    // Initialize interpreter with delegate
      

    TfLiteCoreMlDelegateOptions options = {};
    delegate = TfLiteCoreMlDelegateCreate(&options);
    if (delegate == NULL) {
      // Add Metal delegate options if necessary
      delegate = TFLGpuDelegateCreate(NULL);
    }
    // Initialize interpreter with delegate
      

প্রতিনিধি তৈরির যুক্তি তার নিউরাল ইঞ্জিনের উপলভ্যতা নির্ধারণ করতে ডিভাইসের মেশিন আইডি (যেমন iPhone11,1) পড়ে। আরও বিশদ জন্য কোড দেখুন। অন্যথা, আপনি যেমন অন্যান্য লাইব্রেরি ব্যবহার denylist ডিভাইস আপনার নিজের সেট বাস্তবায়ন করতে পারে DeviceKit

পুরানো কোর এমএল সংস্করণ ব্যবহার করে

আইওএস 13 যদিও কোর এমএল 3 সমর্থন করে তবে কোর এমএল 2 মডেলের নির্দিষ্টকরণের সাথে রূপান্তরিত হলে মডেলটি আরও ভালভাবে কাজ করতে পারে। লক্ষ্য রূপান্তর সংস্করণটি ডিফল্টরূপে সর্বশেষতম সংস্করণে সেট করা থাকে তবে আপনি পুরানো সংস্করণে প্রতিনিধি বিকল্পটিতে coreml_version coreMLVersion ( coreml_versioncoreml_version ) সেট করে এটি পরিবর্তন করতে পারেন।

সমর্থিত অপ্স

নিম্নলিখিত এমপিগুলি কোর এমএল প্রতিনিধি দ্বারা সমর্থিত।

  • অ্যাড
    • কেবলমাত্র নির্দিষ্ট আকার সম্প্রচারযোগ্য। কোর এমএল টেনসর লেআউটে, নিম্নলিখিত টেনসর আকারগুলি সম্প্রচারযোগ্য। [B, C, H, W] , [B, C, 1, 1] , [B, 1, H, W] , [B, 1, 1, 1]
  • গড়পুল 2 ডি
  • কনক্যাট
    • চ্যানেল অক্ষের সাথে সংঘবদ্ধকরণ করা উচিত।
  • কনভ 2 ডি
    • ওজন এবং পক্ষপাত স্থির হওয়া উচিত।
  • DepthwiseConv2D
    • ওজন এবং পক্ষপাত স্থির হওয়া উচিত।
  • সম্পূর্ণরূপে সংযুক্ত (ওরফে ঘন বা অভ্যন্তরীণ উত্পাদন)
    • ওজন এবং পক্ষপাত (যদি উপস্থিত থাকে) ধ্রুবক হওয়া উচিত।
    • শুধুমাত্র একক ব্যাচের ক্ষেত্রে সমর্থন করে। শেষ মাত্রা ব্যতীত ইনপুট মাত্রা 1 হওয়া উচিত।
  • হার্ডসুইশ
  • লজিস্টিক (ওরফে সিগময়েড)
  • ম্যাক্সপুল 2 ডি
  • মিররপ্যাড
    • কেবল REFLECT মোড সহ 4D ইনপুট সমর্থিত। প্যাডিং ধ্রুবক হওয়া উচিত, এবং শুধুমাত্র এইচ এবং ডাব্লু মাত্রার জন্য অনুমোদিত।
  • মুল
    • কেবলমাত্র নির্দিষ্ট আকার সম্প্রচারযোগ্য। কোর এমএল টেনসর লেআউটে, নিম্নলিখিত টেনসর আকারগুলি সম্প্রচারযোগ্য। [B, C, H, W] , [B, C, 1, 1] , [B, 1, H, W] , [B, 1, 1, 1]
  • প্যাড এবং প্যাডভি 2
    • কেবল 4D ইনপুট সমর্থিত। প্যাডিং ধ্রুবক হওয়া উচিত, এবং শুধুমাত্র এইচ এবং ডাব্লু মাত্রার জন্য অনুমোদিত।
  • রেলু
  • ReluN1To1
  • রিলু 6
  • পুনরায় আকার দিন
    • কেবলমাত্র যখন লক্ষ্য এমএল সংস্করণ 2 হয় তখনই সমর্থিত, কোর এমএল 3 টার্গেট করার সময় সমর্থিত নয়।
  • রেজাইজবিলাইনার
  • সফটম্যাক্স
  • তানহ
  • ট্রান্সপোজকনভ
    • ওজন স্থির হওয়া উচিত।

মতামত

সমস্যাগুলির জন্য, দয়া করে পুনরুত্পাদন করার জন্য সমস্ত প্রয়োজনীয় বিশদ সহ একটি গিটহাব ইস্যু তৈরি করুন।

FAQ

  • যদি কোনও গ্রাফ যদি অসমর্থিত অপস থাকে তবে কোরিএমএল সিপিইউতে ফ্যালব্যাক সমর্থন করে?
    • হ্যাঁ
  • CoreML প্রতিনিধি আইওএস সিমুলেটারে কাজ করে?
    • হ্যাঁ. লাইব্রেরিতে x86 এবং x86_64 টার্গেট অন্তর্ভুক্ত রয়েছে যাতে এটি একটি সিমুলেটারে চলতে পারে তবে আপনি সিপিইউতে পারফরম্যান্স বৃদ্ধিতে দেখতে পাবেন না।
  • টেনসরফ্লো লাইট এবং কোরিএমএল প্রতিনিধিরা ম্যাকসকে সমর্থন করে?
    • টেনসরফ্লো লাইটটি কেবল আইওএস এ পরীক্ষিত তবে ম্যাকওএসে নয়।
  • কাস্টম টিএফ লাইট অপ্স সমর্থিত?
    • না, কোরিএমএল প্রতিনিধি কাস্টম অপসকে সমর্থন করে না এবং তারা সিপিইউতে ফ্যালব্যাক করবে।

এপিআই