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 cung cấp tính 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, 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 ứng dụng và sản phẩm của mình.
Tác vụ này hỗ trợ các biến thể sau của Gemma: Gemma-2 2B, Gemma 2B và Gemma 7B. Gemma là một gia đình gồm các mô hình mở, hiện đại và 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 ra các mô hình Gemini. Công cụ này cũng hỗ trợ các mô hình bên ngoài sau: Phi-2, Falcon-RW-1B và StableLM-3B.
Ngoài các mô hình được hỗ trợ, bạn có thể sử dụng AI Edge Torch của Google để xuất mô hình PyTorch sang mô hình LiteRT (tflite
) nhiều chữ ký. Các mô hình này được đóng gói với các tham số trình phân tích cú pháp để tạo Gói tác vụ tương thích với API suy luận LLM. Các mô hình được chuyển đổi bằng AI Edge Torch chỉ có thể chạy trên phần phụ trợ CPU và do đó chỉ giới hạn ở 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 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 nhiệm 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, dữ liệu đầu ra và tuỳ chọn cấu hình của tác vụ này.
Tính năng
API suy luận LLM chứa 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 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 phù hợp với 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 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 được chuẩn bị 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 AI Edge Torch).
Dữ liệu đầu vào của việc cần làm | Kết quả của tác vụ |
---|---|
API suy luận LLM chấp nhận các dữ liệu đầu vào sau:
|
API suy luận LLM sẽ xuất ra các kết quả sau:
|
Tuỳ chọn cấu hình
Tác vụ này có các tuỳ 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 lưu trữ mô hình 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 các dự đoán ở k mã thông báo có nhiều khả năng 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 độ cao hơn sẽ tạo ra văn bản sáng tạo hơn, trong khi nhiệt độ thấp hơn sẽ tạo ra văn bản dễ dự đoán hơn. | Số thực dấu phẩy động | 0,8 |
randomSeed |
Giá trị khởi tạo 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ô 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 từ văn bản sang văn bản, bao gồm cả tính năng 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 nhẹ này để chạy các phép 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 hoặc chuyển đổi mô hình sang định dạng tương thích với MediaPipe.
API suy luận LLM tương thích với hai loại mô hình, một số mô hình trong đó yêu cầu chuyển đổi mô hình. Sử dụng bảng để xác định phương thức bước bắt buộc cho mô hình của bạn.
Mô hình | Phương thức chuyển đổi | Nền tảng tương thích | Loại tệp | |
---|---|---|---|---|
Các mẫu được hỗ trợ | Gemma 2B, Gemma 7B, Gemma-2 2B, Phi-2, StableLM, Falcon | MediaPipe | Android, iOS, web | .bin |
Các mô hình PyTorch khác | Tất cả mô hình LLM PyTorch | Thư viện AI Edge Torch Generative | Android, iOS | .task |
Chúng tôi đang lưu trữ các tệp .bin
đã chuyển đổi cho Gemma 2B, Gemma 7B và Gemma-2 2B trên Kaggle. Bạn có thể triển khai trực tiếp các mô hình này bằng API suy luận LLM. Để tìm hiểu cách chuyển đổi các mô hình khác, hãy xem phần Chuyển đổi mô hình.
Gemma-2 2B
Gemma-2 2B là mô hình mới nhất trong gia đình Gemma gồm các mô hình mở, hiện đại và có trọng lượng nhẹ đượ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. Mô hình này chứa các tham số 2B 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 này.
Các mô hình Gemma-2 2B có các biến thể sau:
- gemma2-2b-it-cpu-int8: Mô hình Gemma-2 2B 8 bit có khả năng tương thích với CPU.
- gemma2-2b-it-gpu-int8: Mô hình Gemma-2 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 mô hình đó vào ứng dụng. Để biết thêm thông tin về cách điều chỉnh và tuỳ chỉnh Gemma, hãy xem phần Điều chỉnh Gemma. Sau khi tải Gemma-2 2B xuống từ Kaggle Models, mô hình này đã ở định dạng thích hợp để sử dụng với MediaPipe Tasks.
Gemma 2B
Gemma 2B là một phần của một gia đình mô hình mở, hiện đại và 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. 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ả việc trả lời câu hỏi, tóm tắt và suy luận.
Các mẫu Gemma 2B có các biến thể sau:
- 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 mô hình đó vào ứng dụng. Để biết thêm thông tin về cách điều chỉnh và tuỳ chỉnh Gemma, hãy xem phần Điều chỉnh Gemma. Sau khi tải Gemma 2B xuống từ Kaggle Models, mô hình này đã ở định dạng thích hợp để sử dụng với MediaPipe Tasks.
Gemma 7B
Gemma 7B là một mô hình Gemma lớn hơn với các tham số 7B và trọng số mở. Mô hình này hiệu quả hơn cho nhiều tác vụ tạo văn bản, bao gồm cả việc trả lời câu hỏi, tóm tắt và suy 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.
Sau khi tải Gemma 7B xuống từ Mô hình Kaggle, mô hình này đã ở định dạng phù hợp để sử dụng với MediaPipe.
Falcon 1B
Falcon-1B là một mô hình chỉ có bộ giải mã nhân quả 1 tỷ tham số được huấn luyện trên 350 tỷ mã thông báo của RefinedWeb.
API suy luận LLM yêu cầu tải các tệp sau xuống và lưu trữ cục bộ:
tokenizer.json
tokenizer_config.json
pytorch_model.bin
Sau khi tải các tệp mô hình Falcon xuống, bạn có thể chuyển đổi mô hình sang định dạng MediaPipe bằng tập lệnh chuyển đổi. Làm theo các bước trong phần Tập lệnh chuyển đổi cho các mô hình được hỗ trợ.
StableLM 3B
StableLM-3B là một mô hình ngôn ngữ chỉ có bộ giải mã 3 tỷ tham số, được huấn luyện trước trên 1 nghìn tỷ mã thông báo của nhiều tập dữ liệu tiếng Anh và mã trong 4 thời đại.
API suy luận LLM yêu cầu tải các tệp sau xuống và lưu trữ cục bộ:
tokenizer.json
tokenizer_config.json
model.safetensors
Sau khi tải các tệp mô hình StableLM xuống, bạn có thể chuyển đổi mô hình sang định dạng MediaPipe bằng tập lệnh chuyển đổi. Làm theo các bước trong phần Tập lệnh chuyển đổi cho các mô hình được hỗ trợ.
Phi-2
Phi-2 là một mô hình Transformer có 2,7 tỷ tham số. Mô hình này được huấn luyện bằng nhiều văn bản tổng hợp NLP và các trang web được 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-Câu trả lời, trò chuyện và mã.
API suy luận LLM yêu cầu tải các tệp sau xuống và lưu trữ cục bộ:
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, bạn có thể chuyển đổi mô hình sang định dạng MediaPipe bằng tập lệnh chuyển đổi. Làm theo các bước trong phần Tập lệnh chuyển đổi cho các mô hình được hỗ trợ.
Mô hình PyTorch tạo sinh
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 AI Edge Torch. Bạn có thể sử dụng API này để chuyển đổi các mô hình PyTorch thành mô hình LiteRT (TensorFlow Lite) nhiều 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.
Nếu bạn định sử dụng API AI Edge Torch Generative để chuyển đổi mô hình PyTorch, hãy làm theo các bước trong phần Trình chuyển đổi Torch Generative cho mô hình PyTorch.
Lập mô hình lượt chuyển đổi
API suy luận LLM của MediaPipe cho phép bạn chạy nhiều mô hình ngôn ngữ lớn trên thiết bị. Điều này bao gồm các mô hình đã được chuyển đổi trước thành định dạng tương thích với MediaPipe, cũng như các mô hình khác có thể được chuyển đổi bằng tập lệnh chuyển đổi hoặc thư viện AI Edge Torch.
API suy luận LLM chấp nhận các mô hình ở định dạng tệp .bin
và .task
.
Các mô hình được chuyển đổi trước và mô hình được chuyển đổi bằng tập lệnh chuyển đổi sẽ là tệp .bin
, còn các mô hình được chuyển đổi bằng thư viện AI Edge Torch sẽ là tệp .task
. Không thay đổi định dạng tệp của các mô hình đã chuyển đổi theo cách thủ công.
API suy luận LLM chứa ba đường dẫn chuyển đổi mô hình:
- Mô hình được chuyển đổi trước (Gemma 2B, Gemma 7B, Gemma-2 2B): Không cần chuyển đổi.
- Các mô hình được hỗ trợ (Phi-2, StableLM, Falcon): Tập lệnh chuyển đổi MediaPipe.
- Các mô hình PyTorch khác (Tất cả mô hình LLM PyTorch): AI Edge Torch Generative API.
Mô hình được chuyển đổi trước
Các mô hình Gemma-2 2B, Gemma 2B và Gemma 7B có sẵn dưới dạng mô hình được chuyển đổi trước ở định dạng MediaPipe. Những mô hình này không yêu cầu người dùng thực hiện thêm bước chuyển đổi nào và có thể chạy nguyên trạng bằng API suy luận LLM.
Bạn có thể tải Gemma-2 2B xuống từ Kaggle Models:
- gemma2-2b-it-cpu-int8: Mô hình Gemma-2 2B 8 bit có khả năng tương thích với CPU.
- gemma2-2b-it-gpu-int8: Mô hình Gemma-2 2B 8 bit có khả năng tương thích với GPU.
Bạn có thể tải các biến thể của Gemma 2B xuống từ Kaggle Models:
- 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ó thể tải Gemma 7B xuống từ Kaggle Models:
- 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.
Để biết thêm thông tin về các mô hình Gemma, hãy xem tài liệu về Gemma-2 2B, Gemma 2B và Gemma 7B.
Tập lệnh chuyển đổi cho các mô hình được hỗ trợ
Gói MediaPipe cung cấp một tập lệnh chuyển đổi để chuyển đổi các mô hình bên ngoài sau đây thành định dạng tương thích với MediaPipe:
Để biết thêm thông tin về các mô hình bên ngoài được hỗ trợ, hãy xem tài liệu về Falcon 1B, StableLM 3B và Phi-2.
Quá trình chuyển đổ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.11
.
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.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)
Trình chuyển đổi sẽ xuất ra hai tệp flatbuffer 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ố | 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 safetensors 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ý (đại diệ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ố theo 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ữ các tệp tokenizer.json và tokenizer_config.json . Đối với Gemma, hãy trỏ đến tệp tokenizer.model duy nhất. |
ĐƯỜNG DẪN |
lora_ckpt |
Đường dẫn đến tệp safetensors ckpt LoRA lưu trữ trọng số của bộ chuyển đổi LoRA. | ĐƯỜNG DẪN |
lora_rank |
Một số nguyên đại diện cho thứ hạng của ckpt LoRA. Bắt buộc để chuyển đổi trọng số lora. Nếu bạn không cung cấp, thì trình 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 |
Tên tệp tflite đầu ra cho các trọng số LoRA. | ĐƯỜNG DẪN |
Bộ chuyển đổi Torch Generative cho các 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 AI Edge Torch. Bạn có thể sử dụng API này để tạo, chuyển đổi và lượng tử hoá LLM PyTorch để sử dụng với API suy luận LLM. 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.
Việc chuyển đổi mô hình PyTorch bằng API AI Edge Torch Generative 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 AI Edge Torch Generative để 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 Gói tác vụ (
.task
) từ tệp tflite và trình phân tích cú pháp mô hình.
Để tạo Gói tác vụ, hãy sử dụng tập lệnh đóng gói để tạo Gói tác vụ. Quy trình đóng gói sẽ đóng gói mô hình đã liên kết bằng siêu dữ liệu bổ sung (ví dụ: Tham số trình phân tích cú pháp) cần thiết để chạy quy trình suy luận từ đầu đến cuối.
Quy trình đóng 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)
Thông số | Mô tả | Giá trị được chấp nhận |
---|---|---|
tflite_model |
Đường dẫn đến mô hình TFLite đã xuất của AI Edge. | ĐƯỜNG DẪN |
tokenizer_model |
Đường dẫn đến mô hình bộ phân tích cú pháp SentencePiece. | ĐƯỜNG DẪN |
start_token |
Mã thông báo bắt đầu cụ thể của mô hình. Mã thông báo bắt đầu phải có trong mô hình trình tạo mã thông báo được cung cấp. | STRING |
stop_tokens |
Mã thông báo điểm dừng cụ thể của mô hình. Mã thông báo dừng phải có trong mô hình trình tạo 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 của Mediapipe để hỗ trợ tính năng Điều chỉnh theo thứ hạ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 LLM thông qua một 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ú ý. Phương thứ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 hơn 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 bằng các loại mô hình được hỗ trợ, Gemma hoặc Phi-2. Cá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ú ý 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"],
)
Để thử nghiệm, có các mô hình LoRA được tinh chỉnh 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 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.
Ở bước tiếp theo, bạn cần chuyển đổi trọng số mô hình thành Flatbuffer của 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. 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)
Trình chuyển đổi sẽ xuất ra hai tệp flatbuffer 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 suy luận LLM cho 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 quy trình suy luận LLM bằng LoRA, hãy sử dụng các phương thức generateResponse()
hoặc generateResponseAsync()
giống như mô hình cơ sở.