หน้านี้อธิบายวิธีสร้างไลบรารี 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