Tăng tốc phần cứng bằng LiteRT Next

Tăng tốc phần cứng là việc sử dụng phần cứng máy tính chuyên dụng để cải thiện tốc độ thực thi và hiệu quả của mô hình AI. Đối với LiteRT, việc này chủ yếu liên quan đến việc sử dụng Bộ xử lý đồ hoạ (GPU) hoặc Bộ xử lý thần kinh (NPU) để suy luận AI, cũng như các hướng dẫn vectơ của Bộ xử lý trung tâm (CPU) dùng cho nhiều mục đích.

LiteRT hỗ trợ tính năng tăng tốc phần cứng thông qua việc sử dụng TFLite Delegete. Tính năng này sẽ tiếp quản các phần của biểu đồ LiteRT bằng cách thay thế các thao tác riêng trong biểu đồ. LiteRT Next cải thiện quy trình này bằng cách xử lý tính năng tăng tốc phần cứng thông qua hai bước:

  1. Biên dịch: chuẩn bị một mô hình để chạy với một phần cứng cụ thể.
  2. Dispatch (Chuyển phát): chạy các thao tác đã chọn trên phần cứng có liên quan.

Giai đoạn biên dịch sửa đổi mô hình LiteRT bằng một giao diện mới mang lại tính linh hoạt cao hơn thông qua các trình bổ trợ trình biên dịch. Quá trình biên dịch mô hình diễn ra trước thời hạn (AOT), trước khi biểu đồ được thực thi và điều chỉnh một biểu đồ cụ thể để chạy trên thiết bị.

Các loại trình tăng tốc

LiteRT cung cấp 3 loại trình tăng tốc: NPU, GPU và CPU.

  • Tính năng tăng tốc NPU hỗ trợ phần cứng chuyên dụng được hợp nhất trong một giao diện duy nhất. Bạn có thể sử dụng dịch vụ hỗ trợ NPU thông qua Chương trình tiếp cận sớm.
  • Tính năng tăng tốc GPU hỗ trợ các thiết bị có WebGL và OpenCL.
  • Tính năng tăng tốc CPU hỗ trợ nhiều bộ xử lý thông qua việc sử dụng thư viện XNNPack. Đây là mức tăng tốc mặc định và luôn có sẵn.

Bạn có thể kết hợp các trình tăng tốc này để đạt được hiệu suất tốt nhất có thể khi một số thao tác phức tạp không hoạt động trên một phần cứng nhất định. Khi các trình tăng tốc cạnh tranh với nhau trong một thao tác, LiteRT sẽ sử dụng thứ tự ưu tiên sau: NPU, GPU, CPU.

Tăng tốc GPU

Với tính năng tăng tốc GPU của LiteRT Next, bạn có thể tạo vùng đệm đầu vào và đầu ra phù hợp với GPU, đạt được tính năng không sao chép với dữ liệu trong bộ nhớ GPU và thực thi các tác vụ không đồng bộ để tối đa hoá tính song song. LiteRT Next sử dụng một trình uỷ quyền GPU mới và cải tiến, không phải do LiteRT cung cấp.

Việc chạy mô hình trên GPU bằng LiteRT đòi hỏi phải tạo, gọi hàm và sửa đổi biểu đồ một cách rõ ràng. Với LiteRT Next, bạn chỉ cần chỉ định trình tăng tốc:

// Create a compiled model targeting GPU
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
    CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu));

Để biết thêm thông tin về tính năng tăng tốc GPU, hãy xem phần Tăng tốc GPU bằng tính năng Tăng tốc LiteRT

Tăng tốc NPU

LiteRT Next cung cấp một giao diện hợp nhất để khai thác NPU mà không buộc bạn phải điều hướng riêng lẻ các trình biên dịch, thời gian chạy hoặc phần phụ thuộc thư viện dành riêng cho nhà cung cấp. Việc sử dụng LiteRT Next để tăng tốc NPU giúp tránh nhiều vấn đề cụ thể theo nhà cung cấp và theo thiết bị, tăng hiệu suất cho hoạt động suy luận theo thời gian thực và mô hình lớn, đồng thời giảm thiểu việc sao chép bộ nhớ bằng cách sử dụng vùng đệm phần cứng không sao chép.

Việc sử dụng NPU với LiteRT bao gồm việc chuyển đổi và biên dịch mô hình bằng Play cho AI trên thiết bị (PODAI) và triển khai mô hình bằng Gói AI của Play và Mô-đun tính năng.