หน้านี้อธิบายวิธีสร้างไลบรารี TensorFlow Lite สำหรับคอมพิวเตอร์ที่ใช้ ARM
TensorFlow Lite รองรับระบบบิลด์สองระบบและฟีเจอร์ที่รองรับจากแต่ละระบบบิลด์จะไม่เหมือนกัน ตรวจสอบตารางต่อไปนี้เพื่อเลือกระบบบิลด์ที่เหมาะสม
คุณสมบัติ | บาเซล | ซีเมค |
---|---|---|
ห่วงโซ่เครื่องมือที่กำหนดไว้ล่วงหน้า | armhf, aarch64 | อาร์เมล, armhf, aarch64 |
ห่วงโซ่เครื่องมือแบบกำหนดเอง | ใช้งานยากขึ้น | ง่ายต่อการใช้ |
เลือก TF ops | ได้รับการสนับสนุน | ไม่รองรับ |
ตัวแทน GPU | ใช้ได้เฉพาะกับ Android เท่านั้น | ทุกแพลตฟอร์มที่รองรับ OpenCL |
เอ็กซ์เอ็นแพ็ค | ได้รับการสนับสนุน | ได้รับการสนับสนุน |
ล้อหลาม | ได้รับการสนับสนุน | ได้รับการสนับสนุน |
ซี เอพีไอ | ได้รับการสนับสนุน | ได้รับการสนับสนุน |
C++ API | รองรับโครงการ Bazel | รองรับโครงการ CMake |
การคอมไพล์ข้ามสำหรับ ARM กับ CMake
หากคุณมีโปรเจ็กต์ CMake หรือหากคุณต้องการใช้ toolchain แบบกำหนดเอง คุณควรใช้ CMake สำหรับการคอมไพล์ข้าม มีการ รวบรวมข้าม TensorFlow Lite พร้อมหน้า CMake แยกต่างหากสำหรับสิ่งนี้
การรวบรวมข้ามสำหรับ ARM กับ Bazel
หากคุณมีโครงการ Bazel หรือต้องการใช้ TF ops คุณควรใช้ระบบสร้าง Bazel คุณจะใช้ toolchains ARM GCC 8.3 แบบบูรณาการกับ Bazel เพื่อสร้างไลบรารีที่ใช้ร่วมกัน ARM32/64
สถาปัตยกรรมเป้าหมาย | การกำหนดค่า Bazel | อุปกรณ์ที่เข้ากันได้ |
---|---|---|
อาร์มเอชเอฟ (ARM32) | --config=elinux_armhf | RPI3, RPI4 พร้อมระบบปฏิบัติการ Raspberry Pi 32 บิต |
อาร์ค64 (ARM64) | --config=elinux_aarch64 | Coral, RPI4 พร้อม Ubuntu 64 บิต |
คำแนะนำต่อไปนี้ได้รับการทดสอบบน Ubuntu 16.04.3 64-bit PC (AMD64) และ TensorFlow devel docker image 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
ห้องสมุดซี
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