Xây dựng TensorFlow Lite cho bo mạch ARM

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

TensorFlow Lite hỗ trợ hai hệ thống xây dựng và các tính năng được hỗ trợ từ mỗi hệ thống xây dựng không giống nhau. Kiểm tra bảng sau để chọn một hệ thống xây dựng thích hợp.

Tính năng Bazel CMake
Chuỗi công cụ được xác định trước cánh tay, aarch64 vũ khí, armhf, aarch64
Chuỗi công cụ tùy chỉnh khó sử dụng hơn dễ sử dụng
Chọn hoạt động TF được hỗ trợ không được hỗ trợ
đại biểu GPU chỉ có sẵn cho Android bất kỳ nền tảng nào hỗ trợ OpenCL
XNNPack được hỗ trợ được hỗ trợ
Bánh xe trăn được hỗ trợ được hỗ trợ
API C được hỗ trợ được hỗ trợ
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 với CMake

Nếu bạn có dự án CMake hoặc nếu bạn muốn sử dụng chuỗi công cụ tùy chỉnh, tốt hơn bạn nên sử dụng CMake để biên dịch chéo. Có một bản biên dịch chéo TensorFlow Lite riêng biệt với trang CMake có sẵn cho việc này.

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

Nếu bạn có dự án Bazel hoặc nếu bạn muốn sử dụng TF ops, tốt hơn 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 để xây dựng thư viện chia sẻ ARM32/64.

Kiến trúc mục tiêu Cấu hình bazel Thiết bị tương thích
cánh tay (ARM32) --config=elinux_armhf RPI3, RPI4 với hệ điều hành Raspberry Pi 32 bit
AArch64 (ARM64) --config=elinux_aarch64 San hô, RPI4 với Ubuntu 64 bit

Các hướng dẫn sau đã được thử nghiệm trên PC 64-bit Ubuntu 16.04.3 (AMD64) và TensorFlow devel docker image tensorflow/tensorflow:devel .

Để biên dịch chéo TensorFlow Lite với Bazel, hãy làm theo các bước:

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. Sao chép kho lưu trữ TensorFlow

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

Bước 3. Xây dựng 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 .

Kiểm tra trang API TensorFlow Lite C để biết 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 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ân vân

Bạn cũng có thể xây dựng 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