LiteRT cho phép bạn chạy các mô hình TensorFlow, PyTorch và JAX trong ứng dụng Android. Hệ thống LiteRT cung cấp các môi trường thực thi được tạo sẵn và có thể tuỳ chỉnh để chạy các mô hình trên Android một cách nhanh chóng và hiệu quả, bao gồm cả các tuỳ chọn tăng tốc phần cứng.
Ví dụ: các ứng dụng Android sử dụng LiteRT, hãy xem kho lưu trữ mẫu LiteRT.
Mô hình học máy
LiteRT sử dụng các mô hình TensorFlow, PyTorch và JAX được chuyển đổi thành một định dạng mô hình máy học nhỏ hơn, dễ di chuyển và hiệu quả hơn. Bạn có thể sử dụng các mô hình tạo sẵn bằng LiteRT trên Android hoặc tạo mô hình của riêng mình và chuyển đổi các mô hình đó sang định dạng LiteRT.
Trang này thảo luận về việc sử dụng các mô hình học máy đã tạo và không đề cập đến việc tạo, huấn luyện, kiểm thử hoặc chuyển đổi mô hình. Tìm hiểu thêm về cách chọn, sửa đổi, tạo và chuyển đổi mô hình học máy cho LiteRT trong trang Mô hình.
Chạy mô hình trên Android
Mô hình LiteRT chạy bên trong ứng dụng Android sẽ thu thập dữ liệu, xử lý dữ liệu và tạo ra dự đoán dựa trên logic của mô hình. Mô hình LiteRT yêu cầu một môi trường thời gian chạy đặc biệt để thực thi và dữ liệu được truyền vào mô hình phải ở một định dạng dữ liệu cụ thể, được gọi là tensor. Khi một mô hình xử lý dữ liệu, còn gọi là chạy một dự đoán, mô hình đó sẽ tạo ra kết quả dự đoán dưới dạng tensor mới và truyền các kết quả đó đến ứng dụng Android để ứng dụng có thể hành động, chẳng hạn như hiển thị kết quả cho người dùng hoặc thực thi logic kinh doanh bổ sung.
Hình 1. Quy trình thực thi chức năng cho các mô hình LiteRT trong ứng dụng Android.
Ở cấp độ thiết kế chức năng, ứng dụng Android của bạn cần có các phần tử sau để chạy mô hình LiteRT:
- Môi trường thời gian chạy LiteRT để thực thi mô hình
- Trình xử lý đầu vào mô hình để chuyển đổi dữ liệu thành tensor
- Trình xử lý đầu ra của mô hình để nhận các tensor kết quả đầu ra và diễn giải các tensor đó dưới dạng kết quả dự đoán
Các phần sau đây mô tả cách thư viện và công cụ LiteRT cung cấp các phần tử chức năng này.
Xây dựng ứng dụng bằng LiteRT
Phần này mô tả đường dẫn được đề xuất và phổ biến nhất để triển khai LiteRT trong Ứng dụng Android. Bạn nên chú ý nhất đến các phần môi trường thời gian chạy và thư viện phát triển. Nếu bạn đã phát triển một mô hình tuỳ chỉnh, hãy nhớ xem lại phần Các lộ trình phát triển nâng cao.
Tuỳ chọn môi trường thời gian chạy
Có một số cách để bạn có thể bật môi trường thời gian chạy nhằm thực thi các mô hình trong ứng dụng Android. Sau đây là các tuỳ chọn ưu tiên:
- LiteRT trong môi trường thời gian chạy của Dịch vụ Google Play (nên dùng)
- Môi trường thời gian chạy LiteRT độc lập
Nhìn chung, bạn nên sử dụng môi trường thời gian chạy do các dịch vụ Google Play cung cấp vì môi trường này tiết kiệm dung lượng hơn môi trường tiêu chuẩn do tải động, giúp giảm kích thước ứng dụng. Dịch vụ Google Play cũng tự động sử dụng bản phát hành ổn định, mới nhất của môi trường thời gian chạy LiteRT, mang đến cho bạn các tính năng bổ sung và hiệu suất được cải thiện theo thời gian. Nếu cung cấp ứng dụng trên các thiết bị không có Dịch vụ Google Play hoặc cần quản lý chặt chẽ môi trường thời gian chạy máy học, thì bạn nên sử dụng môi trường thời gian chạy LiteRT tiêu chuẩn. Tuỳ chọn này sẽ gói thêm mã vào ứng dụng, cho phép bạn kiểm soát nhiều hơn thời gian chạy máy học trong ứng dụng, nhưng đồng thời sẽ làm tăng kích thước tải xuống của ứng dụng.
Bạn có thể truy cập vào các môi trường thời gian chạy này trong ứng dụng Android bằng cách thêm thư viện phát triển LiteRT vào môi trường phát triển ứng dụng. Để biết thông tin về cách sử dụng môi trường thời gian chạy chuẩn trong ứng dụng, hãy xem phần tiếp theo.
Thư viện
Bạn có thể truy cập vào API Thông dịch bằng Dịch vụ Google Play. Bạn có thể sử dụng thư viện core (lõi) và support (hỗ trợ) của LiteRT trong ứng dụng Android. Để biết thông tin chi tiết về lập trình về cách sử dụng thư viện LiteRT và môi trường thời gian chạy, hãy xem phần Công cụ phát triển cho Android.
Nhận mô hình
Để chạy một mô hình trong ứng dụng Android, bạn cần có mô hình ở định dạng LiteRT. Bạn có thể sử dụng các mô hình tạo sẵn hoặc tạo một mô hình và chuyển đổi mô hình đó sang định dạng Lite. Để biết thêm thông tin về cách lấy mô hình cho ứng dụng Android, hãy xem trang Mô hình LiteRT.
Xử lý dữ liệu đầu vào
Mọi dữ liệu bạn truyền vào mô hình máy học phải là một tensor có cấu trúc dữ liệu cụ thể, thường được gọi là hình dạng của tensor. Để xử lý dữ liệu bằng một mô hình, mã ứng dụng của bạn phải chuyển đổi dữ liệu từ định dạng gốc, chẳng hạn như hình ảnh, văn bản hoặc dữ liệu âm thanh, thành một tensor ở hình dạng bắt buộc cho mô hình của bạn.
Chạy suy luận
Quá trình xử lý dữ liệu thông qua một mô hình để tạo ra kết quả dự đoán được gọi là chạy một quy trình suy luận. Để chạy quy trình suy luận trong ứng dụng Android, bạn cần có môi trường thời gian chạy LiteRT, mô hình và dữ liệu đầu vào.
Tốc độ mà một mô hình có thể tạo ra suy luận trên một thiết bị cụ thể phụ thuộc vào kích thước của dữ liệu được xử lý, độ phức tạp của mô hình và các tài nguyên điện toán có sẵn như bộ nhớ và CPU hoặc bộ xử lý chuyên dụng được gọi là trình tăng tốc. Các mô hình học máy có thể chạy nhanh hơn trên các bộ xử lý chuyên dụng này, chẳng hạn như bộ xử lý đồ hoạ (GPU) và bộ xử lý tensor (TPU), bằng cách sử dụng trình điều khiển phần cứng LiteRT được gọi là đại diện. Để biết thêm thông tin về các đối tượng uỷ quyền và tính năng tăng tốc phần cứng của quá trình xử lý mô hình, hãy xem phần Tổng quan về tính năng tăng tốc phần cứng.
Xử lý kết quả đầu ra
Các mô hình tạo ra kết quả dự đoán dưới dạng tensor. Ứng dụng Android của bạn phải xử lý các tensor này bằng cách thực hiện hành động hoặc hiển thị kết quả cho người dùng. Kết quả đầu ra của mô hình có thể đơn giản như một con số tương ứng với một kết quả duy nhất (0 = chó, 1 = mèo, 2 = chim) cho một hoạt động phân loại hình ảnh, đến các kết quả phức tạp hơn nhiều, chẳng hạn như nhiều hộp giới hạn cho một số đối tượng được phân loại trong một hình ảnh, với điểm xếp hạng độ tin cậy dự đoán từ 0 đến 1.
Đường dẫn phát triển nâng cao
Khi sử dụng các mô hình LiteRT phức tạp và tuỳ chỉnh hơn, bạn có thể cần sử dụng các phương pháp phát triển nâng cao hơn so với những gì được mô tả ở trên. Các phần sau đây mô tả các kỹ thuật nâng cao để thực thi mô hình và phát triển mô hình cho LiteRT trong ứng dụng Android.
Môi trường thời gian chạy nâng cao
Ngoài môi trường thời gian chạy tiêu chuẩn và môi trường thời gian chạy của Dịch vụ Google Play cho LiteRT, bạn còn có thể sử dụng các môi trường thời gian chạy khác với ứng dụng Android. Trường hợp sử dụng môi trường này có thể là khi bạn có mô hình học máy sử dụng các thao tác học máy không được môi trường thời gian chạy tiêu chuẩn cho LiteRT hỗ trợ.
- Thời gian chạy Flex cho LiteRT
- Môi trường thời gian chạy LiteRT tuỳ chỉnh
Thời gian chạy Flex của LiteRT cho phép bạn đưa vào các toán tử cụ thể cần thiết cho mô hình của mình. Là một tuỳ chọn nâng cao để chạy mô hình, bạn có thể tạo LiteRT cho Android để đưa vào các toán tử và chức năng khác cần thiết để chạy mô hình học máy TensorFlow. Để biết thêm thông tin, hãy xem phần Tạo LiteRT cho Android.
API C và C++
LiteRT cũng cung cấp một API để chạy các mô hình bằng C và C++. Nếu ứng dụng của bạn sử dụng Android NDK, bạn nên cân nhắc sử dụng API này. Bạn cũng nên cân nhắc sử dụng API này nếu muốn có thể chia sẻ mã giữa nhiều nền tảng. Để biết thêm thông tin về tuỳ chọn phát triển này, hãy xem trang Công cụ phát triển.
Thực thi mô hình dựa trên máy chủ
Nhìn chung, bạn nên chạy các mô hình trong ứng dụng trên thiết bị Android để tận dụng độ trễ thấp hơn và cải thiện quyền riêng tư về dữ liệu cho người dùng. Tuy nhiên, có một số trường hợp chạy mô hình trên máy chủ đám mây, ngoài thiết bị, là giải pháp tốt hơn. Ví dụ: nếu bạn có một mô hình lớn không dễ dàng nén xuống kích thước phù hợp với thiết bị Android của người dùng hoặc có thể được thực thi với hiệu suất hợp lý trên các thiết bị đó. Phương pháp này cũng có thể là giải pháp ưu tiên của bạn nếu hiệu suất nhất quán của mô hình trên nhiều thiết bị là ưu tiên hàng đầu.
Google Cloud cung cấp một bộ dịch vụ đầy đủ để chạy các mô hình AI. Để biết thêm thông tin, hãy xem trang Sản phẩm AI và học máy của Google Cloud.
Phát triển và tối ưu hoá mô hình tuỳ chỉnh
Các lộ trình phát triển nâng cao hơn có thể bao gồm việc phát triển các mô hình học máy tuỳ chỉnh và tối ưu hoá các mô hình đó để sử dụng trên thiết bị Android. Nếu bạn dự định xây dựng mô hình tuỳ chỉnh, hãy nhớ cân nhắc áp dụng các kỹ thuật lượng tử hoá cho mô hình để giảm chi phí xử lý và bộ nhớ. Để biết thêm thông tin về cách tạo mô hình hiệu suất cao để sử dụng với LiteRT, hãy xem phần Các phương pháp hay nhất về hiệu suất trong phần Mô hình.