Bu dokümanda, LiteRT iOS kitaplığını kendi başınıza nasıl oluşturacağınız açıklanmaktadır. Normalde LiteRT iOS kitaplığını yerel olarak derlemeniz gerekmez. Şu durumda: kullanmak istiyorsanız, en kolay yol önceden oluşturulmuş kararlı veya her gece CocoaPods kullanıma sunuldu. Bkz. iOS bunları iOS'de nasıl kullanacağınıza ilişkin daha fazla bilgi için hızlı başlangıç bilgi edinmenizi sağlar.
Yerel olarak geliştirme
Bazı durumlarda, kullanıcılarınızın bilgilerini almak için LiteRT'in Örneğin, LiteRT'de yerel değişiklikler yapmak ve bu değişiklikleri test etmek veya sağladığımız statik çerçeveyi kullanmayı tercih ediyorsanız dinamik olanı seçin. LiteRT için yerel olarak evrensel bir iOS çerçevesi oluşturmak amacıyla macOS makinesinde Bazel kullanarak derlemeniz gerekiyor.
Xcode'u yükle
Henüz yapmadıysanız Xcode 8 veya sonraki bir sürümü ve diğer araçları yüklemeniz gerekir.
xcode-select
kullanılarak:
xcode-select --install
Bu yeni bir yüklemeyse tüm uygulamalar için lisans sözleşmesini kabul etmeniz kullanıcıları şu komutla kontrol edebilir:
sudo xcodebuild -license accept
Bazel'i yükleme
Bazel, TensorFlow için birincil derleme sistemidir. Bazel'i
talimatları Bazel web sitesinde bulabilirsiniz. Hedef kitlenizin kim olduğunu
_TF_MIN_BAZEL_VERSION
ile _TF_MAX_BAZEL_VERSION
arasındaki sürüm
tensorflow
deposunun kökünde configure.py
dosyası var.
WORKSPACE ve .bazelrc'i yapılandırın
Kök TensorFlow ödeme dizininde ./configure
komut dosyasını çalıştırın ve
"Evet" yanıtı ver komut dosyası, iOS ile TensorFlow oluşturmak isteyip istemediğinizi sorduğunda
destek.
TensorFlowLiteC dinamik çerçevesi oluşturma (önerilen)
Bazel, iOS desteğiyle doğru şekilde yapılandırıldıktan sonra yeni
TensorFlowLiteC
çerçevesini kullanabilirsiniz.
bazel build --config=ios_fat -c opt --cxxopt=--std=c++17 \
//tensorflow/lite/ios:TensorFlowLiteC_framework
Bu komut, TensorFlowLiteC_framework.zip
dosyasını
TensorFlow kök dizininizin altında bazel-bin/tensorflow/lite/ios/
dizini.
Oluşturulan çerçeve varsayılan olarak bir "fat" parametresi içerir. armv7 içeren ikili,
arm64 ve x86_64 (ancak i386 yok). Aşağıdaki durumlarda kullanılan derleme işaretlerinin tam listesini görmek için:
--config=ios_fat
öğesini belirtirseniz lütfen
.bazelrc
dosya.
TensorFlowLiteC statik çerçevesi oluşturma
Varsayılan olarak dinamik çerçeveyi yalnızca Cocoapod'lar aracılığıyla dağıtırız. Şunu istiyorsanız:
yerine statik çerçeveyi kullanmak için TensorFlowLiteC
statik
çerçevesini aşağıdaki komutla değiştirin:
bazel build --config=ios_fat -c opt --cxxopt=--std=c++17 \
//tensorflow/lite/ios:TensorFlowLiteC_static_framework
Komut, TensorFlowLiteC_static_framework.zip
adlı bir dosya oluşturur
TensorFlow kökünüzün altındaki bazel-bin/tensorflow/lite/ios/
dizininin altında
dizin. Bu statik çerçeve,
dinamik olanı seçin.
TFLite çerçevelerini seçerek derleyin
Seçmeli sistem kullanarak yalnızca bir dizi modeli hedefleyen daha küçük çerçeveler oluşturabilirsiniz. model kümesindeki kullanılmayan işlemleri atlar ve yalnızca belirtilen model grubunu çalıştırmak için gereken işlem çekirdekleri. Komut aşağıdaki gibidir:
bash tensorflow/lite/ios/build_frameworks.sh \
--input_models=model1.tflite,model2.tflite \
--target_archs=x86_64,armv7,arm64
Yukarıdaki komut statik çerçeveyi oluşturur
TensorFlow için bazel-bin/tensorflow/lite/ios/tmp/TensorFlowLiteC_framework.zip
Yerleşik basit işlemler ve özel işlemler isteğe bağlı olarak statik çerçeveyi
Şu durumda bazel-bin/tensorflow/lite/ios/tmp/TensorFlowLiteSelectTfOps_framework.zip
Modelleriniz Select TensorFlow işlemleri içeriyor. --target_archs
işaretinin
birlikte kullanıldığında, dağıtım mimarilerinizi belirtmek için kullanılır.
Kendi uygulamanızda kullanın
CocoaPods geliştiricileri
LiteRT için üç CocoaPod bulunur:
TensorFlowLiteSwift
: LiteRT için Swift API'lerini sağlar.TensorFlowLiteObjC
: LiteRT için Objective-C API'lerini sağlar.TensorFlowLiteC
: LiteRT çekirdeğinin yerleştirildiği yaygın temel kapsül çalışma zamanına geçiş yapar ve yukarıdaki iki kapsül tarafından kullanılan temel C API'lerini sunar. Amaçlanmadı kullanabilmelerini sağlar.
Geliştirici olarak TensorFlowLiteSwift
veya
Uygulamanızın yazıldığı dile göre TensorFlowLiteObjC
kapsülü, ancak
her ikisi birden değil. LiteRT'in yerel derlemelerini kullanmak için uygulanacak adımlar farklılık gösterir,
tam olarak hangi bölümü oluşturmak istediğinize bağlı olarak.
Yerel Swift veya Objective-C API'lerini kullanma
CocoaPods kullanıyorsanız ve LiteRT'in Swift API'leri veya Objective-C API'leri varsa buradaki adımları uygulayın.
tensorflow
ödeme sayfasında Swift veya Objective-C API'lerinde değişiklik yapın.TensorFlowLite(Swift|ObjC).podspec
dosyasını açın ve şu satırı güncelleyin:
s.dependency 'TensorFlowLiteC', "#{s.version}"
değer:
s.dependency 'TensorFlowLiteC', "~> 0.0.1-nightly"
Bunun nedeni, Swift veya Objective-C API'lerinizi oluşturduğunuzdan emin olmaktırTensorFlowLiteC
API'nin mevcut en son gecelik sürümüne kıyasla (Pasifik Saati'ne göre her gece 01:00-04:00 arasında oluşturulur) yereltensorflow
ödemenizle karşılaştırıldığında güncel olmayabilir. Alternatif olarak, kendi sürümünüzü yayınlamayı da tercih edebilirsiniz.TensorFlowLiteC
ve bu sürümü kullanın (Yerel LiteRT'i kullanma bölümüne bakın) temel bölümüne bakın).iOS projenizin
Podfile
bölümünde bağımlılığı aşağıdaki gibi değiştirin:tensorflow
kök dizininizin yerel yolunu işaret eder.
. Swift için:
pod 'TensorFlowLiteSwift', :path => '<your_tensorflow_root_dir>'
Hedef C için:
pod 'TensorFlowLiteObjC', :path => '<your_tensorflow_root_dir>'
Kapsül yüklemenizi, iOS projenizin kök dizininden güncelleyin.
$ pod update
Oluşturulan çalışma alanını (
<project>.xcworkspace
) yeniden açıp bir uygulamadır.
Yerel LiteRT çekirdeği kullanılıyor
Özel bir CocoaPods özellik deposu oluşturup özel
TensorFlowLiteC
çerçevesini özel deponuza yükleyin. Bu podspec'i kopyalayabilirsiniz.
dosyanıza ekleyin ve birkaç değeri değiştirin:
...
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'
...
Kendi TensorFlowLiteC.podspec
dosyanızı oluşturduktan sonra
özel CocoaPods kullanımına ilişkin talimatları,
sahip olmanız gerekir. Ayrıca TensorFlowLite(Swift|ObjC).podspec
bölümünü şu şekilde de değiştirebilirsiniz:
özel TensorFlowLiteC
kapsülünüze işaret edip Swift veya Objective-C'yi kullanın.
Kapsülü'nü ekleyin.
Bazel geliştiricileri
Bazel'ı ana derleme aracı olarak kullanıyorsanız
BUILD
dosyanızdaki hedefinize TensorFlowLite
bağımlılık.
Swift için:
swift_library(
deps = [
"//tensorflow/lite/swift:TensorFlowLite",
],
)
Hedef-C için:
objc_library(
deps = [
"//tensorflow/lite/objc:TensorFlowLite",
],
)
Uygulama projenizi derlediğinizde, LiteRT kitaplığında yapılan değişiklikler alınıp uygulamanıza yerleştirilmesini sağlar.
Xcode proje ayarlarını doğrudan değiştirin
LiteRT eklemek için CocoaPods veya Bazel kullanılması önemle tavsiye edilir.
belirlemenize yardımcı olabilir. Yine de TensorFlowLiteC
eklemek istiyorsanız
TensorFlowLiteC
çerçevesini manuel olarak eklemeniz
yerleşik çerçeve oluşturmanıza yardımcı olur. Şu sıkıştırılmış dosyayı açın:
Aşağıdaki derlemeden TensorFlowLiteC_framework.zip
oluşturulan
TensorFlowLiteC.framework
dizini. Bu dizin, Google Cloud'un
bunu Xcode'un anlayabileceği şekilde özetler.
TensorFlowLiteC.framework
öğesini hazırladıktan sonra eklemeniz gerekir
olarak ayarlayın. Proje ayarları bölümü,
bu, Xcode sürümünüze bağlı olarak farklılık gösterebilir.
- Xcode 11: "Genel"e gidin sekmesini seçin.
ve
TensorFlowLiteC.framework
öğesini "Çerçeveler, Kitaplıklar ve Yerleştirilmiş İçerik bölümüne bakın. - Xcode 10 ve altı: "Genel" bölümüne gidin proje düzenleyicisindeki
uygulama hedefine gidin ve "Yerleşik" bölümüne
TensorFlowLiteC.framework
İkili Programlar". Çerçeve aynı zamanda "Bağlı" altındaki Çerçeveler ve Kitaplıklar bölümüne bakın.
Çerçeveyi gömülü bir ikili program olarak eklediğinizde Xcode, aynı zamanda
"Arama Ağı Çerçeveleri" "Build Settings" (Derleme Ayarları) altındaki giriş üst öğesini dahil etmek için
dizininize eklenir. Bu işlem otomatik olarak gerçekleşmezse
TensorFlowLiteC.framework
öğesinin üst dizinini manuel olarak eklemelidir
dizin.
Bu iki ayar yapıldıktan sonra, içe aktarma ve
LiteRT'in C API'si;
TensorFlowLiteC.framework/Headers
dizini.