Xây dựng LiteRT cho bảng ARM

Trang này mô tả cách tạo thư viện LiteRT cho máy tính dựa trên ARM.

LiteRT hỗ trợ 2 hệ thống xây dựng và các tính năng được hỗ trợ của mỗi hệ thống xây dựng không giống nhau. Hãy xem bảng sau đây để chọn một hệ thống xây dựng phù hợp.

Tính năng Bazel CMake
Chuỗi công cụ được xác định trước armhf, aarch64 armel, armhf, aarch64
Chuỗi công cụ tuỳ chỉnh khó sử dụng hơn dễ sử dụng
Chọn các thao tác TF được hỗ trợ không được hỗ trợ
Uỷ quyền GPU chỉ có trên Android mọi nền tảng hỗ trợ OpenCL
XNNPack được hỗ trợ được hỗ trợ
Python Wheel được hỗ trợ được hỗ trợ
C API được hỗ trợ được hỗ trợ
C++ API được hỗ trợ cho các dự án Bazel được hỗ trợ cho các dự án CMake

Biên dịch chéo cho ARM bằng CMake

Nếu có một dự án CMake hoặc muốn sử dụng một chuỗi công cụ tuỳ chỉnh, bạn nên sử dụng CMake để biên dịch chéo. Có một trang riêng về Cross compilation LiteRT with CMake (Biên dịch chéo LiteRT bằng CMake) cho việc này.

Biên dịch chéo cho ARM bằng Bazel

Nếu có dự án Bazel hoặc muốn sử dụng các thao tác TF, bạn nên sử dụng hệ thống xây dựng Bazel. Bạn sẽ sử dụng các chuỗi công cụ ARM GCC 8.3 tích hợp với Bazel để tạo thư viện dùng chung ARM32/64.

Kiến trúc mục tiêu Cấu hình Bazel Thiết bị tương thích
armhf (ARM32) --config=elinux_armhf RPI3, RPI4 có Raspberry Pi OS 32 bit
AArch64 (ARM64) --config=elinux_aarch64 Coral, RPI4 với Ubuntu 64 bit

Các hướng dẫn sau đây đã được kiểm thử trên máy tính Ubuntu 16.04.3 64 bit (AMD64) và hình ảnh Docker phát triển TensorFlow tensorflow/tensorflow:devel.

Để biên dịch chéo LiteRT bằng Bazel, hãy làm theo các bước sau:

Bước 1. Cài đặt Bazel

Bazel là hệ thống xây dựng chính cho TensorFlow. Cài đặt phiên bản mới nhất của hệ thống tạo Bazel.

Bước 2. Sao chép kho lưu trữ TensorFlow

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

Bước 3. Tạo tệp nhị phân ARM

Thư viện C
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite/c:libtensorflowlite_c.so

Bạn có thể tìm thấy thư viện dùng chung trong: bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so.

Hãy xem trang LiteRT C API để biết thông tin chi tiết.

Thư viện C++
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so

Bạn có thể tìm thấy thư viện dùng chung trong: bazel-bin/tensorflow/lite/libtensorflowlite.so.

Hiện tại, không có cách nào đơn giản để trích xuất tất cả các tệp tiêu đề cần thiết, vì vậy, bạn phải đưa tất cả các tệp tiêu đề trong tensorflow/lite/ vào kho lưu trữ TensorFlow. Ngoài ra, bạn sẽ cần các tệp tiêu đề từ FlatBuffers và Abseil.

Etc

Bạn cũng có thể tạo các mục tiêu Bazel khác bằng chuỗi công cụ này. Sau đây là một số mục tiêu hữu ích.

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