สร้าง TensorFlow Lite สำหรับบอร์ด ARM

หน้านี้อธิบายวิธีสร้างไลบรารี TensorFlow Lite สำหรับคอมพิวเตอร์ที่ใช้ ARM

TensorFlow Lite รองรับระบบบิลด์ 2 ระบบและฟีเจอร์ที่รองรับจากระบบบิลด์แต่ละระบบซึ่งไม่เหมือนกัน โปรดตรวจสอบตารางต่อไปนี้เพื่อเลือกระบบบิลด์ที่เหมาะสม

ฟีเจอร์ Bazel CMake
เชนเครื่องมือที่กำหนดไว้ล่วงหน้า Armhf, Aarch64 อาร์เมล, อาร์มเฮฟ, อาร์เมล 64
เชนเครื่องมือที่กำหนดเอง ใช้งานยากขึ้น ใช้งานง่าย
เลือกการดำเนินการ TF รองรับ ไม่รองรับ [not_supported]
ผู้แทน GPU ใช้ได้กับ Android เท่านั้น แพลตฟอร์มที่รองรับ OpenCL
XNNPack รองรับ รองรับ
วงล้อ Python รองรับ รองรับ
C API รองรับ สนับสนุน
C++ API สนับสนุนโปรเจ็กต์ Bazel รองรับโปรเจ็กต์ CMake

การคอมไพล์แบบข้ามระบบสำหรับ ARM ที่มี CMake

หากคุณมีโปรเจ็กต์ CMake หรือต้องการใช้เครื่องมือเชนที่กำหนดเอง คุณควรใช้ CMake สำหรับการคอมไพล์แบบข้ามระบบมากกว่า ซึ่งจะมีหน้า การคอมไพล์แบบข้ามระบบ TensorFlow Lite กับ CMake แยกต่างหากให้ใช้งานสำหรับกรณีนี้

การคอมไพล์แบบข้ามระบบสำหรับ ARM พร้อม Bazel

หากคุณมีโปรเจ็กต์ Bazel หรือต้องการใช้ TF Ops เราขอแนะนำให้ใช้ระบบสร้าง Bazel คุณจะใช้ห่วงโซ่เครื่องมือ ARM GCC 8.3 แบบผสานรวมกับ Bazel เพื่อสร้างไลบรารีที่ใช้ร่วมกัน ARM32/64

สถาปัตยกรรมเป้าหมาย การกำหนดค่า Bazel อุปกรณ์ที่ใช้ร่วมกันได้
ARMHF (ARM32) --config=elinux_armhf RPI3, RPI4 พร้อม 32 บิต Raspberry Pi OS
AArch64 (ARM64) --config=elinux_aarch64 Coral, RPI4 พร้อม Ubuntu 64 บิต

วิธีการต่อไปนี้ได้รับการทดสอบใน Ubuntu 16.04.3 บน PC แบบ 64 บิต (AMD64) และอิมเมจ Docker ของ TensorFlow Devel tensorflow/tensorflow:devel

หากต้องการคอมไพล์ TensorFlow Lite แบบข้ามกับ Bazel ให้ทำตามขั้นตอนต่อไปนี้

ขั้นตอนที่ 1 ติดตั้ง Bazel

Bazel เป็นระบบบิลด์หลักสำหรับ TensorFlow ติดตั้งระบบบิลด์ของ Bazel เวอร์ชันล่าสุด

ขั้นตอนที่ 2 โคลนที่เก็บ TensorFlow

git clone https://github.com/tensorflow/tensorflow.git tensorflow_src

ขั้นตอนที่ 3 ไบนารีของ ARM ของบิลด์

ไลบรารี C
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite/c:libtensorflowlite_c.so

คุณจะพบไลบรารีที่ใช้ร่วมกันได้ใน bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so

ดูรายละเอียดได้ที่หน้า TensorFlow Lite C API

ไลบรารี C++
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so

คุณจะพบไลบรารีที่ใช้ร่วมกันได้ใน bazel-bin/tensorflow/lite/libtensorflowlite.so

ปัจจุบันยังไม่มีวิธีที่ตรงไปตรงมาในการแยกไฟล์ส่วนหัวทั้งหมดที่จำเป็น คุณจึงต้องรวมไฟล์ส่วนหัวทั้งหมดใน tensorflow/lite/ จากที่เก็บ TensorFlow นอกจากนี้ คุณจะต้องมีไฟล์ส่วนหัวจาก FlatBuffers และ Abseil

อื่นๆ

นอกจากนี้ คุณยังสร้างเป้าหมาย Bazel อื่นๆ ด้วย Toolchain ได้ด้วย เป้าหมายที่มีประโยชน์บางส่วนมีดังนี้

  • //tensorflow/lite/tools/benchmark:benchmark_model
  • //tensorflow/lite/examples/label_image:label_image