Ky dokument përshkruan se si të ndërtoni vetë bibliotekën LiteRT iOS. Normalisht, nuk keni nevojë të ndërtoni lokalisht bibliotekën LiteRT iOS. Nëse thjesht dëshironi ta përdorni, mënyra më e lehtë është të përdorni versionet e para-ndërtuara të qëndrueshme ose të natës të LiteRT CocoaPods. Shikoni fillimin e shpejtë të iOS për më shumë detaje se si t'i përdorni ato në projektet tuaja iOS.
Ndërtimi në vend
Në disa raste, mund të dëshironi të përdorni një ndërtim lokal të LiteRT, për shembull kur dëshironi të bëni ndryshime lokale në LiteRT dhe t'i testoni ato ndryshime në aplikacionin tuaj iOS ose preferoni të përdorni kornizën statike në krahasim me atë dinamike të ofruar. Për të krijuar një kornizë universale iOS për LiteRT në nivel lokal, duhet ta ndërtoni atë duke përdorur Bazel në një makinë macOS.
Instaloni Xcode
Nëse nuk e keni bërë tashmë, do t'ju duhet të instaloni Xcode 8 ose më vonë dhe mjetet duke përdorur xcode-select
:
xcode-select --install
Nëse ky është një instalim i ri, do t'ju duhet të pranoni marrëveshjen e licencës për të gjithë përdoruesit me komandën e mëposhtme:
sudo xcodebuild -license accept
Instaloni Bazel
Bazel është sistemi kryesor i ndërtimit për TensorFlow. Instaloni Bazel sipas udhëzimeve në faqen e internetit të Bazel . Sigurohuni që të zgjidhni një version midis _TF_MIN_BAZEL_VERSION
dhe _TF_MAX_BAZEL_VERSION
në skedarin configure.py
në rrënjën e depove tensorflow
.
Konfiguro WORKSPACE dhe .bazelrc
Ekzekutoni skriptin ./configure
në direktorinë rrënjësore të blerjes së TensorFlow dhe përgjigjuni "Po" kur skripti ju pyet nëse dëshironi të ndërtoni TensorFlow me mbështetje për iOS.
Ndërtimi i kornizës dinamike TensorFlowLiteC (rekomandohet)
Pasi Bazel të konfigurohet siç duhet me mbështetjen e iOS, mund të ndërtoni kornizën TensorFlowLiteC
me komandën e mëposhtme.
bazel build --config=ios_fat -c opt --cxxopt=--std=c++17 \
//tensorflow/lite/ios:TensorFlowLiteC_framework
Kjo komandë do të gjenerojë skedarin TensorFlowLiteC_framework.zip
nën drejtorinë bazel-bin/tensorflow/lite/ios/
nën drejtorinë tuaj rrënjësore TensorFlow. Si parazgjedhje, korniza e gjeneruar përmban një binar "fat", që përmban armv7, arm64 dhe x86_64 (por jo i386). Për të parë listën e plotë të flamujve të ndërtimit të përdorur kur specifikoni --config=ios_fat
, ju lutemi referojuni seksionit të konfigurimeve të iOS në skedarin .bazelrc
.
Ndërtoni kornizën statike TensorFlowLiteC
Si parazgjedhje, ne shpërndajmë kornizën dinamike vetëm përmes Cocoapods. Nëse dëshironi të përdorni kornizën statike në vend të kësaj, mund të ndërtoni kornizën statike TensorFlowLiteC
me komandën e mëposhtme:
bazel build --config=ios_fat -c opt --cxxopt=--std=c++17 \
//tensorflow/lite/ios:TensorFlowLiteC_static_framework
Komanda do të gjenerojë një skedar të quajtur TensorFlowLiteC_static_framework.zip
nën drejtorinë bazel-bin/tensorflow/lite/ios/
nën drejtorinë tuaj rrënjësore TensorFlow. Ky kuadër statik mund të përdoret saktësisht në të njëjtën mënyrë si ai dinamik.
Ndërtoni në mënyrë selektive korniza TFLite
Ju mund të ndërtoni korniza më të vogla që synojnë vetëm një grup modelesh duke përdorur një ndërtim selektiv, i cili do të kapërcejë operacionet e papërdorura në grupin tuaj të modeleve dhe do të përfshijë vetëm kernelët e nevojshëm për ekzekutimin e grupit të caktuar të modeleve. Komanda është si më poshtë:
bash tensorflow/lite/ios/build_frameworks.sh \
--input_models=model1.tflite,model2.tflite \
--target_archs=x86_64,armv7,arm64
Komanda e mësipërme do të gjenerojë kornizën statike bazel-bin/tensorflow/lite/ios/tmp/TensorFlowLiteC_framework.zip
për funksionet e integruara dhe të personalizuara të TensorFlow Lite; dhe opsionalisht, gjeneron kornizën statike bazel-bin/tensorflow/lite/ios/tmp/TensorFlowLiteSelectTfOps_framework.zip
nëse modelet tuaja përmbajnë Ops Select TensorFlow. Vini re se flamuri --target_archs
mund të përdoret për të specifikuar arkitekturat tuaja të vendosjes.
Përdoreni në aplikacionin tuaj
Zhvilluesit e CocoaPods
Ekzistojnë tre CocoaPods për LiteRT:
-
TensorFlowLiteSwift
: Ofron API-të Swift për LiteRT. -
TensorFlowLiteObjC
: Ofron API-të Objective-C për LiteRT. -
TensorFlowLiteC
: Baza e përbashkët e podit, e cila ngulit kohën e funksionimit bazë LiteRT dhe ekspozon API-të bazë C të përdorura nga dy podet e mësipërme. Nuk është menduar të përdoret drejtpërdrejt nga përdoruesit.
Si zhvillues, duhet të zgjidhni ose TensorFlowLiteSwift
ose TensorFlowLiteObjC
pod bazuar në gjuhën në të cilën është shkruar aplikacioni juaj, por jo të dyja. Hapat e saktë për përdorimin e ndërtimeve lokale të LiteRT ndryshojnë, në varësi të asaj pjese të saktë që dëshironi të ndërtoni.
Përdorimi i API-ve lokale Swift ose Objective-C
Nëse jeni duke përdorur CocoaPods dhe dëshironi të provoni vetëm disa ndryshime lokale në API-të Swift të LiteRT ose API-të Objective-C , ndiqni hapat këtu.
Bëni ndryshime në API-të Swift ose Objective-C në arkën tuaj
tensorflow
.Hapni skedarin
TensorFlowLite(Swift|ObjC).podspec
dhe përditësoni këtë rresht:
s.dependency 'TensorFlowLiteC', "#{s.version}"
të jetë:
s.dependency 'TensorFlowLiteC', "~> 0.0.1-nightly"
Kjo është për t'u siguruar që po ndërtoni API-të tuaja Swift ose Objective-C kundër versionit më të fundit të disponueshëm për natë të API-veTensorFlowLiteC
(të ndërtuara çdo natë midis orës 1-4 të mëngjesit të kohës së Paqësorit) në vend të versionit të qëndrueshëm, i cili mund të jetë i vjetëruar në krahasim me arkëtimin tuaj lokaltensorflow
. Përndryshe, ju mund të zgjidhni të publikoni versionin tuaj tëTensorFlowLiteC
dhe të përdorni atë version (shihni Përdorimi i seksionit bazë lokal të LiteRT më poshtë).Në
Podfile
të projektit tuaj iOS, ndryshoni varësinë si më poshtë për të treguar shtegun lokal në direktorinë tuaj rrënjësoretensorflow
.
Për Swift:
pod 'TensorFlowLiteSwift', :path => '<your_tensorflow_root_dir>'
Për objektivin-C:
pod 'TensorFlowLiteObjC', :path => '<your_tensorflow_root_dir>'
Përditësoni instalimin e pod nga direktoria kryesore e projektit tuaj iOS.
$ pod update
Rihapni hapësirën e krijuar të punës (
<project>.xcworkspace
) dhe rindërtoni aplikacionin tuaj brenda Xcode.
Duke përdorur bërthamën lokale LiteRT
Mund të konfiguroni një depo private të specifikave të CocoaPods dhe të publikoni kornizën tuaj të personalizuar TensorFlowLiteC
në depon tuaj private. Ju mund ta kopjoni këtë skedar podspec dhe të modifikoni disa vlera:
...
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'
...
Pasi të krijoni skedarin tuaj TensorFlowLiteC.podspec
, mund të ndiqni udhëzimet për përdorimin e CocoaPods private për ta përdorur atë në projektin tuaj. Ju gjithashtu mund të modifikoni TensorFlowLite(Swift|ObjC).podspec
për të treguar në podin tuaj të personalizuar TensorFlowLiteC
dhe të përdorni ose Swift ose Objective-C pod në projektin tuaj të aplikacionit.
Zhvilluesit e Bazel
Nëse po përdorni Bazel si mjetin kryesor të ndërtimit, thjesht mund të shtoni varësinë TensorFlowLite
në objektivin tuaj në skedarin tuaj BUILD
.
Për Swift:
swift_library(
deps = [
"//tensorflow/lite/swift:TensorFlowLite",
],
)
Për objektivin-C:
objc_library(
deps = [
"//tensorflow/lite/objc:TensorFlowLite",
],
)
Kur ndërtoni projektin tuaj të aplikacionit, çdo ndryshim në bibliotekën LiteRT do të merret dhe do të futet në aplikacionin tuaj.
Ndryshoni drejtpërdrejt cilësimet e projektit Xcode
Rekomandohet shumë të përdorni CocoaPods ose Bazel për të shtuar varësinë LiteRT në projektin tuaj. Nëse ende dëshironi të shtoni manualisht kornizën TensorFlowLiteC
, do t'ju duhet të shtoni kornizën TensorFlowLiteC
si një kornizë të integruar në projektin tuaj të aplikacionit. Shkëputni TensorFlowLiteC_framework.zip
të krijuar nga ndërtimi i mësipërm për të marrë direktorinë TensorFlowLiteC.framework
. Kjo direktori është korniza aktuale të cilën Xcode mund ta kuptojë.
Pasi të keni përgatitur TensorFlowLiteC.framework
, fillimisht duhet ta shtoni atë si një binar të integruar në objektivin e aplikacionit tuaj. Seksioni i saktë i cilësimeve të projektit për këtë mund të ndryshojë në varësi të versionit tuaj Xcode.
- Xcode 11: Shkoni te skeda "Të përgjithshme" të redaktuesit të projektit për objektivin e aplikacionit tuaj dhe shtoni
TensorFlowLiteC.framework
nën seksionin "Kornizat, bibliotekat dhe përmbajtjet e integruara". - Xcode 10 dhe më poshtë: Shkoni te skeda 'Të përgjithshme' të redaktuesit të projektit për objektivin e aplikacionit tuaj dhe shtoni kornizën
TensorFlowLiteC.framework
nën 'Binarët e integruar'. Korniza duhet gjithashtu të shtohet automatikisht nën seksionin "Kornizat e lidhura dhe bibliotekat".
Kur shtoni kornizën si një binar të integruar, Xcode do të përditësonte gjithashtu hyrjen "Shtigjet e kërkimit të kornizës" nën skedën "Cilësimet e ndërtimit" për të përfshirë drejtorinë mëmë të kornizës suaj. Në rast se kjo nuk ndodh automatikisht, duhet të shtoni manualisht drejtorinë prind të drejtorisë TensorFlowLiteC.framework
.
Pasi të kryhen këto dy cilësime, duhet të jeni në gjendje të importoni dhe telefononi API-në C të LiteRT, të përcaktuar nga skedarët e kokës nën drejtorinë TensorFlowLiteC.framework/Headers
.