Tham dự Hội nghị chuyên đề Women in ML vào ngày 7 tháng 12 Đăng ký ngay

Khả năng tương thích với nhà điều hành TensorFlow Lite và TensorFlow

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Các toán tử học máy (ML) mà bạn sử dụng trong mô hình của mình có thể tác động đến quá trình chuyển đổi mô hình TensorFlow sang định dạng TensorFlow Lite. Bộ chuyển đổi TensorFlow Lite hỗ trợ một số giới hạn các hoạt động TensorFlow được sử dụng trong các mô hình suy luận phổ biến, có nghĩa là không phải mọi mô hình đều có thể chuyển đổi trực tiếp. Công cụ chuyển đổi cho phép bạn bao gồm các toán tử bổ sung, nhưng việc chuyển đổi mô hình theo cách này cũng yêu cầu bạn sửa đổi môi trường thời gian chạy TensorFlow Lite mà bạn sử dụng để thực thi mô hình của mình, điều này có thể hạn chế khả năng sử dụng các tùy chọn triển khai thời gian chạy tiêu chuẩn, chẳng hạn như các dịch vụ của Google Play .

TensorFlow Lite Converter được thiết kế để phân tích cấu trúc mô hình và áp dụng tối ưu hóa để làm cho nó tương thích với các toán tử được hỗ trợ trực tiếp. Ví dụ: tùy thuộc vào các toán tử ML trong mô hình của bạn, bộ chuyển đổi có thể giải quyết hoặc kết hợp các toán tử đó để ánh xạ chúng với các đối tác TensorFlow Lite của chúng.

Ngay cả đối với các hoạt động được hỗ trợ, các kiểu sử dụng cụ thể đôi khi vẫn được mong đợi, vì lý do hiệu suất. Cách tốt nhất để hiểu cách xây dựng mô hình TensorFlow có thể được sử dụng với TensorFlow Lite là xem xét cẩn thận cách các hoạt động được chuyển đổi và tối ưu hóa, cùng với những hạn chế do quy trình này áp đặt.

Các nhà khai thác được hỗ trợ

Các toán tử dựng sẵn TensorFlow Lite là một tập hợp con các toán tử nằm trong thư viện lõi TensorFlow. Mô hình TensorFlow của bạn cũng có thể bao gồm các toán tử tùy chỉnh ở dạng toán tử tổng hợp hoặc toán tử mới do bạn xác định. Sơ đồ dưới đây cho thấy mối quan hệ giữa các toán tử này.

Toán tử TensorFlow

Từ phạm vi các nhà khai thác mô hình ML này, có 3 loại mô hình được hỗ trợ bởi quá trình chuyển đổi:

  1. Các mô hình chỉ có nhà điều hành TensorFlow Lite tích hợp sẵn. ( Khuyến nghị )
  2. Mô hình có các toán tử cài sẵn và chọn toán tử cốt lõi TensorFlow.
  3. Các mô hình có toán tử cài sẵn, toán tử lõi TensorFlow và / hoặc toán tử tùy chỉnh.

Nếu mô hình của bạn chỉ chứa các hoạt động được hỗ trợ bởi TensorFlow Lite, bạn không cần thêm bất kỳ cờ nào để chuyển đổi nó. Đây là đường dẫn được đề xuất vì loại mô hình này sẽ chuyển đổi trơn tru và đơn giản hơn để tối ưu hóa và chạy bằng cách sử dụng thời gian chạy TensorFlow Lite mặc định. Bạn cũng có nhiều tùy chọn triển khai hơn cho mô hình của mình, chẳng hạn như các dịch vụ của Google Play . Bạn có thể bắt đầu với hướng dẫn chuyển đổi TensorFlow Lite . Xem trang TensorFlow Lite Ops để biết danh sách các toán tử cài sẵn.

Nếu bạn cần bao gồm các hoạt động TensorFlow được chọn từ thư viện lõi, bạn phải chỉ định điều đó khi chuyển đổi và đảm bảo thời gian chạy của bạn bao gồm các hoạt động đó. Xem chủ đề Chọn toán tử TensorFlow để biết các bước chi tiết.

Bất cứ khi nào có thể, hãy tránh tùy chọn cuối cùng bao gồm các toán tử tùy chỉnh trong mô hình đã chuyển đổi của bạn. Các toán tử tùy chỉnh là các toán tử được tạo bằng cách kết hợp nhiều toán tử lõi TensorFlow nguyên thủy hoặc xác định một toán tử hoàn toàn mới. Khi các toán tử tùy chỉnh được chuyển đổi, chúng có thể tăng kích thước của mô hình tổng thể bằng cách tạo ra các phụ thuộc bên ngoài thư viện TensorFlow Lite được tích hợp sẵn. Các hoạt động tùy chỉnh, nếu không được tạo riêng cho việc triển khai thiết bị hoặc di động, có thể dẫn đến hiệu suất kém hơn khi triển khai cho các thiết bị hạn chế tài nguyên so với môi trường máy chủ. Cuối cùng, giống như bao gồm các toán tử lõi TensorFlow được chọn, các toán tử tùy chỉnh yêu cầu bạn sửa đổi môi trường thời gian chạy mô hình , điều này sẽ hạn chế bạn tận dụng các dịch vụ thời gian chạy tiêu chuẩn như dịch vụ Google Play .

Các loại được hỗ trợ

Hầu hết các hoạt động của TensorFlow Lite đều nhắm mục tiêu đến cả suy luận dấu phẩy động ( float32 ) và lượng tử hóa ( uint8 , int8 ), nhưng nhiều thao tác chưa áp dụng cho các kiểu khác như tf.float16 và chuỗi.

Ngoài việc sử dụng phiên bản khác nhau của các hoạt động, sự khác biệt khác giữa mô hình dấu phẩy động và mô hình lượng tử hóa là cách chúng được chuyển đổi. Chuyển đổi lượng tử hóa yêu cầu thông tin dải động cho tensor. Điều này yêu cầu "lượng tử hóa giả" trong quá trình đào tạo mô hình, nhận thông tin phạm vi thông qua tập dữ liệu hiệu chuẩn hoặc thực hiện ước tính phạm vi "nhanh chóng". Xem lượng tử hóa để biết thêm chi tiết.

Chuyển đổi thẳng, liên tục gấp và nung chảy

Một số hoạt động TensorFlow có thể được xử lý bởi TensorFlow Lite mặc dù chúng không có chức năng tương đương trực tiếp. Đây là trường hợp của các phép toán có thể được loại bỏ đơn giản khỏi biểu đồ ( tf.identity ), được thay thế bằng tensor ( tf.placeholder ) hoặc hợp nhất thành các phép toán phức tạp hơn ( tf.nn.bias_add ). Thậm chí một số hoạt động được hỗ trợ đôi khi có thể bị xóa thông qua một trong các quy trình này.

Dưới đây là danh sách không đầy đủ các hoạt động TensorFlow thường bị xóa khỏi biểu đồ:

Hoạt động thử nghiệm

Các hoạt động TensorFlow Lite sau hiện có, nhưng chưa sẵn sàng cho các mô hình tùy chỉnh:

  • CALL
  • CONCAT_EMBEDDINGS
  • CUSTOM
  • EMBEDDING_LOOKUP_SPARSE
  • HASHTABLE_LOOKUP
  • LSH_PROJECTION
  • SKIP_GRAM
  • SVDF