API suy luận LLM cho phép bạn chạy hoàn toàn các mô hình ngôn ngữ lớn (LLM) trên thiết bị mà bạn có thể dùng để thực hiện nhiều thao tá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. Nhiệm vụ này cung cấp tính năng hỗ trợ tích hợp cho nhiều các mô hình ngôn ngữ lớn từ văn bản sang văn bản, nên bạn có thể áp dụng các mô hình ngôn ngữ mới nhất trên thiết bị các mô hình AI tạo sinh cho các ứng dụng và sản phẩm của bạn.
Nhiệm vụ này hỗ trợ Gemma 2B và 7B, một phần của một dòng mô hình mở, gọn nhẹ, tiên tiến được xây dựng từ cùng một nghiên cứu và công nghệ dùng để tạo ra Gemini người mẫu. API này cũng hỗ trợ các mô hình bên ngoài sau đây: Phi-2, Falcon-RW-1B và Ổn địnhLM-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 bằng AI Edge của Google sản phẩm/dịch vụ (bao gồm liên kết mô hình PyTorch). Thao tác này cho phép người dùng xuất mô hình đã liên kết thành chữ ký nhiều. Các mô hình TensorFlow Lite được kết hợp với các tham số của bộ mã hoá để hãy tạo một Gói tác vụ.
Bắt đầu
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. Những hướng dẫn dành riêng cho nền tảng này sẽ hướng dẫn bạn từng bước phương thức triển khai tác vụ này, với các đoạn mã ví dụ sử dụng mô hình có sẵn và các lựa chọn cấu hình được đề xuất:
Thông tin chi tiết về việc cần làm
Phần này mô tả các chức năng, dữ liệu đầu vào, đầu ra và cấu hình các tuỳ chọn của nhiệm vụ này.
Tính năng
API suy luận 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 lời nhắc 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ể huấn luyện 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 của mô hình ngôn ngữ lớn (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 dùng LoRA tạo sẵn các mô hình từ cộng đồng nguồn mở (chỉ các 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 việc cần làm |
---|---|
API suy luận LLM chấp nhận các dữ liệu đầu vào sau:
|
API suy luận LLM đưa ra các kết quả sau đây:
|
Tuỳ chọn cấu hình
Tác vụ này có các lựa chọn cấu hình sau:
Tên lựa chọn | Mô tả | Khoảng 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 này 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 xuất hiện nhiều nhất. | Số nguyên | 40 |
temperature |
Mức độ ngẫu nhiên được đưa vào trong quá trình tạo. Cao hơn nhiệt độ sẽ mang lại nhiều sáng tạo hơn trong văn bản được tạo ra, trong khi nhiệt độ thấp hơn thì tạo ra máy tính dễ dự đoán hơn. | Số thực dấu phẩy động | 0,8 |
randomSeed |
Số ngẫu nhiên 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 ý: tính năng này chỉ tương thích với các mẫu GPU. | ĐƯỜNG DẪN | 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 |
Đặ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
API suy luận LLM tích hợp sẵn tính năng hỗ trợ chuyển văn bản thành văn bản có thể chia nhỏ các mô hình ngôn ngữ được tối ưu hoá để chạy trên các trình duyệt và thiết bị di động. Các Bạn có thể tải các mô hình gọn nhẹ xuống để chạy dự đoá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 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à thành viên của một gia đình các mô hình mở gọn nhẹ, tiên tiến nhất được xây dựng từ cùng một nghiên cứu và công nghệ dùng để tạo ra các mô hình Gemini. Chiến lược phát hành đĩa đơn mô hình chứa 2B tham số và trọng số mở. Mô hình này phù hợp với nhiều công việc tạo văn bản bao gồm trả lời câu hỏi, tóm tắt, và suy luận.
Các mô hình Gemma 2B có 4 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 Gemma 2B 8 bit có khả năng tương thích với CPU.
- gemma-2b-it-gpu-int4: Gemma 2B mô hình 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 nó vào ứng dụng. Cho để biết thêm thông tin về cách điều chỉnh và tuỳ chỉnh Gemma, hãy xem phần Chỉnh Gemma. Sau khi tải Gemma xuống từ Kaggle Mô hình, mô hình đã có định dạng thích hợp để sử dụng với MediaPipe.
Nếu bạn tải Gemma 2B xuống từ Ôm Khuôn mặt, bạn phải chuyển đổi mô hình này sang định dạng phù hợp với MediaPipe. API suy luận LLM 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ột mô hình Gemma lớn hơn với 7B và trọng số mở. Mô hình này mạnh mẽ hơn cho nhiều văn bản các nhiệm vụ tạo, trong đó có trả lời câu hỏi, tóm tắt và lý 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 bạn tải Gemma 7B từ Ôm Face xuống, bạn phải chuyển đổi mô hình này sang định dạng phù hợp với MediaPipe. Chiến lược phát hành đĩa đơn API suy luận 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 bộ giải mã nhân quả gồm 1 tỷ tham số được huấn luyện trên 350B mã thông báo của RefinedWeb.
API suy luận LLM yêu cầu tải xuống và lưu trữ các tệp sau đây cục bộ:
tokenizer.json
tokenizer_config.json
pytorch_model.bin
Sau khi tải xuống các tệp mô hình Falcon, mô hình đã sẵn sàng để được chuyển đổi thành ở định dạng MediaPipe. Làm theo các bước trong bài viết Chuyển đổi mô hình sang MediaPipe định dạng.
Ổn định 3B
StableLM-3B là một mô hình ngôn ngữ gồm 3 tỷ tham số chỉ dành cho bộ giải mã được huấn luyện trước 1 nghìn tỷ token của nhiều tập dữ liệu tiếng Anh và mã nguồn trong 4 thời gian bắt đầu của hệ thống.
API suy luận LLM yêu cầu tải xuống và lưu trữ các tệp sau đây cục bộ:
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 bài viết Chuyển đổi mô hình sang MediaPipe định dạng.
Phi-2
Phi-2 là mô hình Transformer thông số 2,7 tỷ thông số. Nó đượ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 bằng cách sử dụng định dạng Hỏi đáp, trò chuyện và mã.
API suy luận LLM yêu cầu tải xuống và lưu trữ các tệp sau đây cục bộ:
tokenizer.json
tokenizer_config.json
model-00001-of-00002.safetensors
model-00002-of-00002.safetensors
Sau khi tải xuống tệp mô hình Phi-2, mô hình đã sẵn sàng để được chuyển đổi thành ở định dạng MediaPipe. Làm theo các bước trong bài viết Chuyển đổi mô hình sang MediaPipe định dạng.
Các mô hình đã xuất bằng AI Edge
AI Edge là một sản phẩm của Google cho phép bạn chuyển đổi mô hình do người dùng liên kết thành các mô hình TensorFlow Lite đa chữ ký. Để biết thêm chi tiết về cách liên kết và xuất mô hình, truy cập AI Edge Torch Trang GitHub.
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 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
Trường hợp 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 mô hình không phải Kaggle phiên bản Gemma, sử dụng tập lệnh chuyển đổi của chúng tôi để định dạng mô hình tương thích với MediaPipe.
Quá trình chuyển đổi mô hình yêu cầu có gói MediaPipe PyPI. Lượt chuyển đổi
tập lệnh sẽ 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ách làm như 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 mô hình cơ sở
cũng như các tuỳ chọn LoRA bổ sung. Lưu ý rằng vì API chỉ
hỗ trợ suy luận LoRA với GPU, phần phụ trợ phải được thiết lập 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 này sẽ xuất 2 tệp bộ đệm phẳng TFLite, một tệp cho mô hình cơ sở và quy tắc còn lại dành cho mô hình LoRA.
Thông số | 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 safetytensors 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 . |
ĐƯỜNG DẪN |
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ố mỗi lớp. | ĐƯỜNG DẪN |
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. | ĐƯỜNG DẪN |
vocab_model_file |
Đường dẫn đến thư mục lưu trữ tokenizer.json và
tokenizer_config.json tệp. Đối với Gemma, hãy trỏ đến một tệp tokenizer.model . |
ĐƯỜNG DẪN |
lora_ckpt |
Đường dẫn đến tệp LoRA ckpt của safetytensors có lưu trữ trọng số của bộ chuyển đổi LoRA. | ĐƯỜNG DẪN |
lora_rank |
Số nguyên đại diện cho thứ hạng của LoRA ckpt. Bắt buộc để chuyển đổi trọng số lora. Nếu không được cung cấp, thì trình chuyển đổi sẽ giả định rằng 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. | ĐƯỜNG DẪN |
Chuyển đổi mô hình AI Edge
Nếu bạn đang sử dụng một LLM được ánh xạ tới một mô hình TFLite thông qua AI Edge, hãy sử dụng nhóm tập lệnh để tạo Task Bundle. Quá trình gói gói mô hình được liên kết với siêu dữ liệu bổ sung (ví dụ: Cần có thông số của bộ mã hoá để chạy suy luận từ đầu đến cuối.
Quy trình gói mô hình cần có gói MediaPipe PyPI. Lượt chuyển đổi
tập lệnh sẽ 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
để 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ố | Mô tả | Giá trị được chấp nhận |
---|---|---|
tflite_model |
Đường dẫn đến mô hình TFLite đã xuất sang AI Edge. | ĐƯỜNG DẪN |
tokenizer_model |
Đường dẫn đến mô hình bộ mã hoá SentencePiece. | ĐƯỜNG DẪN |
start_token |
Mã bắt đầu dành riêng cho mẫu. Mã bắt đầu phải có trong mô hình tokenizer được cung cấp. | STRING |
stop_tokens |
Mã dừng cụ thể cho mô hình. Mã dừng phải có trong mô hình tokenizer được cung cấp. | DANH SÁCH[STRING] |
output_filename |
Tên của tệp gói tác vụ đầu ra. | ĐƯỜNG DẪN |
Tuỳ chỉnh LoRA
API dự đoán LLM Mediapipe có thể được định cấu hình để hỗ trợ Điều chỉnh thứ hạng thấp (LoRA) cho các mô hình ngôn ngữ lớn. Bằng cách sử dụng 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 mô hình ngôn ngữ lớn 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 API suy luận LLM hoạt động cho 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ú ý. Chiến dịch này triển khai ban đầu đóng vai trò là API thử nghiệm cho các phát triển trong tương lai với kế hoạch hỗ trợ thêm nhiều mô hình và nhiều loại lớp trong thời gian tới bản cập nhật.
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 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-2B hoặc Phi-2. Các mô hình Gemma-2B và Phi-2 đều có sẵn trên HugingFace ở định dạng safetytensors. Vì LLM suy luận 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ú ý 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 được tinh chỉnh và có thể truy cập công khai phù hợp với API suy luận LLM (mô hình ngôn ngữ lớn) 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 tệp adapter_model.safetensors
chứa trọng số của mô hình LoRA đã được tinh chỉnh. Tệp safetytensors 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 Bộ đệm phẳng TensorFlow Lite bằ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. Lưu ý rằng vì API chỉ hỗ trợ suy luận LoRA với 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 này sẽ xuất 2 tệp bộ đệm phẳng TFLite, một tệp cho mô hình cơ sở và quy tắc còn lại dành cho mô hình LoRA.
Suy luận mô hình LoRA
API suy luận LLM cho web, Android và iOS được cập nhật để hỗ trợ suy luận mô hình LoRA. Web hỗ trợ LoRA động, có thể chuyển đổi nhiều mô hình LoRA trong thời gian chạy. Android và iOS hỗ trợ LoRA tĩnh, sử dụng cùng các 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ô hình LoRA, người dùng sẽ 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 dự đoán LLM bằng LoRA, hãy sử dụng cùng các phương thức generateResponse()
hoặc generateResponseAsync()
làm mô hình cơ sở.