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