Google I / O là một kết quả hoàn hảo! Cập nhật các phiên TensorFlow Xem phiên

Các phương pháp hay nhất về hiệu suất, 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 giữ cho tài nguyên ứng dụng của bạn hiệu quả. Chúng tôi đã biên soạn một 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 yêu cầu độ 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 kiểu máy nhỏ hơn vì chúng không chỉ sử dụng ít dung lượng ổ đĩa và bộ nhớ hơn mà còn nhanh hơn và tiết kiệm năng lượng hơn. Ví dụ: đồ thị bên dưới cho thấy sự cân bằng độ 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 học chuyển tiếp. Xem hướng dẫn học chuyển đổi bằng TensorFlow Lite Model Maker .

Lập 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à điểm chuẩn cho mô hình của mình. Công cụ đo điểm chuẩn TensorFlow Lite có một trình biên dịch tích hợp hiển thị thống kê hồ sơ của mỗi nhà điều hành. Điều này có thể giúp hiểu được tắc nghẽn hiệu suất và nhà khai thác 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 các lệnh gọi của nhà điều hành theo thời gian bằng các công cụ lập hồ sơ dựa trên GUI.

Cấu hình 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 việc lập 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ó cá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 một phiên bản nhanh hơn của tùy chọn tùy chỉnh nếu bạn biết các ràng buộc trong đó toán tử được thực thi. Kiểm tra hướng dẫn toán tử 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 nhìn chung nhanh hơn và tiết kiệm năng lượng hơn, để chúng có thể được 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 tài liệu tối ưu hóa mô hình để biết chi tiết.

Điều chỉnh số lượng chủ đề

TensorFlow Lite hỗ trợ nhân đa luồng cho nhiều toán tử. 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ẽ làm cho 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ả 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 viên. Tuy nhiên, thực thi đa luồng đi kèm với cái giá phải trả là tăng khả năng thay đổi hiệu suất 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 đúng 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 một luồng, nhưng nếu một ứng dụng khác đang thực thi cùng một lúc, nó có thể dẫn đến hiệu suất kém hơn so với luồng đơn.

Loại bỏ các bản sao 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 thừa khi nạp đầu vào và đọc đầu ra từ mô hình. Đảm bảo loại bỏ các bản sao 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 nhanh hơn rất nhiều nếu ByteBuffers được sử dụng làm đầu vào .

Cấu hình ứ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ư công cụ và trình tạo hồ sơ Android cung cấp nhiều thông tin 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 trong mô hình mà nằm trong các phần của mã ứng dụng tương tác với mô hình. Đảm bảo bạn tự làm quen với các công cụ lập hồ sơ cụ thể 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 lợi khi 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 đã thêm những 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 bộ 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 của quá trình thực thi trình thông dịch. TensorFlow Lite có thể sử dụng các đạ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ợ của trình 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 bạn. Để bật API mạng thần kinh, hãy xem hướng dẫn dành cho đại biểu NNAPI .
  • Ủy quyền GPU khả dụng trên Android và iOS, sử dụng OpenGL / OpenCL và Metal, tương ứng. Để dùng thử chúng, hãy xem hướng dẫn và tài liệu dành cho đại biểu GPU .
  • Đại biểu Hexagon có sẵn trên Android. Nó sử 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.

Cần biết rằng một số máy gia 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á tiêu chuẩn của 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 NN API hoặc GPU. Ngược lại, máy gia tốc là sự 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 rất sẵn lòng giúp chẩn đoán và giải quyết các vấn đề về 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 với các chi tiết của vấn đề.