หน้านี้จะอธิบายวิธีสร้างไลบรารี LiteRT สำหรับระบบ ARM คอมพิวเตอร์
LiteRT รองรับระบบบิลด์ 2 ระบบและฟีเจอร์ที่รองรับจากแต่ละรุ่น ระบบบิลด์ไม่เหมือนกัน ตรวจสอบตารางต่อไปนี้เพื่อเลือกบิลด์ที่เหมาะสม ระบบ
ฟีเจอร์ | Bazel | CMake |
---|---|---|
Toolchains ที่กำหนดไว้ล่วงหน้า | ArmHF, AArc64 | Armel, armhf, AArc64 |
Toolchains ที่กำหนดเอง | ใช้งานยากขึ้น | ใช้งานง่าย |
เลือก TF Ops | รองรับ | ไม่รองรับ [not_supported] |
ผู้แทน GPU | ใช้ได้กับ Android เท่านั้น | แพลตฟอร์มทั้งหมดที่รองรับ OpenCL |
XNNPack | รองรับ | รองรับ |
วงล้อ Python | รองรับ | รองรับ |
C API | รองรับ | รองรับ |
C++ API | รองรับโปรเจ็กต์ Bazel | รองรับโปรเจ็กต์ CMake |
การคอมไพล์แบบข้ามระบบสำหรับ ARM ด้วย CMake
หากคุณมีโปรเจ็กต์ CMake หรือหากต้องการใช้ Toolchain ที่กำหนดเอง ให้ใช้ CMake ในการคอมไพล์แบบข้ามระบบให้ดีขึ้น มีตัวเลือกแยก การคอมไพล์แบบข้ามแพลตฟอร์มด้วย 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 tensorflow/tensorflow:devel.
หากต้องการคอมไพล์ LiteRT แบบข้ามด้วย Bazel ให้ทำตามขั้นตอนต่อไปนี้
ขั้นตอนที่ 1 ติดตั้ง Bazel
Bazel เป็นระบบบิลด์หลักสำหรับ TensorFlow ติดตั้งเวอร์ชันล่าสุดของ ระบบบิลด์บาเซล
ขั้นตอนที่ 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
ตรวจสอบ LiteRT C API เพื่อดูรายละเอียด
ไลบรารี C++
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so
คุณจะพบไลบรารีที่ใช้ร่วมกันในพื้นที่ต่อไปนี้
bazel-bin/tensorflow/lite/libtensorflowlite.so
ปัจจุบันยังไม่มีวิธีที่ตรงไปตรงมาในการดึงข้อมูลไฟล์ส่วนหัวทั้งหมดที่จำเป็น คุณจึงต้องรวมไฟล์ส่วนหัวทั้งหมดใน tensorflow/lite/ จาก TensorFlow ที่เก็บได้ นอกจากนี้ คุณจะต้องมีไฟล์ส่วนหัวจาก FlatBuffers และ การปีนป่าย
ข้อมูลอื่นๆ
คุณยังสร้างเป้าหมาย Bazel อื่นๆ ด้วย Toolchain ได้ด้วย ข้อมูลที่เป็นประโยชน์ เป้าหมาย
- //tensorflow/lite/tools/benchmark:benchmark_model
- //tensorflow/lite/examples/label_image:label_image