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

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

LiteRT hỗ trợ hai hệ thống xây dựng và các tính năng được hỗ trợ trên mỗi hệ thống 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 bản dựng phù hợp hệ thống.

Tính năng Bazel CMake
Chuỗi công cụ định sẵn cánh tay, aarch64 armel, armhf, aarch64
Chuỗi công cụ tuỳ 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ợ
Người được 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 được hỗ trợ cho các dự án CMake

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

Nếu có một dự án CMake hoặc nếu muốn sử dụng một chuỗi công cụ tuỳ chỉnh, bạn nên hiệu quả hơn khi dùng CMake để biên dịch chéo. Có một gói Biên dịch chéo LiteRT với CMake dành cho 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 dùng Bazel hệ thống xây dựng. Bạn sẽ sử dụng Chuỗi công cụ ARM GCC 8.3 cùng 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 Hệ điều hành Raspberry Pi
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 Ubuntu 16.04.3 64-bit PC (AMD64) và hình ảnh docker của TensorFlow devel tensorflow/tensorflow:devel.

Để biên dịch chéo LiteRT 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. Nhân bản 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.

Séc 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 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ừ TensorFlow kho lưu trữ. Ngoài ra, bạn sẽ cần có các tệp tiêu đề từ FlatBuffers và Tạm biệt.

...

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

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