このドキュメントでは、LiteRT iOS ライブラリを独自にビルドする方法について説明します。 通常、LiteRT iOS ライブラリをローカルでビルドする必要はありません。もし 最も簡単な方法は、ビルド済みの安定版または LiteRT CocoaPods のリリースです。詳しくは、iOS クイックスタートをご覧ください。 できます。
ローカルでのビルド
ローカルビルドを使用して次の目的のために LiteRT LiteRT にローカルで変更を加えてテストする場合の例を 静的フレームワークを使用する場合は、 あります。LiteRT のユニバーサル iOS フレームワークをローカルで作成するには、 macOS マシンで Bazel を使ってビルドする必要があります。
Xcode をインストールする
まだインストールしていない場合は、Xcode 8 以降とツールをインストールする必要があります。
xcode-select
を使用:
xcode-select --install
新規にインストールする場合は、すべてのライセンス契約に同意する必要があります。 ユーザーを指定できます。
sudo xcodebuild -license accept
Bazel をインストールする
Bazel は TensorFlow の主要なビルドシステムです。Bazel を
Bazel のウェブサイトの手順をご覧ください。まずキャンペーンタイプで
_TF_MIN_BAZEL_VERSION
~_TF_MAX_BAZEL_VERSION
のバージョン
tensorflow
リポジトリのルートにある configure.py
ファイル。
WORKSPACE と .bazelrc を構成する
TensorFlow チェックアウトのルート ディレクトリで ./configure
スクリプトを実行します。
回答: 「はい」TensorFlow を iOS でビルドするかどうかを尋ねられたとき
サポート。
TensorFlowLiteC 動的フレームワークを構築する(推奨)
Bazel が iOS サポートとともに適切に設定されたら、
TensorFlowLiteC
フレームワークを次のコマンドに置き換えます。
bazel build --config=ios_fat -c opt --cxxopt=--std=c++17 \
//tensorflow/lite/ios:TensorFlowLiteC_framework
このコマンドにより、TensorFlowLiteC_framework.zip
ファイルが以下の場所に生成されます。
bazel-bin/tensorflow/lite/ios/
ディレクトリに配置します。
デフォルトでは、生成されるフレームワークには「fat」というARMv7 を含むバイナリ、
arm64、x86_64(ただし i386 は対象外)。ビルドフラグの完全なリストについては、
--config=ios_fat
を指定する場合は、
.bazelrc
ファイル。
TensorFlowLiteC の静的フレームワークを構築する
デフォルトでは、Cocoapods を介して動的フレームワークのみを配布します。目標
静的フレームワークを使用する場合は、TensorFlowLiteC
静的フレームワークを
フレームワークを使用します。
bazel build --config=ios_fat -c opt --cxxopt=--std=c++17 \
//tensorflow/lite/ios:TensorFlowLiteC_static_framework
このコマンドにより、TensorFlowLiteC_static_framework.zip
という名前のファイルが生成されます。
TensorFlow ルートの bazel-bin/tensorflow/lite/ios/
ディレクトリにある
されます。この静的フレームワークは、Terraform の
あります。
TFLite フレームワークを選択的にビルドする
選択的モデルを使用すれば、特定のモデルのみを対象とする小規模なフレームワークを構築できます。 これにより、モデルセット内の未使用のオペレーションがスキップされ、モデルセット内の 必要な op カーネル。コマンドは次のとおりです。
bash tensorflow/lite/ios/build_frameworks.sh \
--input_models=model1.tflite,model2.tflite \
--target_archs=x86_64,armv7,arm64
上記のコマンドにより、静的フレームワークが生成されます。
bazel-bin/tensorflow/lite/ios/tmp/TensorFlowLiteC_framework.zip
(TensorFlow 用)
Lite の組み込みオペレーションとカスタム オペレーション必要に応じて、静的フレームワークを
次の場合は bazel-bin/tensorflow/lite/ios/tmp/TensorFlowLiteSelectTfOps_framework.zip
モデルに Select TensorFlow オペレーションが
含まれていることを確認しますなお、--target_archs
フラグは
デプロイ アーキテクチャを指定できます。
独自のアプリケーションで使用する
CocoaPods デベロッパー
LiteRT には 3 つの CocoaPods があります。
TensorFlowLiteSwift
: LiteRT 用の Swift API を提供します。TensorFlowLiteObjC
: LiteRT 用の Objective-C API を提供します。TensorFlowLiteC
: LiteRT コアを埋め込む共通のベース Pod 上記の 2 つの Pod で使用されるベース C API を公開します。対象外 ユーザーが直接使用できます。
デベロッパーは、TensorFlowLiteSwift
または
TensorFlowLiteObjC
Pod は、アプリが記述されている言語に基づきますが、
両方ではありません。LiteRT のローカルビルドを使用するための正確な手順は異なります。
どの部分を構築するかによります
ローカルの Swift API または Objective-C API の使用
CocoaPods を使用していて、ローカル環境での変更だけをテストする場合は、 LiteRT の Swift API または Objective-C API こちらの手順に沿って対応してください。
tensorflow
チェックアウトで Swift API または Objective-C API に変更を加えます。TensorFlowLite(Swift|ObjC).podspec
ファイルを開き、
の行を更新します。s.dependency 'TensorFlowLiteC', "#{s.version}"
変更後:
s.dependency 'TensorFlowLiteC', "~> 0.0.1-nightly"
回 これは、確実に Swift API または Objective-C API をビルドするためです。TensorFlowLiteC
API の最新のナイトリー バージョンとの比較 (毎晩午前 1 ~ 4 時(太平洋時間)の間に作成)であり、 バージョンです。ローカルのtensorflow
ご購入手続きと比較すると古くなっている可能性があります。 または、独自のバージョンの公開TensorFlowLiteC
を使用し、そのバージョンを使用します(ローカル LiteRT の使用をご覧ください)。 コアセクションを参照)。iOS プロジェクトの
Podfile
で、次のように依存関係を変更します。tensorflow
ルート ディレクトリへのローカルパスを指します。
Swift の場合:
pod 'TensorFlowLiteSwift', :path => '<your_tensorflow_root_dir>'
Objective-C の場合:
pod 'TensorFlowLiteObjC', :path => '<your_tensorflow_root_dir>'
iOS プロジェクトのルート ディレクトリから Pod のインストールを更新します。
$ pod update
生成されたワークスペース(
<project>.xcworkspace
)を再度開いて、 ダウンロードします。
ローカル LiteRT コアの使用
限定公開の CocoaPods 仕様リポジトリを設定して、カスタム
TensorFlowLiteC
フレームワークを非公開リポジトリに追加します。この podspec をコピーして、
ファイルを開き、いくつかの値を変更します。
...
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'
...
独自の TensorFlowLiteC.podspec
ファイルを作成したら、次の手順に沿って操作します。
限定公開の CocoaPods を使用する手順:
できます。TensorFlowLite(Swift|ObjC).podspec
を次のように変更することもできます。
カスタムの TensorFlowLiteC
Pod を指定して、Swift または Objective-C を使用する
Pod に追加します。
Bazel デベロッパー
Bazel をメインのビルドツールとして使用する場合は、コマンドを
BUILD
ファイル内のターゲットへの TensorFlowLite
依存関係。
Swift の場合:
swift_library(
deps = [
"//tensorflow/lite/swift:TensorFlowLite",
],
)
Objective-C の場合:
objc_library(
deps = [
"//tensorflow/lite/objc:TensorFlowLite",
],
)
アプリ プロジェクトをビルドすると、LiteRT ライブラリに変更を加えると アプリに組み込めます
Xcode プロジェクト設定を直接変更する
LiteRT を追加するには、CocoaPods または Bazel を使用することを強くおすすめします
プロジェクトに組み込めます。TensorFlowLiteC
の追加を引き続きご希望の場合
フレームワークを手動で作成する場合は、TensorFlowLiteC
フレームワークを
組み込みフレームワークをアプリケーション プロジェクトに追加します。
上記のビルドから生成された TensorFlowLiteC_framework.zip
TensorFlowLiteC.framework
ディレクトリ。このディレクトリは、アプリケーションの
Xcode が理解できるものを指定します
TensorFlowLiteC.framework
を準備したら、まずそれを追加します。
アプリのターゲットに埋め込みバイナリとして渡します。[プロジェクトの設定]セクションは
これは Xcode のバージョンによって異なる場合があります。
- Xcode 11: [全般] に移動アプリ ターゲットのプロジェクト エディタの
TensorFlowLiteC.framework
を [Frameworks, Libraries, and 埋め込みコンテンツ。 - Xcode 10 以下: [全般] に移動しますそのプロジェクトのプロジェクト エディタの
[Embedded] の下に
TensorFlowLiteC.framework
を追加します。 Binaries」です。フレームワークは [リンク済み] の下にも自動的に追加されます。 フレームワークとライブラリ。
フレームワークを埋め込みバイナリとして追加すると、Xcode によって
'フレームワーク検索パス'エントリを [Build Settings] の下にタブに追加
ディレクトリにあります。自動的に行われない場合は
TensorFlowLiteC.framework
の親ディレクトリを手動で追加する必要があります。
されます。
これら 2 つの設定が完了すると、
LiteRT の C API。
TensorFlowLiteC.framework/Headers
ディレクトリ。