LLM Inference API memungkinkan Anda menjalankan model bahasa besar (LLM) sepenuhnya di perangkat, yang dapat Anda gunakan untuk melakukan berbagai tugas, seperti membuat teks, mengambil informasi dalam bentuk bahasa alami, dan merumuskan dokumen. Tugas ini menyediakan dukungan bawaan untuk beberapa model bahasa besar teks ke teks, sehingga Anda dapat menerapkan model AI generatif terbaru di perangkat ke aplikasi dan produk Anda.
Tugas ini mendukung varian Gemma berikut: Gemma-2 2B, Gemma 2B, dan Gemma 7B. Gemma adalah sekumpulan model terbuka yang ringan dan canggih, dibangun dari riset dan teknologi yang sama dengan yang digunakan untuk membuat model Gemini. Model ini juga mendukung model eksternal berikut: Phi-2, Falcon-RW-1B, dan StableLM-3B.
Selain model yang didukung, Anda dapat menggunakan AI Edge
Torch Google untuk mengekspor model PyTorch
ke dalam model LiteRT (tflite
) multi-tanda tangan, yang dipaketkan dengan
parameter tokenizer untuk membuat Task Bundle yang kompatibel dengan LLM
Inference API. Model yang dikonversi dengan AI Edge Torch hanya dapat berjalan di backend
CPU sehingga dibatasi untuk Android dan iOS.
Mulai
Mulai gunakan tugas ini dengan mengikuti salah satu panduan penerapan ini untuk platform target Anda. Panduan khusus platform ini akan memandu Anda dalam penerapan dasar tugas ini, dengan contoh kode yang menggunakan model yang tersedia dan opsi konfigurasi yang direkomendasikan:
Web:
Android:
iOS
Detail tugas
Bagian ini menjelaskan kemampuan, input, output, dan opsi konfigurasi tugas ini.
Fitur
LLM Inference API berisi fitur utama berikut:
- Pembuatan teks ke teks - Membuat teks berdasarkan perintah teks input.
- Pemilihan LLM - Menerapkan beberapa model untuk menyesuaikan aplikasi dengan kasus penggunaan tertentu. Anda juga dapat melatih ulang dan menerapkan bobot yang disesuaikan ke model.
- Dukungan LoRA - Memperluas dan menyesuaikan kemampuan LLM dengan model LoRA baik dengan melatih semua set data Anda, atau mengambil model LoRA bawaan yang telah disiapkan dari komunitas open source (tidak kompatibel dengan model yang dikonversi dengan AI Edge Torch Generative API).
Input tugas | Output tugas |
---|---|
LLM Inference API menerima input berikut:
|
LLM Inference API menghasilkan hasil berikut:
|
Opsi konfigurasi
Tugas ini memiliki opsi konfigurasi berikut:
Nama Opsi | Deskripsi | Rentang Nilai | Nilai Default |
---|---|---|---|
modelPath |
Jalur ke tempat model disimpan dalam direktori project. | JALUR | T/A |
maxTokens |
Jumlah maksimum token (token input + token output) yang ditangani model. | Bilangan Bulat | 512 |
topK |
Jumlah token yang dipertimbangkan model pada setiap langkah pembuatan. Membatasi prediksi ke token top-k yang paling mungkin. | Bilangan Bulat | 40 |
temperature |
Jumlah keacakan yang diperkenalkan selama pembuatan. Suhu yang lebih tinggi akan menghasilkan lebih banyak kreativitas dalam teks yang dihasilkan, sedangkan suhu yang lebih rendah akan menghasilkan generasi yang lebih dapat diprediksi. | Float | 0,8 |
randomSeed |
Seed acak yang digunakan selama pembuatan teks. | Bilangan Bulat | 0 |
loraPath |
Jalur absolut ke model LoRA secara lokal di perangkat. Catatan: opsi ini hanya kompatibel dengan model GPU. | JALUR | T/A |
resultListener |
Menetapkan pemroses hasil untuk menerima hasil secara asinkron. Hanya berlaku saat menggunakan metode pembuatan asinkron. | T/A | T/A |
errorListener |
Menetapkan pemroses error opsional. | T/A | T/A |
Model
LLM Inference API mendukung banyak model bahasa besar teks ke teks, termasuk dukungan bawaan untuk beberapa model yang dioptimalkan untuk berjalan di browser dan perangkat seluler. Model ringan ini dapat digunakan untuk menjalankan inferensi sepenuhnya di perangkat.
Sebelum melakukan inisialisasi LLM Inference API, download model dan simpan file dalam direktori project Anda. Anda dapat menggunakan model yang telah dikonversi sebelumnya atau mengonversi model ke format yang kompatibel dengan MediaPipe.
LLM Inference API kompatibel dengan dua jenis kategori model, beberapa di antaranya memerlukan konversi model. Gunakan tabel untuk mengidentifikasi metode langkah yang diperlukan untuk model Anda.
Model | Metode konversi | Platform yang kompatibel | Jenis file | |
---|---|---|---|---|
Model yang didukung | Gemma 2B, Gemma 7B, Gemma-2 2B, Phi-2, StableLM, Falcon | MediaPipe | Android, iOS, web | .bin |
Model PyTorch lainnya | Semua model LLM PyTorch | Library AI Edge Torch Generative | Android, iOS | .task |
Kami menghosting file .bin
yang dikonversi untuk Gemma 2B, Gemma 7B, dan Gemma-2 2B
di Kaggle. Model ini dapat langsung di-deploy menggunakan LLM Inference API kami. Untuk mempelajari cara mengonversi model lain, lihat bagian Konversi
Model.
Gemma-2 2B
Gemma-2 2B adalah model terbaru dalam rangkaian model open source Gemma yang ringan dan canggih, yang dibuat dari riset dan teknologi yang sama dengan yang digunakan untuk membuat model Gemini. Model ini berisi 2 miliar parameter dan bobot terbuka. Gemma-2 2B dikenal karena keterampilan penalaran canggih untuk model di kelasnya.
Model Gemma-2 2B tersedia dalam varian berikut:
- gemma2-2b-it-cpu-int8: Model 8-bit Gemma-2 2B dengan kompatibilitas CPU.
- gemma2-2b-it-gpu-int8: Model 8-bit Gemma-2 2B dengan kompatibilitas GPU.
Anda juga dapat menyesuaikan model dan menambahkan bobot baru sebelum menambahkannya ke aplikasi. Untuk mengetahui informasi selengkapnya tentang cara menyesuaikan dan menyesuaikan Gemma, lihat Menyesuaikan Gemma. Setelah mendownload Gemma-2 2B dari Model Kaggle, model sudah dalam format yang sesuai untuk digunakan dengan Tugas MediaPipe.
Gemma 2B
Gemma 2B adalah bagian dari rangkaian model open source yang ringan dan canggih, yang dibuat dari riset dan teknologi yang sama dengan yang digunakan untuk membuat model Gemini. Model ini berisi parameter 2B dan bobot terbuka. Model ini sangat cocok untuk berbagai tugas pembuatan teks, termasuk menjawab pertanyaan, peringkasan, dan penalaran.
Model Gemma 2B tersedia dalam varian berikut:
- gemma-2b-it-cpu-int4: Model 4-bit Gemma 2B dengan kompatibilitas CPU.
- gemma-2b-it-cpu-int8: Model 8-bit Gemma 2B dengan kompatibilitas CPU.
- gemma-2b-it-gpu-int4: Model 4-bit Gemma 2B dengan kompatibilitas GPU.
- gemma-2b-it-gpu-int8: Model 8-bit Gemma 2B dengan kompatibilitas GPU.
Anda juga dapat menyesuaikan model dan menambahkan bobot baru sebelum menambahkannya ke aplikasi. Untuk mengetahui informasi selengkapnya tentang cara menyesuaikan dan menyesuaikan Gemma, lihat Menyesuaikan Gemma. Setelah mendownload Gemma 2B dari Model Kaggle, model tersebut sudah dalam format yang sesuai untuk digunakan dengan Tugas MediaPipe.
Gemma 7B
Gemma 7B adalah model Gemma yang lebih besar dengan parameter 7B dan bobot terbuka. Model ini lebih canggih untuk berbagai tugas pembuatan teks, termasuk menjawab pertanyaan, peringkasan, dan penalaran. Gemma 7B hanya didukung di Web.
Model Gemma 7B tersedia dalam satu varian:
- gemma-1.1-7b-it-gpu-int8: Model 8-bit Gemma 7B dengan kompatibilitas GPU.
Setelah mendownload Gemma 7B dari Model Kaggle, model tersebut sudah dalam format yang sesuai untuk digunakan dengan MediaPipe.
Falcon 1B
Falcon-1B adalah model khusus decoder kausal dengan 1 miliar parameter yang dilatih pada 350 miliar token RefinedWeb.
LLM Inference API mengharuskan file berikut didownload dan disimpan secara lokal:
tokenizer.json
tokenizer_config.json
pytorch_model.bin
Setelah mendownload file model Falcon, model siap dikonversi ke format MediaPipe dengan skrip konversi. Ikuti langkah-langkah di bagian Skrip konversi untuk model yang didukung.
StableLM 3B
StableLM-3B adalah model bahasa khusus decoder dengan 3 miliar parameter yang telah dilatih pada 1 triliun token dari berbagai set data bahasa Inggris dan kode selama 4 epoch.
LLM Inference API mengharuskan file berikut didownload dan disimpan secara lokal:
tokenizer.json
tokenizer_config.json
model.safetensors
Setelah mendownload file model StableLM, model siap dikonversi ke format MediaPipe dengan skrip konversi. Ikuti langkah-langkah di bagian Skrip konversi untuk model yang didukung.
Phi-2
Phi-2 adalah model Transformer dengan 2,7 miliar parameter. Model ini dilatih menggunakan berbagai teks sintetis NLP dan situs yang difilter. Model ini paling cocok untuk perintah yang menggunakan format Pertanyaan-Jawab, chat, dan kode.
LLM Inference API mengharuskan file berikut didownload dan disimpan secara lokal:
tokenizer.json
tokenizer_config.json
model-00001-of-00002.safetensors
model-00002-of-00002.safetensors
Setelah mendownload file model Phi-2, model siap dikonversi ke format MediaPipe dengan skrip konversi. Ikuti langkah-langkah di bagian Skrip konversi untuk model yang didukung.
Model PyTorch Generatif
Model generatif PyTorch dapat dikonversi ke format yang kompatibel dengan MediaPipe dengan AI Edge Torch Generative API. Anda dapat menggunakan API untuk mengonversi model PyTorch menjadi model LiteRT (TensorFlow Lite) multi-tanda tangan. Untuk mengetahui detail selengkapnya tentang pemetaan dan ekspor model, buka halaman GitHub AI Edge Torch.
Jika Anda ingin menggunakan AI Edge Torch Generative API untuk mengonversi model PyTorch, ikuti langkah-langkah di bagian Konverter Torch Generative untuk model PyTorch.
Konversi model
MediaPipe LLM Inference API memungkinkan Anda menjalankan berbagai model bahasa besar di perangkat. Hal ini mencakup model yang telah dikonversi sebelumnya ke format yang kompatibel dengan MediaPipe, serta model lain yang dapat dikonversi dengan skrip konversi atau library AI Edge Torch.
LLM Inference API menerima model dalam format file .bin
dan .task
.
Model yang telah dikonversi dan model yang dikonversi dengan skrip konversi akan berupa
file .bin
, sedangkan model yang dikonversi dengan library AI Edge Torch akan berupa
file .task
. Jangan mengubah format file model yang dikonversi secara manual.
LLM Inference API berisi tiga jalur konversi model:
- Model yang telah dikonversi sebelumnya (Gemma 2B, Gemma 7B, Gemma-2 2B): Tidak perlu konversi.
- Model yang didukung (Phi-2, StableLM, Falcon): Skrip konversi MediaPipe.
- Model PyTorch lainnya (Semua model LLM PyTorch): AI Edge Torch Generative API.
Model yang telah dikonversi sebelumnya
Model Gemma-2 2B, Gemma 2B, dan Gemma 7B tersedia sebagai model yang telah dikonversi di format MediaPipe. Model ini tidak memerlukan langkah konversi tambahan dari pengguna dan dapat dijalankan apa adanya dengan LLM Inference API.
Anda dapat mendownload Gemma-2 2B dari Model Kaggle:
- gemma2-2b-it-cpu-int8: Model 8-bit Gemma-2 2B dengan kompatibilitas CPU.
- gemma2-2b-it-gpu-int8: Model 8-bit Gemma-2 2B dengan kompatibilitas GPU.
Anda dapat mendownload varian Gemma 2B dari Model Kaggle:
- gemma-2b-it-cpu-int4: Model 4-bit Gemma 2B dengan kompatibilitas CPU.
- gemma-2b-it-cpu-int8: Model 8-bit Gemma 2B dengan kompatibilitas CPU.
- gemma-2b-it-gpu-int4: Model 4-bit Gemma 2B dengan kompatibilitas GPU.
- gemma-2b-it-gpu-int8: Model 8-bit Gemma 2B dengan kompatibilitas GPU.
Anda dapat mendownload Gemma 7B dari Model Kaggle:
- gemma-1.1-7b-it-gpu-int8: Model 8-bit Gemma 7B dengan kompatibilitas GPU.
Untuk informasi selengkapnya tentang model Gemma, lihat dokumentasi tentang Gemma-2 2B, Gemma 2B, dan Gemma 7B.
Skrip konversi untuk model yang didukung
Paket MediaPipe menawarkan skrip konversi untuk mengonversi model eksternal berikut menjadi format yang kompatibel dengan MediaPipe:
Untuk informasi selengkapnya tentang model eksternal yang didukung, lihat dokumentasi tentang Falcon 1B, StableLM 3B, dan Phi-2.
Proses konversi model memerlukan paket MediaPipe PyPI. Skrip
konversi tersedia di semua paket MediaPipe setelah 0.10.11
.
Instal dan impor dependensi dengan perintah berikut:
$ python3 -m pip install mediapipe
Gunakan library genai.converter
untuk mengonversi model:
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)
Untuk mengonversi model LoRA, ConversionConfig
harus menentukan opsi model dasar
serta opsi LoRA tambahan. Perhatikan bahwa karena API hanya
mendukung inferensi LoRA dengan GPU, backend harus ditetapkan ke '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)
Konverter akan menghasilkan dua file flatbuffer TFLite, satu untuk model dasar dan satu lagi untuk model LoRA.
Parameter | Deskripsi | Nilai yang Diterima |
---|---|---|
input_ckpt |
Jalur ke file model.safetensors atau pytorch.bin . Perhatikan bahwa terkadang format safetensors model di-shard menjadi beberapa file, misalnya model-00001-of-00003.safetensors , model-00001-of-00003.safetensors . Anda dapat menentukan pola file, seperti model*.safetensors . |
JALUR |
ckpt_format |
Format file model. | {"safetensors", "pytorch"} |
model_type |
LLM yang sedang dikonversi. | {"PHI_2", "FALCON_RW_1B", "STABLELM_4E1T_3B", "GEMMA_2B"} |
backend |
Prosesor (delegasi) yang digunakan untuk menjalankan model. | {"cpu", "gpu"} |
output_dir |
Jalur ke direktori output yang menghosting file bobot per lapisan. | JALUR |
output_tflite_file |
Jalur ke file output. Misalnya, "model_cpu.bin" atau "model_gpu.bin". File ini hanya kompatibel dengan LLM Inference API, dan tidak dapat digunakan sebagai file `tflite` umum. | JALUR |
vocab_model_file |
Jalur ke direktori yang menyimpan file tokenizer.json dan
tokenizer_config.json . Untuk Gemma, arahkan ke satu file tokenizer.model . |
JALUR |
lora_ckpt |
Jalur ke file safetensors ckpt LoRA yang menyimpan bobot adaptor LoRA. | JALUR |
lora_rank |
Bilangan bulat yang mewakili peringkat ckpt LoRA. Diperlukan untuk mengonversi bobot lora. Jika tidak diberikan, pengonversi akan menganggap tidak ada bobot LoRA. Catatan: Hanya backend GPU yang mendukung LoRA. | Bilangan Bulat |
lora_output_tflite_file |
Nama file tflite output untuk bobot LoRA. | JALUR |
Torch Generative converter untuk model PyTorch
Model generatif PyTorch dapat dikonversi ke format yang kompatibel dengan MediaPipe dengan AI Edge Torch Generative API. Anda dapat menggunakan API untuk membuat, mengonversi, dan mengkuantisasi LLM PyTorch untuk digunakan dengan LLM Inference API. Konverter Torch Generative hanya mengonversi untuk CPU dan memerlukan mesin Linux dengan RAM minimal 64 GB.
Mengonversi model PyTorch dengan AI Edge Torch Generative API melibatkan hal berikut:
- Mendownload checkpoint model PyTorch
- Gunakan AI Edge Torch Generative API untuk membuat, mengonversi, dan mengkuantikasi
model ke format file yang kompatibel dengan MediaPipe (
.tflite
). - Buat Task Bundle (
.task
) dari file tflite dan tokenizer model.
Untuk membuat Task Bundle, gunakan skrip paket untuk membuat Task Bundle. Proses pengelompokan mengemas model yang dipetakan dengan metadata tambahan (misalnya, Parameter Pengurai) yang diperlukan untuk menjalankan inferensi end-to-end.
Proses pengelompokan model memerlukan paket MediaPipe PyPI. Skrip
konversi tersedia di semua paket MediaPipe setelah 0.10.14
.
Instal dan impor dependensi dengan perintah berikut:
$ python3 -m pip install mediapipe
Gunakan library genai.bundler
untuk memaketkan model:
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)
Parameter | Deskripsi | Nilai yang Diterima |
---|---|---|
tflite_model |
Jalur ke model TFLite yang diekspor AI Edge. | JALUR |
tokenizer_model |
Jalur ke model tokenizer SentencePiece. | JALUR |
start_token |
Token awal khusus model. Token awal harus ada dalam model tokenizer yang disediakan. | STRING |
stop_tokens |
Token perhentian khusus model. Token henti harus ada dalam model tokenizer yang disediakan. | LIST[STRING] |
output_filename |
Nama file paket tugas output. | JALUR |
Penyesuaian LoRA
API inferensi LLM Mediapipe dapat dikonfigurasi untuk mendukung Adaptasi Rangking Rendah (LoRA) untuk model bahasa besar. Dengan menggunakan model LoRA yang disesuaikan, developer dapat menyesuaikan perilaku LLM melalui proses pelatihan yang hemat biaya.Dukungan LoRA dari LLM Inference API berfungsi untuk semua varian Gemma dan model Phi-2 untuk backend GPU, dengan bobot LoRA yang hanya berlaku untuk lapisan perhatian. Implementasi awal ini berfungsi sebagai API eksperimental untuk pengembangan mendatang dengan rencana untuk mendukung lebih banyak model dan berbagai jenis lapisan dalam update mendatang.
Menyiapkan model LoRA
Ikuti petunjuk di
HuggingFace
untuk melatih model LoRA yang telah disesuaikan di set data Anda sendiri dengan jenis model yang didukung,
Gemma atau Phi-2. Model Gemma-2 2B, Gemma
2B, dan
Phi-2 tersedia di
HuggingFace dalam format safetensors. Karena LLM Inference API hanya mendukung
LoRA pada lapisan perhatian, hanya tentukan lapisan perhatian saat membuat
LoraConfig
sebagai berikut:
# 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"],
)
Untuk pengujian, ada model LoRA yang disesuaikan dan dapat diakses secara publik yang sesuai dengan LLM Inference API yang tersedia di HuggingFace. Misalnya, monsterapi/gemma-2b-lora-maths-orca-200k untuk Gemma-2B dan lole25/phi-2-sft-ultrachat-lora untuk Phi-2.
Setelah melatih set data yang disiapkan dan menyimpan model, Anda akan mendapatkan
file adapter_model.safetensors
yang berisi bobot model LoRA yang telah disesuaikan.
File safetensors adalah checkpoint LoRA yang digunakan dalam konversi model.
Sebagai langkah berikutnya, Anda perlu mengonversi bobot model menjadi Flatbuffer
TensorFlow Lite menggunakan Paket Python MediaPipe. ConversionConfig
harus menentukan opsi model dasar serta opsi LoRA tambahan. Perhatikan bahwa karena API hanya mendukung inferensi LoRA dengan GPU, backend harus disetel ke '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)
Konverter akan menghasilkan dua file flatbuffer TFLite, satu untuk model dasar dan satu lagi untuk model LoRA.
Inferensi model LoRA
Web, Android, dan iOS LLM Inference API diupdate untuk mendukung inferensi model LoRA.
Android mendukung LoRA statis selama inisialisasi. Untuk memuat model LoRA, pengguna menentukan jalur model LoRA serta LLM dasar.// 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)
Untuk menjalankan inferensi LLM dengan LoRA, gunakan metode generateResponse()
atau
generateResponseAsync()
yang sama dengan model dasar.