يصف هذا المستند كيفية إنشاء مكتبة LiteRT iOS بنفسك. لا تحتاج عادةً إلى إنشاء مكتبة LiteRT iOS على الجهاز. إذا كنت أردت استخدامه فقط، فإن أسهل طريقة هي استخدام الإصدار الثابت مسبقًا أو الليلي إصدارات LiteRT CocoaPods. راجع iOS Quickstart (التشغيل السريع) لمزيد من التفاصيل حول كيفية استخدامها على جهاز iOS مماثلة.
البناء محليًا
في بعض الحالات، قد ترغب في استخدام إصدار محلي من LiteRT، على سبيل المثال، عندما تريد إجراء تغييرات محلية على LiteRT واختبار تلك التغييرات في تطبيق iOS أو إذا كنت تفضل استخدام إطار العمل الثابت ديناميكي واحد. لإنشاء إطار عمل iOS عام لـ LiteRT محليًا، فإنك بحاجة إلى إنشائه باستخدام Bazel على جهاز macOS.
تثبيت Xcode
إذا لم تكن قد قمت بذلك بالفعل، فستحتاج إلى تثبيت Xcode 8 أو إصدار أحدث والأدوات
باستخدام xcode-select
:
xcode-select --install
إذا كانت هذه عملية تثبيت جديدة، عليك قبول اتفاقية الترخيص للجميع للمستخدمين باستخدام الأمر التالي:
sudo xcodebuild -license accept
تثبيت Bazel
Bazel هو نظام التصميم الأساسي لمنصة TensorFlow. تثبيت تطبيق Bazel وفقًا
التعليمات على موقع Bazel الإلكتروني. تأكد من اختيار
الإصدار بين _TF_MIN_BAZEL_VERSION
و_TF_MAX_BAZEL_VERSION
بوصة
ملف configure.py
في جذر مستودع tensorflow
.
إعداد WORKSPACE و .bazelrc
شغِّل النص البرمجي ./configure
في دليل الدفع TensorFlow الجذر.
الإجابة بـ "نعم" عندما يسألك النص البرمجي عما إذا كنت تريد إنشاء TensorFlow باستخدام iOS
والدعم.
إنشاء إطار عمل ديناميكي TensorFlowLiteC (يُنصح به)
بعد ضبط Bazel بشكل صحيح مع دعم iOS، يمكنك إنشاء
TensorFlowLiteC
باستخدام الأمر التالي.
bazel build --config=ios_fat -c opt --cxxopt=--std=c++17 \
//tensorflow/lite/ios:TensorFlowLiteC_framework
سيُنشئ هذا الأمر ملف TensorFlowLiteC_framework.zip
ضمن
دليل bazel-bin/tensorflow/lite/ios/
ضمن الدليل الجذري على TensorFlow.
بشكل تلقائي، يحتوي إطار العمل الذي تم إنشاؤه على "سمينة" ثنائي يحتوي على Armv7
Arm64 وx86_64 (ولكن ليس i386). للاطّلاع على القائمة الكاملة لعلامات الإصدار التي يتم استخدامها عند
الذي تحدّده --config=ios_fat
، يُرجى الرجوع إلى قسم إعدادات iOS في
ملف واحد (.bazelrc
)
إنشاء إطار عمل ثابت من TensorFlowLiteC
لا نوزِّع إطار العمل الديناميكي تلقائيًا إلا من خلال Cocoapods. إذا أردت
من استخدام إطار العمل الثابت، يمكنك إنشاء بنية TensorFlowLiteC
ثابتة.
باستخدام الأمر التالي:
bazel build --config=ios_fat -c opt --cxxopt=--std=c++17 \
//tensorflow/lite/ios:TensorFlowLiteC_static_framework
سينشئ الأمر ملفًا باسم "TensorFlowLiteC_static_framework.zip
"
ضمن الدليل bazel-bin/tensorflow/lite/ios/
ضمن جذر TensorFlow
الدليل. يمكن استخدام هذا الإطار الثابت بنفس طريقة استخدام
ديناميكي واحد.
إنشاء أُطر عمل TFLite بشكل انتقائي
يمكنك إنشاء أُطر عمل أصغر حجمًا تستهدف مجموعة من النماذج فقط باستخدام النماذج الانتقائية. التي ستتخطى العمليات غير المستخدمة في مجموعة النماذج ولا تتضمن سوى العمليات المطلوبة لتشغيل مجموعة معينة من النماذج. يكون الأمر كما يلي:
bash tensorflow/lite/ios/build_frameworks.sh \
--input_models=model1.tflite,model2.tflite \
--target_archs=x86_64,armv7,arm64
سينشئ الأمر أعلاه إطار العمل الثابت
bazel-bin/tensorflow/lite/ios/tmp/TensorFlowLiteC_framework.zip
في TensorFlow
عمليات مُخصّصة ومُدمَجة وبسيطة وإنشاء إطار عمل ثابت
bazel-bin/tensorflow/lite/ios/tmp/TensorFlowLiteSelectTfOps_framework.zip
إذا
تحتوي نماذجك على عمليات محددة TensorFlow. تجدر الإشارة إلى أنّ العلامة --target_archs
يمكن استخدامها لتحديد بُنى النشر.
الاستخدام في تطبيقك
مطوّرو CocoaPods
هناك ثلاثة أنواع من CocoaPods في LiteRT:
TensorFlowLiteSwift
: توفّر واجهات برمجة تطبيقات Swift لـ LiteRT.TensorFlowLiteObjC
: توفير واجهات برمجة التطبيقات Objective-C لنظام LiteRTTensorFlowLiteC
: المجموعة الأساسية المشتركة التي تتضمّن نواة LiteRT وتكشف عن واجهات برمجة تطبيقات C الأساسية التي تستخدمها الصفحتان أعلاه. ليس الغرض منه يمكن استخدامها بشكل مباشر من قبل المستخدمين.
بصفتك مطوّر برامج، يجب أن تختار إما TensorFlowLiteSwift
أو
TensorFlowLiteObjC
مجموعة استنادًا إلى اللغة التي تمت كتابة تطبيقك بها، ولكن
وليس كليهما. تختلف الخطوات الدقيقة لاستخدام الإصدارات المحلية من LiteRT،
اعتمادًا على الجزء المحدد الذي ترغب في إنشائه.
استخدام واجهات برمجة تطبيقات Swift أو Objective-C المحلية
إذا كنت تستخدم CocoaPods، وتريد فقط اختبار بعض التغييرات المحلية على واجهات برمجة تطبيقات Swift أو Objective-C APIs في LiteRT اتبع الخطوات الواردة هنا.
عليك إجراء تغييرات على واجهات برمجة تطبيقات Swift أو Objective-C عند الدفع على "
tensorflow
".افتح ملف
TensorFlowLite(Swift|ObjC).podspec
وعدِّل هذا السطر:
.s.dependency 'TensorFlowLiteC', "#{s.version}"
لتكون:
s.dependency 'TensorFlowLiteC', "~> 0.0.1-nightly"
يضمن هذا الإجراء إنشاء واجهات برمجة تطبيقات Swift أو Objective-C. مقارنةً بأحدث إصدار متاح ليلاً من واجهات برمجة تطبيقاتTensorFlowLiteC
(يتم بناؤه كل ليلة بين الساعة 1 و4 صباحًا بتوقيت المحيط الهادئ) بدلاً من المحطة الثابتة قد يكون قديمًا مقارنةً بعملية الدفع المحلية فيtensorflow
. وبدلاً من ذلك، يمكنك اختيار نشر نسختك الخاصة منTensorFlowLiteC
واستخدِم هذا الإصدار (راجِع استخدام LiteRT محلي). الأساسية أدناه).في
Podfile
من مشروع iOS، غيِّر التبعية على النحو التالي: يشير إلى المسار المحلي إلى الدليل الجذريtensorflow
.
بالنسبة إلى Swift:
pod 'TensorFlowLiteSwift', :path => '<your_tensorflow_root_dir>'
بالنسبة إلى Objective-C:
pod 'TensorFlowLiteObjC', :path => '<your_tensorflow_root_dir>'
عليك تعديل تثبيت المجموعة من الدليل الجذري لمشروع iOS.
$ pod update
إعادة فتح مساحة العمل التي تم إنشاؤها (
<project>.xcworkspace
) وإعادة إنشاء داخل Xcode.
استخدام حزمة LiteRT الأساسية المحلية
يمكنك إعداد مستودع خاص لمواصفات CocoaPods ونشر مستودعك المخصّص.
TensorFlowLiteC
إطار العمل إلى مستودعك الخاص. يمكنك نسخ هذا البودكاست
ملف وتعديل بعض القيم:
...
s.version = <your_desired_version_tag>
...
# Note the `///`, two from the `file://` and one from the `/path`.
s.source = { :http => "file:///path/to/TensorFlowLiteC_framework.zip" }
...
s.vendored_frameworks = 'TensorFlowLiteC.framework'
...
بعد إنشاء ملف TensorFlowLiteC.podspec
، يمكنك اتّباع الخطوات التالية:
تعليمات حول استخدام CocoaPods الخاصة في حسابك
لمشروعك الخاص. يمكنك أيضًا تعديل TensorFlowLite(Swift|ObjC).podspec
إلى
الإشارة إلى مجموعة TensorFlowLiteC
المخصصة واستخدام إما Swift أو Objective-C
لوحة الإعلانات في مشروع تطبيقك.
مطوّرو Bazel
إذا كنت تستخدم Bazel كأداة إنشاء رئيسية، يمكنك إضافة
تعتمد TensorFlowLite
على هدفك في ملف BUILD
.
بالنسبة إلى Swift:
swift_library(
deps = [
"//tensorflow/lite/swift:TensorFlowLite",
],
)
بالنسبة إلى Objective-C:
objc_library(
deps = [
"//tensorflow/lite/objc:TensorFlowLite",
],
)
عند إنشاء مشروع تطبيقك، ستتم إضافة أي تغييرات إلى مكتبة LiteRT ودمجها في تطبيقك.
تعديل إعدادات مشروع Xcode مباشرةً
يُنصح بشدة باستخدام CocoaPods أو Bazel لإضافة LiteRT.
والتبعية في مشروعك. إذا كنت لا تزال تريد إضافة TensorFlowLiteC
يدويًا، ستحتاج إلى إضافة إطار عمل TensorFlowLiteC
إطار عمل مضمن لمشروع تطبيقك. فك ضغط
TensorFlowLiteC_framework.zip
التي تم إنشاؤها من الإصدار أعلاه للحصول على
دليل TensorFlowLiteC.framework
. هذا الدليل هو إطار العمل الفعلي
والذي يستطيع Xcode فهمه.
بعد الانتهاء من تحضير TensorFlowLiteC.framework
، عليك أولاً إضافته.
كبرنامج ثنائي مضمّن في استهداف تطبيقك. إن قسم إعدادات المشروع الدقيق
قد يختلف ذلك باختلاف إصدار Xcode.
- Xcode 11: الانتقال إلى "الإعدادات العامة" في محرر المشروعات لهدف تطبيقك،
وإضافة
TensorFlowLiteC.framework
ضمن "أطر العمل والمكتبات" المحتوى المضمَّن" . - Xcode 10 والإصدارات الأقدم: الانتقال إلى "الإعدادات العامة" في محرر المشروعات
التطبيق المستهدف، وإضافة
TensorFlowLiteC.framework
ضمن "مضمّنة". Binaries'. يجب إضافة إطار العمل تلقائيًا ضمن قسم "مرتبط" أُطر العمل والمكتبات .
عند إضافة إطار العمل كبرنامج ثنائي مضمن، سيعمل Xcode أيضًا على تحديث
"مسارات البحث في إطار العمل" ضمن "إنشاء الإعدادات" لتضمين علامة التبويب الرئيسية
دليل إطار العمل الخاص بك. في حالة عدم حدوث هذا تلقائيًا، يجب
يجب أن تضيف يدويًا الدليل الرئيسي TensorFlowLiteC.framework
الدليل.
بمجرد الانتهاء من هذين الإعدادين، يُفترض أن تكون قادرًا على استيراد
واجهة برمجة تطبيقات C API لـ LiteRT، المحددة من خلال ملفات العنوان ضمن
دليل TensorFlowLiteC.framework/Headers
.