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).podspecdosyası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ırTensorFlowLiteCAPI'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.TensorFlowLiteCve 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
Podfilebölümünde bağımlılığı aşağıdaki gibi değiştirin:tensorflowkö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 updateOluş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.