⚠️ Quan trọng: Bản cập nhật API suy luận LLM
Các bản triển khai Android và iOS của API suy luận LLM hiện không được dùng nữa. Web KHÔNG bị ngừng sử dụng
Di chuyển các dự án dành cho thiết bị di động sang **LiteRT-LM** để đảm bảo tiếp tục được hỗ trợ và có hiệu suất cao.
API suy luận LLM cho phép bạn chạy các mô hình ngôn ngữ lớn (LLM) hoàn toàn trên thiết bị. Bạn có thể sử dụng API này để thực hiện nhiều tác vụ, chẳng hạn như tạo văn bản, truy xuất thông tin ở dạng ngôn ngữ tự nhiên và tóm tắt tài liệu. Tác vụ này hỗ trợ sẵn nhiều mô hình ngôn ngữ lớn chuyển văn bản thành văn bản, vì vậy, bạn có thể áp dụng các mô hình AI tạo sinh mới nhất trên thiết bị cho ứng dụng và sản phẩm của mình.
Tác vụ này hỗ trợ sẵn nhiều LLM. Các mô hình được lưu trữ trên trang Cộng đồng LiteRT có ở định dạng thân thiện với MediaPipe và không yêu cầu bất kỳ bước chuyển đổi hoặc biên dịch nào.
Bạn có thể sử dụng LiteRT Torch để xuất các mô hình PyTorch thành các mô hình LiteRT đa chữ ký (tflite), được gói cùng với các tham số của trình mã hoá thành mã thông báo để tạo Gói tác vụ. Các mô hình được chuyển đổi bằng LiteRT Torch tương thích với API suy luận LLM và có thể chạy trên phần phụ trợ CPU, giúp các mô hình này phù hợp với ứng dụng Android và iOS.
Bắt đầu
Bắt đầu sử dụng tác vụ này bằng cách làm theo một trong các hướng dẫn triển khai sau đây cho nền tảng nhắm mục tiêu. Các hướng dẫn dành riêng cho nền tảng này sẽ hướng dẫn bạn cách triển khai cơ bản tác vụ này, với các ví dụ về mã sử dụng một mô hình hiện có và các lựa chọn cấu hình được đề xuất:
Web:
Android:
iOS
Chi tiết về tác vụ
Phần này mô tả các tính năng, thông tin đầu vào, đầu ra và lựa chọn cấu hình của tác vụ này.
Tính năng
API suy luận LLM có các tính năng chính sau:
- Tạo văn bản chuyển văn bản thành văn bản – Tạo văn bản dựa trên lời nhắc văn bản đầu vào.
- Lựa chọn LLM – Áp dụng nhiều mô hình để điều chỉnh ứng dụng cho các trường hợp sử dụng cụ thể. Bạn cũng có thể huấn luyện lại và áp dụng các trọng số tuỳ chỉnh cho mô hình.
- Hỗ trợ LoRA – Mở rộng và tuỳ chỉnh khả năng LLM bằng mô hình LoRA bằng cách huấn luyện trên tất cả tập dữ liệu của bạn hoặc lấy các mô hình LoRA được tạo sẵn từ cộng đồng nguồn mở (không tương thích với các mô hình được chuyển đổi bằng API tạo sinh LiteRT Torch).
| Đầu vào của tác vụ | Đầu ra của tác vụ |
|---|---|
API suy luận LLM chấp nhận các đầu vào sau:
|
API suy luận LLM xuất ra các kết quả sau:
|
Các lựa chọn về cấu hình
Tác vụ này có các lựa chọn về cấu hình sau:
| Tên lựa chọn | Mô tả | Phạm vi giá trị | Giá trị mặc định |
|---|---|---|---|
modelPath |
Đường dẫn đến vị trí lưu trữ mô hình trong thư mục dự án. | ĐƯỜNG DẪN | Không áp dụng |
maxTokens |
Số lượng token tối đa (token đầu vào + token đầu ra) mà mô hình xử lý. | Số nguyên | 512 |
topK |
Số lượng mã thông báo mà mô hình xem xét ở mỗi bước tạo. Giới hạn dự đoán đối với k mã thông báo có khả năng cao nhất. | Số nguyên | 40 |
temperature |
Mức độ ngẫu nhiên được đưa vào trong quá trình tạo. Nhiệt độ càng cao thì văn bản được tạo càng sáng tạo, trong khi nhiệt độ càng thấp thì quá trình tạo càng dễ dự đoán. | Số thực dấu phẩy động | 0,8 |
randomSeed |
Giá trị gốc ngẫu nhiên được dùng trong quá trình tạo văn bản. | Số nguyên | 0 |
loraPath |
Đường dẫn tuyệt đối đến mô hình LoRA cục bộ trên thiết bị. Lưu ý: chỉ tương thích với các mô hình GPU. | ĐƯỜNG DẪN | Không áp dụng |
resultListener |
Đặt trình nghe kết quả để nhận kết quả một cách không đồng bộ. Chỉ áp dụng khi sử dụng phương thức tạo không đồng bộ. | Không áp dụng | Không áp dụng |
errorListener |
Đặt trình nghe lỗi không bắt buộc. | Không áp dụng | Không áp dụng |
Mô hình
API suy luận LLM hỗ trợ nhiều mô hình ngôn ngữ lớn chuyển văn bản thành văn bản, bao gồm cả hỗ trợ tích hợp cho một số mô hình được tối ưu hoá để chạy trên trình duyệt và thiết bị di động. Bạn có thể sử dụng các mô hình gọn nhẹ này để chạy các suy luận hoàn toàn trên thiết bị.
Trước khi khởi chạy API suy luận LLM, hãy tải một mô hình xuống và lưu trữ tệp trong thư mục dự án. Bạn có thể sử dụng mô hình đã chuyển đổi trước từ kho lưu trữ LiteRT Community HuggingFace hoặc chuyển đổi mô hình sang định dạng tương thích với MediaPipe bằng AI Edge Torch Generative Converter.
Nếu bạn chưa có LLM để sử dụng với API suy luận LLM, hãy bắt đầu bằng một trong các mô hình sau.
Gemma-3n
Gemma-3n E2B và E4B là các mô hình mới nhất trong dòng mô hình Gemma gồm các mô hình mở hiện đại, gọn nhẹ được xây dựng dựa trên cùng một công nghệ và nghiên cứu được dùng để tạo mô hình Gemini. Các mô hình Gemma 3n được thiết kế để thực thi hiệu quả trên các thiết bị có ít tài nguyên. Các mô hình này có khả năng nhập đa phương thức, xử lý văn bản, hình ảnh và âm thanh đầu vào, đồng thời tạo văn bản đầu ra.
Các mô hình Gemma 3n sử dụng công nghệ kích hoạt tham số có chọn lọc để giảm yêu cầu về tài nguyên. Kỹ thuật này cho phép các mô hình hoạt động ở kích thước hiệu quả là 2B và 4B tham số, thấp hơn tổng số tham số mà chúng chứa
Các mô hình Gemma-3n E2B và E4B từ HuggingFace có ở định dạng .litertlm và sẵn sàng sử dụng với API suy luận LLM cho Android và Web.
Gemma-3 1B
Gemma-3 1B là mô hình nhẹ nhất trong dòng mô hình Gemma gồm các mô hình mở hiện đại, gọn nhẹ được xây dựng dựa trên cùng một công nghệ và nghiên cứu được dùng để tạo mô hình Gemini. Mô hình này chứa 1B tham số và trọng số mở.
Mô hình Gemma-3 1B từ
HuggingFace có ở định dạng
.task/.litertlm
và sẵn sàng sử dụng với API suy luận LLM cho các ứng dụng Android và Web.
Khi chạy Gemma-3 1B bằng API suy luận LLM, hãy định cấu hình các lựa chọn sau cho phù hợp:
preferredBackend: Sử dụng lựa chọn này để chọn giữa phần phụ trợCPUhoặcGPU. Lựa chọn này chỉ dành cho Android.supportedLoraRanks: Bạn không thể định cấu hình API suy luận LLM để hỗ trợ tính năng Thích ứng cấp thấp (LoRA) với mô hình Gemma-3 1B. Không sử dụng các lựa chọnsupportedLoraRankshoặcloraRanks.maxTokens: Giá trị củamaxTokensphải khớp với kích thước ngữ cảnh được tích hợp trong mô hình. Giá trị này cũng có thể được gọi là bộ nhớ đệm Khoá-Giá trị (KV) hoặc độ dài ngữ cảnh.numResponses: Phải luôn là 1. Lựa chọn này chỉ dành cho Web.
Khi chạy Gemma-3 1B trên các ứng dụng web, quá trình khởi chạy có thể gây ra một khối dài trong luồng hiện tại. Nếu có thể, hãy luôn chạy mô hình từ một luồng trình thực thi.
Gemma-2 2B
Gemma-2 2B là một biến thể 2B của Gemma-2 và hoạt động trên mọi nền tảng.
Mô hình này chứa 2B tham số và trọng số mở. Gemma-2 2B nổi tiếng với các kỹ năng suy luận hiện đại cho các mô hình trong lớp của nó.
Chuyển đổi mô hình PyTorch
Bạn có thể chuyển đổi các mô hình tạo sinh PyTorch sang định dạng tương thích với MediaPipe bằng API tạo sinh LiteRT Torch. Bạn có thể sử dụng API này để chuyển đổi các mô hình PyTorch thành các mô hình LiteRT (TensorFlow Lite) đa chữ ký. Để biết thêm thông tin chi tiết về việc ánh xạ và xuất mô hình, hãy truy cập vào trang GitHub LiteRT Torch.
Việc chuyển đổi mô hình PyTorch bằng LiteRT Torch Generative API bao gồm các bước sau:
- Tải các điểm kiểm tra mô hình PyTorch xuống.
- Sử dụng API tạo sinh LiteRT Torch để tạo, chuyển đổi và định lượng mô hình sang định dạng tệp tương thích với MediaPipe (
.tflite). - Tạo Gói tác vụ (
.task/.litertlm) từ tệp tflite và trình mã hoá thành mã thông báo của mô hình.
Trình chuyển đổi tạo sinh Torch chỉ chuyển đổi cho CPU và yêu cầu máy Linux có RAM tối thiểu 64 GB.
Để tạo Gói tác vụ, hãy sử dụng tập lệnh gói để tạo Gói tác vụ. Quá trình gói sẽ đóng gói mô hình được ánh xạ với siêu dữ liệu bổ sung (ví dụ: Tham số của trình mã hoá thành mã thông báo) cần thiết để chạy suy luận từ đầu đến cuối.
Quá trình gói mô hình yêu cầu gói MediaPipe PyPI. Tập lệnh chuyển đổi có trong tất cả các gói MediaPipe sau 0.10.14.
Cài đặt và nhập các phần phụ thuộc bằng cách sau:
$ python3 -m pip install mediapipe
Sử dụng thư viện genai.bundler để gói mô hình:
import mediapipe as mp
from mediapipe.tasks.python.genai import bundler
config = bundler.BundleConfig(
tflite_model=TFLITE_MODEL,
tokenizer_model=TOKENIZER_MODEL,
start_token=START_TOKEN,
stop_tokens=STOP_TOKENS,
output_filename=OUTPUT_FILENAME,
enable_bytes_to_unicode_mapping=ENABLE_BYTES_TO_UNICODE_MAPPING,
)
bundler.create_bundle(config)
| Tham số | Mô tả | Giá trị được chấp nhận |
|---|---|---|
tflite_model |
Đường dẫn đến mô hình TFLite được AI Edge xuất. | ĐƯỜNG DẪN |
tokenizer_model |
Đường dẫn đến mô hình trình mã hoá thành mã thông báo SentencePiece. | ĐƯỜNG DẪN |
start_token |
Mã thông báo bắt đầu dành riêng cho mô hình. Mã thông báo bắt đầu phải có trong mô hình trình mã hoá thành mã thông báo được cung cấp. | STRING |
stop_tokens |
Mã thông báo dừng dành riêng cho mô hình. Mã thông báo dừng phải có trong mô hình trình mã hoá thành mã thông báo được cung cấp. | LIST[STRING] |
output_filename |
Tên của tệp gói tác vụ đầu ra. | ĐƯỜNG DẪN |
Tuỳ chỉnh LoRA
Bạn có thể định cấu hình API suy luận LLM Mediapipe để hỗ trợ tính năng Thích ứng cấp thấp (LoRA) cho các mô hình ngôn ngữ lớn. Bằng cách sử dụng các mô hình LoRA được tinh chỉnh, nhà phát triển có thể tuỳ chỉnh hành vi của LLM thông qua quy trình huấn luyện tiết kiệm chi phí.Tính năng hỗ trợ LoRA của API suy luận LLM hoạt động cho tất cả các biến thể Gemma và mô hình Phi-2 cho phần phụ trợ GPU, với trọng số LoRA chỉ áp dụng cho các lớp chú ý. Việc triển khai ban đầu này đóng vai trò là một API thử nghiệm cho các phát triển trong tương lai với kế hoạch hỗ trợ nhiều mô hình và nhiều loại lớp trong các bản cập nhật sắp tới.
Chuẩn bị mô hình LoRA
Làm theo hướng dẫn trên
HuggingFace
để huấn luyện mô hình LoRA được tinh chỉnh trên tập dữ liệu của riêng bạn với các loại mô hình được hỗ trợ,
Gemma hoặc Phi-2. Cả mô hình Gemma-2 2B, Gemma
2B và
Phi-2 đều có trên
HuggingFace ở định dạng safetensors. Vì API suy luận LLM chỉ hỗ trợ LoRA trên các lớp chú ý, nên chỉ chỉ định các lớp chú ý khi tạo LoraConfig như sau:
# For Gemma
from peft import LoraConfig
config = LoraConfig(
r=LORA_RANK,
target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
)
# For Phi-2
config = LoraConfig(
r=LORA_RANK,
target_modules=["q_proj", "v_proj", "k_proj", "dense"],
)
Để kiểm thử, có các mô hình LoRA được tinh chỉnh có thể truy cập công khai phù hợp với API suy luận LLM có trên HuggingFace. Ví dụ: monsterapi/gemma-2b-lora-maths-orca-200k cho Gemma-2B và lole25/phi-2-sft-ultrachat-lora cho Phi-2.
Sau khi huấn luyện trên tập dữ liệu đã chuẩn bị và lưu mô hình, bạn sẽ nhận được một tệp adapter_model.safetensors chứa trọng số mô hình LoRA được tinh chỉnh.
Tệp safetensors là điểm kiểm tra LoRA được dùng trong quá trình chuyển đổi mô hình.
Ở bước tiếp theo, bạn cần chuyển đổi trọng số mô hình thành TensorFlow Lite Flatbuffer bằng Gói Python MediaPipe. ConversionConfig phải chỉ định các lựa chọn mô hình cơ sở cũng như các lựa chọn LoRA bổ sung. Lưu ý rằng
vì API chỉ hỗ trợ suy luận LoRA bằng GPU, nên bạn phải đặt phần phụ trợ thành
'gpu'.
import mediapipe as mp
from mediapipe.tasks.python.genai import converter
config = converter.ConversionConfig(
# Other params related to base model
...
# Must use gpu backend for LoRA conversion
backend='gpu',
# LoRA related params
lora_ckpt=LORA_CKPT,
lora_rank=LORA_RANK,
lora_output_tflite_file=LORA_OUTPUT_TFLITE_FILE,
)
converter.convert_checkpoint(config)
Trình chuyển đổi sẽ xuất ra hai tệp flatbuffer TFLite, một cho mô hình cơ sở và một cho mô hình LoRA.
Suy luận mô hình LoRA
API suy luận LLM Web, Android và iOS được cập nhật để hỗ trợ suy luận mô hình LoRA.
Android hỗ trợ LoRA tĩnh trong quá trình khởi chạy. Để tải mô hình LoRA, người dùng chỉ định đường dẫn mô hình LoRA cũng như LLM cơ sở.// Set the configuration options for the LLM Inference task
val options = LlmInferenceOptions.builder()
.setModelPath('<path to base model>')
.setMaxTokens(1000)
.setTopK(40)
.setTemperature(0.8)
.setRandomSeed(101)
.setLoraPath('<path to LoRA model>')
.build()
// Create an instance of the LLM Inference task
llmInference = LlmInference.createFromOptions(context, options)
Để chạy suy luận LLM bằng LoRA, hãy sử dụng cùng các phương thức generateResponse() hoặc generateResponseAsync() như mô hình cơ sở.