Xây dựng TensorFlow Lite cho bảng ARM

Trang này mô tả cách xây dựng thư viện TensorFlow Lite cho máy tính dựa trên ARM.

TensorFlow Lite hỗ trợ hai hệ thống xây dựng và các tính năng được hỗ trợ trong mỗi hệ thống xây dựng không giống hệt 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ụ xác định trước armhf, aarch64 armel, armhf, aarch64
Chuỗi công cụ tuỳ chỉnh khó dùng hơn dễ sử dụng
Chọn hoạt động TF được hỗ trợ not supported
Uỷ quyền của GPU chỉ dành cho Android bất kỳ nền tảng nào hỗ trợ OpenCL
XNNPack được hỗ trợ được hỗ trợ
Bánh xe Python được hỗ trợ được hỗ trợ
API C được hỗ trợ được hỗ trợ
C++ API được hỗ trợ cho các dự án Bazel hỗ trợ cho các dự án CMake

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

Nếu có dự án CMake hoặc nếu muốn sử dụng chuỗi công cụ tuỳ chỉnh, bạn nên sử dụng CMake để biên dịch chéo. Chúng tôi có riêng một trang Biên dịch chéo TensorFlow Lite với CMake để thực hiện việc này.

Biên dịch chéo cho ARM với Bazel

Nếu có một dự án Bazel hoặc nếu muốn sử dụng hoạt động TF, bạn nên sử dụng hệ thống xây dựng Bazel. Bạn sẽ sử dụng 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.

Cấu 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 với 32 bit Rspberry Pi OS
AArch64 (ARM64) --config=elinux_aarch64 San hô, RPI4 với Ubuntu 64 bit

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

Để biên dịch chéo TensorFlow Lite với 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 xây dựng Bazel.

Bước 2. Bản sao 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 chia sẻ trong: bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so.

Hãy xem trang TensorFlow Lite 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 chia sẻ trong: bazel-bin/tensorflow/lite/libtensorflowlite.so.

Hiện tại, không có cách đơn giản nào để 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 đề vào tensorflow/lite/ từ kho lưu trữ TensorFlow. Ngoài ra, bạn sẽ cần các tệp tiêu đề từ FlatBuffers và Abseil.

v.v.

Bạn cũng có thể tạo các mục tiêu Bazel khác bằng chuỗi công cụ. Dưới đâ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