Path: blob/master/site/ja/lite/guide/build_cmake_arm.md
25118 views
CMake を使用した TensorFlow Lite のクロスコンパイル
このページでは、さまざまな ARM デバイスの TensorFlow Lite ライブラリを構築する方法について説明します。
次の手順は、Ubuntu 16.04.3 64 ビット PC(AMD64)および TensorFlow devel Docker イメージ tensorflow/tensorflow:devel でテストされています。
注意: この機能はバージョン 2.4 以降で利用できます。
前提条件
CMake をインストールし、TensorFlow ソースコードをダウンロードする必要があります。詳細については、CMake を使用した TensorFlow Lite の構築ページを参照してください。
ターゲット環境の確認
次の例は、Raspberry Pi OS、Ubuntu Server 20.04 LTS、および Mendel Linux 4.0 でテストされています。ターゲット glibc バージョンと CPU 能力によっては、別のバージョンのツールチェーンとビルドパラメータを使用しなければならない場合があります。
glibc バージョンの確認
ldd (Debian GLIBC 2.28-10) 2.28 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Roland McGrath and Ulrich Drepper.
ABI 互換性の確認
ターゲットが ARM 32 ビットの場合、VFP の利用可能状況に応じて、2 つの ABI (armhf と armel) を利用できます。このドキュメントでは、armh の例を示します。armel ターゲットでは別のツールチェーンを使用する必要があります。
CPU 能力の確認
ARMv7 では、ターゲットのサポートされている VFP バージョンと NEON の利用可能状況を確認してください。
processor : 0 model name : ARMv7 Processor rev 3 (v7l) BogoMIPS : 108.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd08 CPU revision : 3
AArch64 (ARM64) 向けの構築
この手順では、Coral Mendel Linux 4.0、Raspberry Pi (Ubuntu Server 20.04.01 LTS 64-bit がインストールされていること) と互換性がある AArch64 バイナリを構築する方法について説明します。
ツールチェーンのダウンロード
これらのコマンドを実行すると、gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu ツールチェーンが ${HOME}/toolchains の下にインストールされます。
注意: GCC 8.3 で構築されたバイナリでは、glibc 2.28 以上が必要です。glibc バージョンがこれよりも低い場合は、古い GCC ツールチェーンを使用する必要があります。
CMake の実行
注意: ターゲットデバイスで OpenCL 1.2 以上がサポートされている場合は、-DTFLITE_ENABLE_GPU=ON
を使用して GPU デリゲートを有効化できます。
NEON に対応した ARMv7 向けの構築
この手順では、VFPv4 および NEON に対応したバイナリを使用して、Raspberry Pi 3 および 4 と互換性がある ARMv7 を構築する方法を示します。
ツールチェーンのダウンロード
これらのコマンドを実行すると、gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf ツールチェーンが ${HOME}/toolchains の下にインストールされます。
注意: GCC 8.3 で構築されたバイナリでは、glibc 2.28 以上が必要です。glibc バージョンがこれよりも低い場合は、古い GCC ツールチェーンを使用する必要があります。
CMake の実行
注意: ARMv7 アーキテクチャは多様であるため、ターゲットデバイスプロファイルの ARMCC_FLAGS を更新しなければならない場合があります。たとえば、Tensorflow Lite 2.8 で XNNPACK を有効 (XNNPACK=ON
) にしてコンパイルするときには、-mfp16-format=ieee
を ARMCC_FLAGS に追加してください。
Raspberry Pi Zero (ARMv6) 向けの構築
この手順では、Raspberry Pi Zero と互換性がある ARMv6 バイナリを構築する方法を示します。
ツールチェーンのダウンロード
これらのコマンドを実行すると、gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf ツールチェーンが ${HOME}/toolchains の下にインストールされます。
注意: GCC 8.3 で構築されたバイナリでは、glibc 2.28 以上が必要です。glibc バージョンがこれよりも低い場合は、古い GCC ツールチェーンを使用する必要があります。
CMake の実行
注意: NEON サポートがないため、XNNPACK は無効です。