iOS için LiteRT oluşturun

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.

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.

  1. tensorflow ödeme sayfasında Swift veya Objective-C API'lerinde değişiklik yapın.

  2. 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ır TensorFlowLiteC 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) yerel tensorflow ö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).

  3. 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>'

  4. Kapsül yüklemenizi, iOS projenizin kök dizininden güncelleyin.
    $ pod update

  5. 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.