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ể sử dụng các mô hình này để thực hiện nhiều loại 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. Nhiệm vụ này cung cấp tính năng hỗ trợ tích hợp cho nhiều mô hình ngôn ngữ lớn chuyển văn bản thành văn bản. Nhờ đó, 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.
Nhiệm vụ này hỗ trợ Gemma 2B và 7B, một phần của nhóm mô hình mở hiện đại, gọn nhẹ, được xây dựng từ cùng một nghiên cứu và công nghệ dùng để tạo mô hình Gemini. API này cũng hỗ trợ các mô hình bên ngoài sau đây: Phi-2, Falcon-RW-1B và StableLM-3B.
Ngoài các mô hình được hỗ trợ sẵn, người dùng có thể ánh xạ các mô hình khác bằng các sản phẩm AI Edge của Google (bao gồm cả tính năng ánh xạ các mô hình PyTorch). Nhờ đó, người dùng có thể xuất một mô hình đã liên kết thành các mô hình TensorFlow Lite có nhiều chữ ký. Các mô hình này đi kèm với các tham số của trình tạo mã thông báo để tạo một Gói tác vụ.
Bắt đầu
Hãy bắt đầu sử dụng tác vụ này bằng cách làm theo một trong những hướng dẫn triển khai sau 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 của tác vụ này, với các ví dụ về mã sử dụng mô hình có sẵn và các tuỳ chọn cấu hình được đề xuất:
Web:
Android:
iOS
Thông tin chi tiết về việc cần làm
Phần này mô tả các tính năng, dữ liệu đầu vào, đầu ra và tuỳ chọn cấu hình của tác vụ này.
Tính năng
API Inference LLM có các tính năng chính sau đây:
- Tạo văn bản thành văn bản – Tạo văn bản dựa trên câu lệnh nhập văn bản.
- Lựa chọn LLM – Áp dụng nhiều mô hình để điều chỉnh ứng dụng cho phù hợp với các trường hợp sử dụng cụ thể. Bạn cũng có thể đào tạo lại và áp dụng trọng số tuỳ chỉnh cho mô hình.
- Hỗ trợ LoRA – Mở rộng và tuỳ chỉnh chức 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 hoặc lấy các mô hình LoRA tạo sẵn đã chuẩn bị từ cộng đồng nguồn mở (chỉ dành cho mô hình gốc).
Dữ liệu đầu vào của việc cần làm | Kết quả đầu ra của nhiệm vụ |
---|---|
API suy luận LLM chấp nhận các dữ liệu đầu vào sau:
|
LLM Inference API đưa ra các kết quả sau:
|
Lựa chọn về cấu hình
Tác vụ này có các chế độ cấu hình sau:
Tên lựa chọn | Nội dung mô tả | Khoảng giá trị | Giá trị mặc định |
---|---|---|---|
modelPath |
Đường dẫn đến nơi lưu trữ mô hình trong thư mục dự án. | PATH | 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 thông tin dự đoán cho k mã thông báo có nhiều khả năng xuất hiện nhất. Khi đặt topK , bạn cũng phải thiết lập giá trị cho randomSeed . |
Số nguyên | 40 |
temperature |
Số lượng ngẫu nhiên được tạo ra trong quá trình tạo. Nhiệt độ càng cao thì văn bản càng sáng tạo, trong khi nhiệt độ càng thấp thì quá trình tạo văn bản càng dễ dự đoán. Khi đặt temperature , bạn cũng phải thiết lập giá trị cho randomSeed . |
Số thực dấu phẩy động | 0,8 |
randomSeed |
Nội dung 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 ý: tính năng này chỉ tương thích với các mô hình GPU. | PATH | Không áp dụng |
resultListener |
Thiết lập 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 |
Thiết lập 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 chứa tính năng hỗ trợ tích hợp sẵn cho các mô hình ngôn ngữ lớn chuyển văn bản thành văn bản có thể phân tách được tối ưu hoá để chạy trên các trình duyệt và thiết bị di động. Bạn có thể tải các mô hình nhẹ này xuống để chạy các dự đoá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 trong các mô hình được hỗ trợ xuống và lưu trữ tệp trong thư mục dự án của bạn.
Gemma 2B
Gemma 2B là một phần của nhóm mô hình mở hiện đại và nhẹ, được xây dựng từ cùng một nghiên cứu và công nghệ dùng để tạo các mô hình Gemini. Mô hình này chứa các tham số 2B và trọng số mở. Mô hình này phù hợp với nhiều nhiệm vụ tạo văn bản, bao gồm cả trả lời câu hỏi, tóm tắt và lập luận.
Các mô hình Gemma 2B có bốn biến thể:
- gemma-2b-it-cpu-int4: Mô hình Gemma 2B 4 bit có khả năng tương thích với CPU.
- gemma-2b-it-cpu-int8: Mô hình 8 bit Gemma 2B có khả năng tương thích với CPU.
- gemma-2b-it-gpu-int4: Mô hình Gemma 2B 4 bit có khả năng tương thích với GPU.
- gemma-2b-it-gpu-int8: Mô hình Gemma 2B 8 bit có khả năng tương thích với GPU.
Bạn cũng có thể điều chỉnh mô hình và thêm trọng số mới trước khi thêm vào ứng dụng. Để biết thêm thông tin về việc điều chỉnh và tuỳ chỉnh Gemma, hãy xem phần Điều chỉnh Gemma. Sau khi tải Gemma xuống qua Mô hình Kaggle, mô hình đã có định dạng thích hợp để sử dụng với MediaPipe.
Nếu tải Gemma 2B xuống qua Hugging Face, bạn phải chuyển đổi mô hình sang một định dạng phù hợp với MediaPipe. LLM Inference API yêu cầu tải xuống và chuyển đổi các tệp sau:
model-00001-of-00002.safetensors
model-00002-of-00002.safetensors
tokenizer.json
tokenizer_config.json
Gemma 7B
Gemma 7B là mô hình Gemma lớn hơn có các tham số 7B và trọng số mở. Mô hình này hiệu quả hơn đối với nhiều nhiệm vụ tạo văn bản, bao gồm trả lời câu hỏi, tóm tắt và lập luận. Gemma 7B chỉ được hỗ trợ trên web.
Mô hình Gemma 7B có một biến thể:
- gemma-1.1-7b-it-gpu-int8: Mô hình Gemma 7B 8 bit có khả năng tương thích với GPU.
Nếu tải Gemma 7B từ Hugging Face xuống, bạn phải chuyển đổi mô hình sang một định dạng phù hợp với MediaPipe. API Inference LLM yêu cầu tải xuống và chuyển đổi các tệp sau:
model-00001-of-00004.safetensors
model-00002-of-00004.safetensors
model-00003-of-00004.safetensors
model-00004-of-00004.safetensors
tokenizer.json
tokenizer_config.json
Chim ưng 1B
Falcon-1B là một mô hình chỉ dành cho bộ giải mã thông số nhân quả có 1 tỷ tham số được huấn luyện trên các mã thông báo 350B của RefinedWeb.
LLM Inference API yêu cầu tải xuống và lưu trữ cục bộ các tệp sau:
tokenizer.json
tokenizer_config.json
pytorch_model.bin
Sau khi tải các tệp mô hình Falcon xuống, mô hình đã sẵn sàng để được chuyển đổi sang định dạng MediaPipe. Làm theo các bước trong phần Chuyển đổi mô hình sang định dạng MediaPipe.
Kênh chính thức 3B
StableLM-3B là một mô hình ngôn ngữ chứa 3 tỷ bộ giải mã tham số được huấn luyện trước trên 1 nghìn tỷ mã thông báo gồm các tập dữ liệu mã và tập dữ liệu tiếng Anh đa dạng trong 4 khoảng thời gian bắt đầu của hệ thống.
LLM Inference API yêu cầu tải xuống và lưu trữ cục bộ các tệp sau:
tokenizer.json
tokenizer_config.json
model.safetensors
Sau khi tải các tệp mô hình StableLM xuống, mô hình đã sẵn sàng để được chuyển đổi sang định dạng MediaPipe. Làm theo các bước trong phần Chuyển đổi mô hình sang định dạng MediaPipe.
Phi-2
Phi-2 là mô hình Transformer có tham số 2,7 tỷ. Khoá học được huấn luyện bằng nhiều văn bản tổng hợp NLP và các trang web đã lọc. Mô hình này phù hợp nhất với các câu lệnh sử dụng định dạng Câu hỏi – Trả lời, cuộc trò chuyện và mã.
LLM Inference API yêu cầu tải xuống và lưu trữ cục bộ các tệp sau:
tokenizer.json
tokenizer_config.json
model-00001-of-00002.safetensors
model-00002-of-00002.safetensors
Sau khi tải các tệp mô hình Phi-2 xuống, mô hình đã sẵn sàng để được chuyển đổi sang định dạng MediaPipe. Làm theo các bước trong phần Chuyển đổi mô hình sang định dạng MediaPipe.
Mô hình xuất khẩu AI Edge
AI Edge là một sản phẩm của Google, cho phép bạn chuyển đổi các mô hình do người dùng ánh xạ thành mô hình TensorFlow Lite đa chữ ký. Để biết thêm thông tin chi tiết về cách liên kết và xuất mô hình, hãy truy cập vào trang GitHub của AI Edge Torch.
Sau khi xuất mô hình sang định dạng TFLite, mô hình đã sẵn sàng để được chuyển đổi sang định dạng MediaPipe. Để biết thêm thông tin, hãy xem phần Chuyển đổi mô hình sang định dạng MediaPipe.
Chuyển đổi mô hình sang định dạng MediaPipe
Chuyển đổi mô hình gốc
Nếu bạn đang sử dụng một mô hình ngôn ngữ lớn (LLM) bên ngoài (Phi-2, Falcon hoặc StableLM) hoặc một phiên bản Gemma không phải của Kaggle, hãy sử dụng các tập lệnh chuyển đổi của chúng tôi để định dạng mô hình sao cho tương thích với MediaPipe.
Quá trình chuyển đổi mô hình cần có gói MediaPipe PyPI. Tập lệnh chuyển đổi có trong tất cả các gói MediaPipe sau 0.10.11
.
Cài đặt và nhập các phần phụ thuộc bằng các thành phần sau:
$ python3 -m pip install mediapipe
Sử dụng thư viện genai.converter
để chuyển đổi mô hình:
import mediapipe as mp
from mediapipe.tasks.python.genai import converter
config = converter.ConversionConfig(
input_ckpt=INPUT_CKPT,
ckpt_format=CKPT_FORMAT,
model_type=MODEL_TYPE,
backend=BACKEND,
output_dir=OUTPUT_DIR,
combine_file_only=False,
vocab_model_file=VOCAB_MODEL_FILE,
output_tflite_file=OUTPUT_TFLITE_FILE,
)
converter.convert_checkpoint(config)
Để chuyển đổi mô hình LoRA, ConversionConfig
phải chỉ định các tuỳ chọn mô hình cơ sở cũng như các tuỳ chọn LoRA bổ sung. Xin 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)
Bộ chuyển đổi sẽ xuất 2 tệp vùng đệm phẳng TFLite, một tệp cho mô hình cơ sở và tệp còn lại cho mô hình LoRA.
Thông số | Nội dung mô tả | Giá trị được chấp nhận |
---|---|---|
input_ckpt |
Đường dẫn đến tệp model.safetensors hoặc pytorch.bin . Xin lưu ý rằng đôi khi định dạng an toàn của mô hình được phân đoạn thành nhiều tệp, ví dụ: model-00001-of-00003.safetensors , model-00001-of-00003.safetensors . Bạn có thể chỉ định một mẫu tệp, chẳng hạn như model*.safetensors . |
PATH |
ckpt_format |
Định dạng tệp mô hình. | {"safetensors", "pytorch"} |
model_type |
LLM đang được chuyển đổi. | {"PHI_2", "FALCON_RW_1B", "STABLELM_4E1T_3B", "GEMMA_2B"} |
backend |
Bộ xử lý (uỷ quyền) dùng để chạy mô hình. | {"cpu", "gpu"} |
output_dir |
Đường dẫn đến thư mục đầu ra lưu trữ các tệp trọng số trên mỗi lớp. | PATH |
output_tflite_file |
Đường dẫn đến tệp đầu ra. Ví dụ: "model_cpu.bin" hoặc "model_gpu.bin". Tệp này chỉ tương thích với API suy luận LLM và không thể dùng làm tệp "tflite" chung. | PATH |
vocab_model_file |
Đường dẫn đến thư mục lưu trữ các tệp tokenizer.json và tokenizer_config.json . Đối với Gemma, hãy trỏ đến một tệp tokenizer.model . |
PATH |
lora_ckpt |
Đường dẫn đến ckpt LoRA của tệp an toàn lưu trữ trọng số của bộ chuyển đổi LoRA. | PATH |
lora_rank |
Một số nguyên thể hiện thứ hạng của ckpt LoRA. Đây là trường bắt buộc để chuyển đổi các trọng số lora. Nếu giá trị này không được cung cấp, thì bộ chuyển đổi sẽ giả định không có trọng số LoRA. Lưu ý: Chỉ phần phụ trợ GPU mới hỗ trợ LoRA. | Số nguyên |
lora_output_tflite_file |
Xuất tên tệp tflite cho các trọng số LoRA. | PATH |
Chuyển đổi mô hình AI Edge
Nếu bạn đang sử dụng một mô hình ngôn ngữ lớn (LLM) được liên kết với một mô hình TFLite thông qua AI Edge, hãy sử dụng tập lệnh gói của chúng tôi để tạo Task Bundle (Gói tác vụ). Quy trình gói gói mô hình đã liên kết với siêu dữ liệu bổ sung (ví dụ: Cần có Tham số mã hoá) để chạy dự đoán hai đầu.
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ác thành phần 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)
Thông số | Nội dung mô tả | Giá trị được chấp nhận |
---|---|---|
tflite_model |
Đường dẫn đến mô hình TFLite đã xuất cho AI Edge. | PATH |
tokenizer_model |
Đường dẫn đến mô hình trình tạo mã thông báo của SentenceFragment. | PATH |
start_token |
Mã khởi động dành riêng cho mô hình. Mã bắt đầu phải có trong mô hình trình tạo mã thông báo đã cung cấp. | STRING |
stop_tokens |
Mã dừng cụ thể của mẫu. Mã dừng phải có trong mô hình trình tạo mã thông báo đã cung cấp. | DANH SÁCH[STRING] |
output_filename |
Tên của tệp gói tác vụ đầu ra. | PATH |
Tuỳ chỉnh LoRA
Bạn có thể định cấu hình API suy luận LLM của Mediapipe để hỗ trợ Điều chỉnh mức độ thích ứng 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 các LLM thông qua một quy trình đào tạo tiết kiệm chi phí.Tính năng hỗ trợ LoRA của LLM Inference API hoạt động trên các mô hình Gemma-2B và Phi-2 cho phần phụ trợ GPU, trong đó trọng số LoRA chỉ áp dụng cho các lớp chú ý. Phương thức triển khai ban đầu này đóng vai trò là API thử nghiệm cho các bản cập nhật trong tương lai, đồng thời lên kế hoạch hỗ trợ thêm nhiều mô hình và nhiều loại lớp trong 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ột mô hình LoRA được tinh chỉnh 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ợ là Gemma-2B hoặc Phi-2. Các mô hình Gemma-2B và Phi-2 đều có trên HuggingFace ở định dạng SafeFrame. 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-2B
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"],
)
Để thử nghiệm, có các mô hình LoRA đã tinh chỉnh được tinh chỉnh công khai và phù hợp với LLM Inference API có trên HuggingFace. Ví dụ: monsterapi/gemma-2b-lora-maths-orca-200k đối với Gemma-2B và lole25/phi-2-sft-ultrachat-lora đối với Phi-2.
Sau khi huấn luyện tập dữ liệu đã chuẩn bị và lưu mô hình, bạn sẽ nhận được tệp adapter_model.safetensors
chứa các trọng số đã tinh chỉnh của mô hình LoRA. Tệp SafeFrame 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 các trọng số của mô hình thành bộ đệm TensorFlow Lite Flat bằng cách sử dụng Gói Python MediaPipe. ConversionConfig
phải chỉ định các tuỳ chọn mô hình cơ sở cũng như các tuỳ chọn LoRA bổ sung. Xin lưu ý rằng vì API chỉ hỗ trợ suy luận LoRA bằng GPU, nên bạn phải thiết lập 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)
Bộ chuyển đổi sẽ xuất 2 tệp vùng đệm phẳng TFLite, một tệp cho mô hình cơ sở và tệp còn lại cho mô hình LoRA.
Suy luận mô hình LoRA
API dự đoán LLM của web, Android và iOS được cập nhật để hỗ trợ dự đoán mô hình LoRA. Web hỗ trợ LoRA động, có thể chuyển đổi các mô hình LoRA khác nhau trong thời gian chạy. Android và iOS hỗ trợ LoRA tĩnh. LoRA này sử dụng cùng một trọng số LoRA trong suốt thời gian thực hiện nhiệm vụ.
Android hỗ trợ LoRA tĩnh trong quá trình khởi chạy. Để tải một mô hình LoRA, người dùng sẽ chỉ định đường dẫn mô hình LoRA cũng như mô hình ngôn ngữ lớn 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 dự đoán LLM bằng LoRA, hãy sử dụng cùng một phương thức generateResponse()
hoặc generateResponseAsync()
làm mô hình cơ sở.