Các phương pháp hay nhất về hiệu suất

Thiết bị di động và thiết bị nhúng có tài nguyên tính toán hạn chế, vì vậy điều quan trọng là phải duy trì hiệu quả tài nguyên ứng dụng của bạn. Chúng tôi đã biên soạn danh sách các phương pháp và chiến lược tốt nhất mà bạn có thể sử dụng để cải thiện hiệu suất mô hình TensorFlow Lite của mình.

Chọn mô hình tốt nhất cho nhiệm vụ

Tùy thuộc vào nhiệm vụ, bạn sẽ cần phải cân bằng giữa độ phức tạp và kích thước của mô hình. Nếu nhiệm vụ của bạn đòi hỏi độ chính xác cao thì bạn có thể cần một mô hình lớn và phức tạp. Đối với các tác vụ yêu cầu độ chính xác thấp hơn, tốt hơn nên sử dụng mô hình nhỏ hơn vì chúng không chỉ sử dụng ít dung lượng ổ đĩa và bộ nhớ hơn mà nhìn chung còn nhanh hơn và tiết kiệm năng lượng hơn. Ví dụ: các biểu đồ bên dưới hiển thị sự cân bằng giữa độ chính xác và độ trễ đối với một số mô hình phân loại hình ảnh phổ biến.

Graph of model size vs accuracy

Graph of accuracy vs latency

Một ví dụ về các mô hình được tối ưu hóa cho thiết bị di động là MobileNets , được tối ưu hóa cho các ứng dụng thị giác di động. TensorFlow Hub liệt kê một số mô hình khác đã được tối ưu hóa đặc biệt cho thiết bị di động và thiết bị nhúng.

Bạn có thể đào tạo lại các mô hình được liệt kê trên tập dữ liệu của riêng mình bằng cách sử dụng phương pháp học chuyển giao. Xem các hướng dẫn học chuyển giao bằng TensorFlow Lite Model Maker .

Hồ sơ mô hình của bạn

Khi bạn đã chọn được một mô hình ứng viên phù hợp với nhiệm vụ của mình, bạn nên lập hồ sơ và đánh giá mô hình của mình. Công cụ đo điểm chuẩn TensorFlow Lite có trình lược tả tích hợp hiển thị số liệu thống kê về hồ sơ của mỗi nhà điều hành. Điều này có thể giúp hiểu được các tắc nghẽn về hiệu suất và toán tử nào chiếm ưu thế trong thời gian tính toán.

Bạn cũng có thể sử dụng tính năng theo dõi TensorFlow Lite để lập hồ sơ mô hình trong ứng dụng Android của mình, sử dụng tính năng theo dõi hệ thống Android tiêu chuẩn và để trực quan hóa lệnh gọi toán tử theo thời gian bằng các công cụ lập hồ sơ dựa trên GUI.

Lập hồ sơ và tối ưu hóa các toán tử trong biểu đồ

Nếu một toán tử cụ thể xuất hiện thường xuyên trong mô hình và dựa trên hồ sơ, bạn thấy rằng toán tử đó tiêu tốn nhiều thời gian nhất, bạn có thể xem xét việc tối ưu hóa toán tử đó. Trường hợp này hiếm khi xảy ra vì TensorFlow Lite có phiên bản được tối ưu hóa cho hầu hết các nhà khai thác. Tuy nhiên, bạn có thể viết phiên bản nhanh hơn của một op tùy chỉnh nếu bạn biết các ràng buộc trong đó toán tử được thực thi. Hãy xem hướng dẫn sử dụng tùy chỉnh .

Tối ưu hóa mô hình của bạn

Tối ưu hóa mô hình nhằm mục đích tạo ra các mô hình nhỏ hơn thường nhanh hơn và tiết kiệm năng lượng hơn để có thể triển khai trên thiết bị di động. TensorFlow Lite hỗ trợ nhiều kỹ thuật tối ưu hóa, chẳng hạn như lượng tử hóa.

Kiểm tra các tài liệu tối ưu hóa mô hình để biết chi tiết.

Tinh chỉnh số lượng chủ đề

TensorFlow Lite hỗ trợ hạt nhân đa luồng cho nhiều nhà khai thác. Bạn có thể tăng số lượng luồng và tăng tốc độ thực thi của các toán tử. Tuy nhiên, việc tăng số lượng luồng sẽ khiến mô hình của bạn sử dụng nhiều tài nguyên và sức mạnh hơn.

Đối với một số ứng dụng, độ trễ có thể quan trọng hơn hiệu quả sử dụng năng lượng. Bạn có thể tăng số lượng luồng bằng cách đặt số lượng luồng thông dịch. Tuy nhiên, việc thực thi đa luồng phải trả giá bằng sự thay đổi hiệu suất tăng lên tùy thuộc vào những gì khác được thực thi đồng thời. Điều này đặc biệt xảy ra với các ứng dụng dành cho thiết bị di động. Ví dụ: các thử nghiệm riêng biệt có thể cho thấy tốc độ tăng gấp 2 lần so với ứng dụng đơn luồng, tuy nhiên, nếu một ứng dụng khác đang thực thi cùng lúc, điều đó có thể dẫn đến hiệu suất kém hơn so với ứng dụng đơn luồng.

Loại bỏ các bản sao dư thừa

Nếu ứng dụng của bạn không được thiết kế cẩn thận, có thể có các bản sao dư thừa khi cung cấp đầu vào và đọc đầu ra từ mô hình. Đảm bảo loại bỏ các bản sao dư thừa. Nếu bạn đang sử dụng các API cấp cao hơn, như Java, hãy đảm bảo kiểm tra cẩn thận tài liệu để biết các cảnh báo về hiệu suất. Ví dụ: API Java sẽ nhanh hơn rất nhiều nếu ByteBuffers được sử dụng làm đầu vào .

Lập hồ sơ ứng dụng của bạn bằng các công cụ dành riêng cho nền tảng

Các công cụ dành riêng cho nền tảng như Trình phân tích tài nguyên AndroidCông cụ cung cấp nhiều thông tin lập hồ sơ có thể được sử dụng để gỡ lỗi ứng dụng của bạn. Đôi khi lỗi hiệu suất có thể không nằm ở mô hình mà ở các phần mã ứng dụng tương tác với mô hình. Hãy đảm bảo bạn đã làm quen với các công cụ lập hồ sơ dành riêng cho nền tảng và các phương pháp hay nhất cho nền tảng của bạn.

Đánh giá xem mô hình của bạn có được hưởng lợi từ việc sử dụng bộ tăng tốc phần cứng có sẵn trên thiết bị hay không

TensorFlow Lite đã bổ sung các cách mới để tăng tốc các mô hình có phần cứng nhanh hơn như GPU, DSP và bộ tăng tốc thần kinh. Thông thường, các trình tăng tốc này được hiển thị thông qua các mô-đun con đại biểu đảm nhận các phần trong quá trình thực thi trình thông dịch. TensorFlow Lite có thể sử dụng đại biểu bằng cách:

  • Sử dụng API mạng thần kinh của Android. Bạn có thể sử dụng các phụ trợ tăng tốc phần cứng này để cải thiện tốc độ và hiệu quả của mô hình của mình. Để bật API mạng thần kinh, hãy xem hướng dẫn dành cho đại biểu NNAPI .
  • Đại biểu GPU có sẵn trên Android và iOS, sử dụng OpenGL/OpenCL và Metal tương ứng. Để dùng thử, hãy xem tài liệu và hướng dẫn dành cho đại biểu GPU .
  • Đại biểu hình lục giác có sẵn trên Android. Nó tận dụng Qualcomm Hexagon DSP nếu nó có sẵn trên thiết bị. Xem hướng dẫn dành cho đại biểu Hexagon để biết thêm thông tin.
  • Có thể tạo đại biểu của riêng bạn nếu bạn có quyền truy cập vào phần cứng không chuẩn. Xem đại biểu TensorFlow Lite để biết thêm thông tin.

Xin lưu ý rằng một số chương trình tăng tốc hoạt động tốt hơn đối với các loại mô hình khác nhau. Một số đại biểu chỉ hỗ trợ các mô hình float hoặc các mô hình được tối ưu hóa theo một cách cụ thể. Điều quan trọng là phải đánh giá từng đại biểu để xem liệu đó có phải là lựa chọn tốt cho ứng dụng của bạn hay không. Ví dụ: nếu bạn có một mô hình rất nhỏ, có thể không đáng để ủy quyền mô hình đó cho API NN hoặc GPU. Ngược lại, máy gia tốc là lựa chọn tuyệt vời cho các mô hình lớn có cường độ số học cao.

cần sự giúp đỡ nhiều hơn

Nhóm TensorFlow sẵn lòng giúp chẩn đoán và giải quyết các vấn đề hiệu suất cụ thể mà bạn có thể gặp phải. Vui lòng gửi vấn đề trên GitHub kèm theo thông tin chi tiết về vấn đề.