LLM Inference API 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ể dùng API này để thực hiện nhiều việc, 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 cung cấp khả năng hỗ trợ tích hợp cho nhiều mô hình ngôn ngữ lớn từ văn bản sang 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 các ứ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ó sẵn ở đị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 bổ sung nào.
Bạn có thể dùng AI Edge Torch để xuất các mô hình PyTorch thành các mô hình LiteRT (tflite
) có nhiều chữ ký. Các mô hình này được đi kèm với các tham số mã hoá từ để tạo Gói tác vụ. Các mô hình được chuyển đổi bằng AI Edge Torch tương thích với LLM Inference API và có thể chạy trên phần phụ trợ CPU, nhờ đó phù hợp với các ứ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 này cho nền tảng mục tiêu của bạn. 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, kèm theo 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ề việc cần làm
Phần này mô tả các chức năng, đầ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
LLM Inference API có các tính năng chính sau:
- Tạo văn bản từ văn bản – Tạo văn bản dựa trên câu lệnh dạng 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ể của bạn. 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 của LLM bằng mô hình LoRA bằng cách huấn luyện trên toàn bộ 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 AI Edge Torch Generative API).
Đầu vào của tác vụ | Đầu ra của tác vụ |
---|---|
LLM Inference API chấp nhận các dữ liệu đầu vào sau:
|
LLM Inference API 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 cấu hình sau:
Tên tuỳ chọn | Mô tả | Phạm vi giá trị | Giá trị mặc định |
---|---|---|---|
modelPath |
Đường dẫn đến nơi mô hình được lưu trữ trong thư mục dự án. | ĐƯỜNG DẪN | Không áp dụng |
maxTokens |
Số lượng mã thông báo tối đa (mã thông báo đầu vào + mã thông báo đầ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 ở k mã thông báo có khả năng xảy ra 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, còn nhiệt độ càng thấp thì văn bản được tạo càng dễ dự đoán. | Số thực dấu phẩy động | 0,8 |
randomSeed |
Dữ liệu 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 trên thiết bị. Lưu ý: chế độ này 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 mộ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
LLM Inference API hỗ trợ nhiều mô hình ngôn ngữ lớn từ văn bản sang 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ể dùng các mô hình đơn giản 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 LLM Inference API, hãy tải một mô hình xuống và lưu trữ tệp trong thư mục dự án của bạn. Bạn có thể sử dụng một mô hình đã chuyển đổi từ kho lưu trữ Cộng đồng LiteRT HuggingFace hoặc chuyển đổi một mô hình sang định dạng tương thích với MediaPipe bằng Trình chuyển đổi tạo AI Edge Torch.
Nếu bạn chưa có LLM để sử dụng với LLM Inference API, hãy bắt đầu bằng một trong các mô hình sau.
Gemma-3n
Gemma-3n E2B và E4B là những mô hình mới nhất trong họ mô hình Gemma. Đây là những mô hình nguồn mở, tiên tiến và có kích thước nhỏ, được xây dựng dựa trên cùng một nghiên cứu và công nghệ được dùng để tạo ra các 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ài nguyên thấp. 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 ra 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à 2 tỷ và 4 tỷ 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 của HuggingFace có ở định dạng .litertlm
và sẵn sàng sử dụng với LLM Inference API cho Android và Web.
Gemma-3 1B
Gemma-3 1B là mô hình nhẹ nhất trong họ mô hình mở, nhẹ và hiện đại Gemma, được xây dựng dựa trên cùng một nghiên cứu và công nghệ được dùng để tạo ra các mô hình Gemini. Mô hình này chứa 1 tỷ tham số và trọng số mở.
Mô hình Gemma-3 1B của HuggingFace có sẵn ở định dạng .task
/.litertlm
và sẵn sàng sử dụng với LLM Inference API cho các ứng dụng Android và Web.
Khi chạy Gemma-3 1B bằng LLM Inference API, 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 một phần phụ trợCPU
hoặcGPU
. Lựa chọn này chỉ dành cho Android.supportedLoraRanks
: Bạn không thể định cấu hình LLM Inference API để hỗ trợ tính năng Thích ứng cấp thấp (LoRA) bằng mô hình Gemma-3 1B. Không sử dụng các lựa chọnsupportedLoraRanks
hoặcloraRanks
.maxTokens
: Giá trị củamaxTokens
phải khớp với kích thước ngữ cảnh được tích hợp vào mô hình. Đây cũng có thể được gọi là bộ nhớ đệm Khoá-Giá trị (KV) hoặc độ dài ngữ cảnh.numResponses
: Luôn phải 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 worker.
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 có 2 tỷ tham số và trọng số mở. Gemma-2 2B nổi tiếng với 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 AI Edge Torch Generative API. 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) có nhiều chữ ký. Để biết thêm thông tin chi tiết về việc lập bản đồ và xuất mô hình, hãy truy cập vào trang GitHub của AI Edge Torch.
Việc chuyển đổi mô hình PyTorch bằng AI Edge 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.
- Dùng AI Edge Torch Generative API để tạo, chuyển đổi và lượng tử hoá mô hình thành định dạng tệp tương thích với MediaPipe (
.tflite
). - Tạo một Gói tác vụ (
.task
/.litertlm
) từ tệp tflite và trình mã hoá mô hình.
Trình chuyển đổi Torch Generative chỉ chuyển đổi cho CPU và yêu cầu máy Linux có RAM tối thiểu 64 GB.
Để tạo một Gói tác vụ, hãy dùng tập lệnh đóng gói để tạo một Gói tác vụ. Quá trình kết hợp sẽ đóng gói mô hình được ánh xạ bằng siêu dữ liệu bổ sung (ví dụ: Tham số của trình mã hoá từ) cần thiết để chạy suy luận từ đầu đến cuối.
Quy trình kết hợp 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 làm như sau:
$ python3 -m pip install mediapipe
Sử dụng thư viện genai.bundler
để liên kết 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)
Thông số | Mô tả | Giá trị được chấp nhận |
---|---|---|
tflite_model |
Đường dẫn đến mô hình TFLite được xuất của AI Edge. | ĐƯỜNG DẪN |
tokenizer_model |
Đường dẫn đến mô hình trình mã hoá từ 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 mã hoá từ được cung cấp. | STRING |
stop_tokens |
Mô hình mã thông báo dừng cụ thể. Các mã thông báo dừng phải có trong mô hình mã hoá từ đượ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 của 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 LLM Inference API 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, chỉ áp dụng trọng số LoRA 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 hoạt động 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
Hãy làm theo hướng dẫn trên HuggingFace để huấn luyện một mô hình LoRA được tinh chỉnh trên tập dữ liệu của riêng bạn bằng 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ì LLM Inference API chỉ hỗ trợ LoRA trên các lớp chú ý, nên bạn chỉ cần chỉ định các lớp chú ý trong 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 LLM Inference API 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 các 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.
Trong 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 cách sử dụ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. Xin lưu ý rằng vì API này 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
Web, Android và iOS LLM Inference API đượ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 tạo. Để tải một 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ác phương thức generateResponse()
hoặc generateResponseAsync()
tương tự như mô hình cơ sở.