LiteRT を使用すると、iOS アプリで TensorFlow、PyTorch、JAX モデルを実行できます。LiteRT システムは、iOS でモデルを迅速かつ効率的に実行するための、事前構築済みでカスタマイズ可能な実行環境を提供します。また、バージョン管理の柔軟性を高め、パフォーマンスを向上させるために、coreML や Metal などのオプションのデリゲートを使用できます。
LiteRT を使用する iOS アプリの例については、LiteRT サンプル リポジトリをご覧ください。
Swift または Objective-C プロジェクトに LiteRT を追加する
LiteRT には、Swift と Objective-C で記述されたネイティブ iOS ライブラリが用意されています。
以降のセクションでは、LiteRT Swift または Objective-C をプロジェクトに追加する方法について説明します。
CocoaPods デベロッパー
Podfile
に LiteRT Pod を追加します。その後、pod install
を実行します。
Swift
use_frameworks!
pod 'TensorFlowLiteSwift'
Objective-C
pod 'TensorFlowLiteObjC'
バージョンの指定
TensorFlowLiteSwift
と TensorFlowLiteObjC
の両方のポッドで、安定版リリースとナイトリー リリースを使用できます。上記の例のようにバージョン制約を指定しない場合は、デフォルトで最新の安定版が pull されます。
バージョン制約を指定することもできます。たとえば、バージョン 2.10.0 に依存する場合は、依存関係を次のように記述します。
pod 'TensorFlowLiteSwift', '~> 2.10.0'
これにより、アプリで使用可能な最新の 2.x.y バージョンの TensorFlowLiteSwift
Pod が使用されます。ナイトリー ビルドに依存する場合は、次のように記述します。
pod 'TensorFlowLiteSwift', '~> 0.0.1-nightly'
2.4.0 バージョンと最新のナイトリー リリースでは、バイナリ サイズを削減するために、デフォルトで GPU と Core ML デリゲートが Pod から除外されます。これらは、subspec を指定して含めることができます。
pod 'TensorFlowLiteSwift', '~> 0.0.1-nightly', :subspecs => ['CoreML', 'Metal']
これにより、LiteRT に追加された最新の機能を使用できるようになります。pod install
コマンドを初めて実行したときに Podfile.lock
ファイルが作成されると、ナイトリー ライブラリのバージョンは現在の日付のバージョンにロックされます。ナイトリー ライブラリを新しいライブラリに更新する場合は、pod update
コマンドを実行する必要があります。
バージョン制約を指定するさまざまな方法の詳細については、Pod バージョンの指定をご覧ください。
Bazel デベロッパー
BUILD
ファイルで、TensorFlowLite
依存関係をターゲットに追加します。
Swift
swift_library(
deps = [
"//tensorflow/lite/swift:TensorFlowLite",
],
)
Objective-C
objc_library(
deps = [
"//tensorflow/lite/objc:TensorFlowLite",
],
)
C/C++ API
または、C API または C++ API を使用することもできます。
# Using C API directly
objc_library(
deps = [
"//tensorflow/lite/c:c_api",
],
)
# Using C++ API directly
objc_library(
deps = [
"//tensorflow/lite:framework",
],
)
ライブラリをインポートする
Swift ファイルの場合は、LiteRT モジュールをインポートします。
import TensorFlowLite
Objective-C ファイルの場合は、傘下ヘッダーをインポートします。
#import "TFLTensorFlowLite.h"
Xcode プロジェクトで CLANG_ENABLE_MODULES = YES
を設定した場合は、モジュールです。
@import TFLTensorFlowLite;