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