इस दस्तावेज़ में, LiteRT iOS लाइब्रेरी को खुद बनाने का तरीका बताया गया है. आम तौर पर, आपको LiteRT iOS लाइब्रेरी बनाने की ज़रूरत नहीं होती. अगर आपको इसका इस्तेमाल करना है, तो सबसे आसान तरीका है पहले से बने स्टेबल या नाइटली का इस्तेमाल करना LiteRT CocoaPods की रिलीज़. iOS देखें क्विकस्टार्ट देखें, ताकि आप iOS में इनका इस्तेमाल करने के बारे में ज़्यादा जानकारी पा सकें प्रोजेक्ट.
स्थानीय तौर पर बनाया जा रहा है
कुछ मामलों में, हो सकता है कि आप LiteRT के लोकल बिल्ड का इस्तेमाल करना चाहें, उदाहरण के लिए, जब आपको LiteRT में स्थानीय बदलाव करने हों और उनकी जांच करनी हो में बदलाव किए हैं या आप हमारे दिए गए डाइनैमिक वन. स्थानीय तौर पर LiteRT के लिए यूनिवर्सल iOS फ़्रेमवर्क बनाने के लिए, तो आपको इसे macOS मशीन पर Basel का इस्तेमाल करके बनाना होगा.
Xcode इंस्टॉल करें
अगर आपने पहले से ऐसा नहीं किया है, तो आपको Xcode 8 या उसके बाद के वर्शन और ऐसे ही अन्य टूल इंस्टॉल करने होंगे
xcode-select
का इस्तेमाल करके:
xcode-select --install
अगर यह एक नया इंस्टॉल है, तो आपको सभी के लिए लाइसेंस अनुबंध स्वीकार करना होगा निम्न आदेश वाले उपयोगकर्ता:
sudo xcodebuild -license accept
Basel इंस्टॉल करें
TensorFlow का मुख्य बिल्ड सिस्टम Baज़ल है. बेज़ेल को इस तरह इंस्टॉल करें:
Basel की वेबसाइट पर निर्देश दिए गए हैं. अपनी सदस्यता के बारे में
_TF_MIN_BAZEL_VERSION
और _TF_MAX_BAZEL_VERSION
के बीच का यह वर्शन है
configure.py
फ़ाइल, tensorflow
डेटा स्टोर करने की जगह के रूट में मौजूद है.
Workspace और .baselrc को कॉन्फ़िगर करें
TensorFlow की रूट चेकआउट डायरेक्ट्री में ./configure
स्क्रिप्ट चलाएं और
"हां" में जवाब दें जब स्क्रिप्ट आपसे पूछती है कि क्या आपको iOS के साथ TensorFlow बनाना है
सहायता.
TensorFlowLiteC के लिए डाइनैमिक फ़्रेमवर्क बनाएं (सुझाया गया)
iOS समर्थन के साथ Basel के सही तरीके से कॉन्फ़िगर हो जाने के बाद, आप
TensorFlowLiteC
फ़्रेमवर्क जिसमें ये निर्देश दिए गए हैं.
bazel build --config=ios_fat -c opt --cxxopt=--std=c++17 \
//tensorflow/lite/ios:TensorFlowLiteC_framework
यह निर्देश इसके तहत TensorFlowLiteC_framework.zip
फ़ाइल जनरेट करेगा
आपकी TensorFlow रूट डायरेक्ट्री में bazel-bin/tensorflow/lite/ios/
डायरेक्ट्री.
डिफ़ॉल्ट रूप से, जनरेट किए गए फ़्रेमवर्क में "फ़ैट" शामिल होता है बाइनरी, जिसमें आर्मv7 शामिल है,
आर्म64, और 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
नाम की फ़ाइल जनरेट करेगा
आपके TensorFlow रूट की bazel-bin/tensorflow/lite/ios/
डायरेक्ट्री में
डायरेक्ट्री. यह स्टैटिक फ़्रेमवर्क ठीक उसी तरह इस्तेमाल किया जा सकता है जिस तरह
डाइनैमिक वन.
TFLite फ़्रेमवर्क को चुनिंदा तरीके से बनाना
चुनिंदा मॉडल का इस्तेमाल करके, सिर्फ़ मॉडल के सेट को टारगेट करने वाले छोटे फ़्रेमवर्क बनाए जा सकते हैं बिल्ड शामिल है, जो आपके मॉडल सेट में इस्तेमाल न होने वाली कार्रवाइयों को छोड़ देगा और सिर्फ़ मॉडल के दिए गए सेट को चलाने के लिए ज़रूरी ऑप कर्नेल. इसका निर्देश इस तरह का है:
bash tensorflow/lite/ios/build_frameworks.sh \
--input_models=model1.tflite,model2.tflite \
--target_archs=x86_64,armv7,arm64
ऊपर दिया गया निर्देश, स्टैटिक फ़्रेमवर्क जनरेट करेगा
TensorFlow के लिए bazel-bin/tensorflow/lite/ios/tmp/TensorFlowLiteC_framework.zip
लाइट बिल्ट-इन और कस्टम ऑपरेशन; और वैकल्पिक रूप से, स्टैटिक फ़्रेमवर्क जनरेट करता है.
bazel-bin/tensorflow/lite/ios/tmp/TensorFlowLiteSelectTfOps_framework.zip
अगर
आपके मॉडल में Select TensorFlow ops शामिल है. ध्यान दें कि --target_archs
फ़्लैग
का इस्तेमाल आपके डिप्लॉयमेंट आर्किटेक्चर को तय करने के लिए किया जा सकता है.
अपने ऐप्लिकेशन में इस्तेमाल करें
CocoaPods डेवलपर
LiteRT के लिए तीन CocoaPods हैं:
TensorFlowLiteSwift
: यह LiteRT के लिए Swift API उपलब्ध कराता है.TensorFlowLiteObjC
: यह LiteRT के लिए Objective-C एपीआई उपलब्ध कराता है.TensorFlowLiteC
: कॉमन बेस पॉड, जो LiteRT कोर को एम्बेड करता है रनटाइम को एक्सपोर्ट करता है और ऊपर दिए गए दो पॉड के लिए इस्तेमाल किए गए बेस C API की जानकारी देता है. इसका लक्ष्य नहीं होना चाहिए उपयोगकर्ताओं को सीधे तौर पर इसका इस्तेमाल करना चाहिए.
डेवलपर के तौर पर, आपको TensorFlowLiteSwift
या
आपके ऐप्लिकेशन की भाषा के आधार पर TensorFlowLiteObjC
पॉड, लेकिन
दोनों नहीं. LiteRT के लोकल बिल्ड का इस्तेमाल करने के तरीके अलग-अलग हैं,
यह इस बात पर निर्भर करता है कि आपको कौनसा पार्ट बनाना है.
लोकल Swift या Objective-C एपीआई इस्तेमाल करना
अगर CocoaPods का इस्तेमाल किया जा रहा है और आपको सिर्फ़ LiteRT के Swift API या Objective-C एपीआई, यहां दिया गया तरीका अपनाएं.
tensorflow
के चेकआउट पेज पर, Swift या Objective-C एपीआई में बदलाव करें.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 का इस्तेमाल करना देखें Core सेक्शन में बताया गया है).अपने iOS प्रोजेक्ट के
Podfile
में, डिपेंडेंसी को इस तरह बदलें आपकी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
फ़्रेमवर्क आपके निजी डेटा स्टोर करने की जगह के लिए. आप इस podspec को कॉपी कर सकते हैं
फ़ाइल में सेट अप किया जा सकता है और कुछ मानों में बदलाव किया जा सकता है:
...
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 का इस्तेमाल करें
पॉड को शेड्यूल किया जा सकता है.
बेज़ल डेवलपर्स
अगर मुख्य बिल्ड टूल के तौर पर Basel का इस्तेमाल किया जा रहा है, तो आपके पास
आपकी BUILD
फ़ाइल में, टारगेट पर TensorFlowLite
निर्भरता.
Swift के लिए:
swift_library(
deps = [
"//tensorflow/lite/swift:TensorFlowLite",
],
)
Objective-C के लिए:
objc_library(
deps = [
"//tensorflow/lite/objc:TensorFlowLite",
],
)
ऐप्लिकेशन प्रोजेक्ट बनाने के बाद, LiteRT लाइब्रेरी में होने वाला कोई भी बदलाव उस सुविधा को अपने ऐप्लिकेशन में आसानी से इस्तेमाल कर सकते हैं.
Xcode प्रोजेक्ट की सेटिंग में सीधे बदलाव करें
LiteRT जोड़ने के लिए, CocoaPods या Basel का इस्तेमाल करने का सुझाव दिया जाता है
निर्भर नहीं करता है. अगर आपको अब भी TensorFlowLiteC
जोड़ना है
फ़्रेमवर्क को मैन्युअल तौर पर जोड़ना होगा, तो आपको TensorFlowLiteC
फ़्रेमवर्क को
आपके ऐप्लिकेशन प्रोजेक्ट में एम्बेड किया गया फ़्रेमवर्क. अनज़िप करें
TensorFlowLiteC_framework.zip
को पाने के लिए ऊपर दिए गए बिल्ड से जनरेट किया गया
TensorFlowLiteC.framework
डायरेक्ट्री. यह डायरेक्ट्री असल फ़्रेमवर्क है
जिसे Xcode समझ सकता है.
TensorFlowLiteC.framework
तैयार करने के बाद, आपको सबसे पहले उसे जोड़ना होगा
आपके ऐप्लिकेशन टारगेट में एम्बेड किए गए बाइनरी के तौर पर. यह
यह आपके Xcode वर्शन के आधार पर अलग-अलग हो सकता है.
- Xcode 11: 'General' पर जाएं प्रोजेक्ट संपादक के टैब पर क्लिक करके,
और जोड़ें
TensorFlowLiteC.framework
के अंतर्गत 'Frameworks, Libraries, एम्बेड किया गया कॉन्टेंट' सेक्शन में जाएं. - Xcode 10 और इससे पहले के वर्शन: 'General' पर जाएं टैब पर जाकर, प्रोजेक्ट एडिटर के
और 'एम्बेड किए गए' में
TensorFlowLiteC.framework
को जोड़ें बाइनरी. फ़्रेमवर्क अपने-आप 'लिंक किया गया' में भी जुड़ जाना चाहिए फ़्रेमवर्क और लाइब्रेरी सेक्शन में जाएं.
जब आप फ़्रेमवर्क को एम्बेड की गई बाइनरी के तौर पर जोड़ते हैं, तो Xcode
'फ़्रेमवर्क खोज पाथ' 'बिल्ड सेटिंग' में दी गई एंट्री पैरंट को शामिल करने के लिए, Tab दबाएं
आपके फ़्रेमवर्क की डायरेक्ट्री. अगर ऐसा अपने-आप नहीं होता है, तो आपको
को TensorFlowLiteC.framework
की पैरंट डायरेक्ट्री को मैन्युअल तरीके से जोड़ना चाहिए
डायरेक्ट्री.
ये दो सेटिंग पूरी हो जाने के बाद, आप
LiteRT का C API, जिसे
TensorFlowLiteC.framework/Headers
डायरेक्ट्री.