LLM Inference API memungkinkan Anda menjalankan model bahasa besar (LLM) sepenuhnya di perangkat, yang dapat digunakan untuk melakukan berbagai tugas, seperti membuat teks, mengambil informasi dalam bentuk natural language, dan meringkas dokumen. Tugas ini memberikan 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 Gemma 2B dan 7B, bagian dari keluarga model terbuka yang ringan dan canggih yang dibuat dari riset dan teknologi yang sama dengan yang digunakan untuk membuat model Gemini. API ini juga mendukung model eksternal berikut: Phi-2, Falcon-RW-1B, dan StableLM-3B.
Selain model yang didukung secara native, pengguna dapat memetakan model lain menggunakan penawaran AI Edge dari Google (termasuk pemetaan model PyTorch). Hal ini memungkinkan pengguna mengekspor model yang dipetakan ke model TensorFlow Lite multi-tanda tangan, yang dipaketkan dengan parameter tokenizer untuk membuat Task Bundle.
Mulai
Mulai gunakan tugas ini dengan mengikuti salah satu panduan penerapan ini untuk platform target Anda. Panduan khusus platform ini akan memandu Anda dalam menerapkan 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 pada model.
- Dukungan LoRA - Perluas dan sesuaikan kemampuan LLM dengan model LoRA dengan melatih semua set data Anda atau mengambil model LoRA bawaan yang sudah disiapkan dari komunitas open source (khusus model native).
Input tugas | Output tugas |
---|---|
LLM Inference API menerima input berikut:
|
LLM Inference API memberikan 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. | PATH | 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 k teratas yang paling mungkin. Saat menetapkan
topK , Anda juga harus menetapkan nilai untuk
randomSeed . |
Bilangan Bulat | 40 |
temperature |
Jumlah keacakan yang diperkenalkan selama pembuatan. Suhu yang lebih tinggi menghasilkan lebih banyak kreativitas pada teks yang dihasilkan, sedangkan suhu yang lebih rendah menghasilkan pembuatan teks yang lebih dapat diprediksi. Saat menetapkan
temperature , Anda juga harus menetapkan nilai untuk
randomSeed . |
Mengambang | 0,8 |
randomSeed |
Seed acak yang digunakan selama pembuatan teks. | Bilangan Bulat | 0 |
loraPath |
Jalur absolut ke model LoRA secara lokal di perangkat. Catatan: ini hanya kompatibel dengan model GPU. | PATH | 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 berisi dukungan bawaan untuk model bahasa besar teks-ke-teks yang dapat dipisahkan yang dioptimalkan untuk berjalan di browser dan perangkat seluler. Model ringan ini dapat didownload untuk menjalankan inferensi sepenuhnya di perangkat.
Sebelum menginisialisasi LLM Inference API, download salah satu model yang didukung dan simpan file dalam direktori project Anda.
Gemma 2 M
Gemma 2B adalah bagian dari keluarga model terbuka yang ringan dan canggih, yang dibuat dari penelitian 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, perangkuman, dan penalaran.
Model Gemma 2B hadir dalam empat varian:
- 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 dari Model Kaggle, model sudah dalam format yang sesuai untuk digunakan dengan MediaPipe.
Jika mendownload Gemma 2B dari Wajah Memeluk, Anda harus mengonversi model ke format yang cocok untuk MediaPipe. LLM Inference API mengharuskan file berikut didownload dan dikonversi:
model-00001-of-00002.safetensors
model-00002-of-00002.safetensors
tokenizer.json
tokenizer_config.json
Gemma 7B
Gemma 7B adalah model Gemma yang lebih besar dengan 7B parameter dan bobot terbuka. Model ini lebih andal untuk berbagai tugas pembuatan teks, termasuk menjawab pertanyaan, perangkuman, 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.
Jika mendownload Gemma 7B dari Wajah Memeluk, Anda harus mengonversi model ke format yang cocok untuk MediaPipe. LLM Inference API memerlukan file berikut untuk didownload dan dikonversi:
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
Falcon 1 M
Falcon-1B adalah model khusus decoder kausal parameter 1 miliar yang dilatih dengan 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. Ikuti langkah-langkah dalam Mengonversi model ke format MediaPipe.
StabilLM 3B
StableLM-3B adalah model bahasa khusus decoder dengan 3 miliar parameter yang dilatih sebelumnya dengan 1 triliun token dari beragam 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. Ikuti langkah-langkah dalam Mengonversi model ke format MediaPipe.
Phi-2
Phi-2 adalah model Transformer dengan nilai 2,7 miliar parameter. model ini dilatih menggunakan berbagai teks sintetis NLP dan situs web yang difilter. Model ini paling cocok untuk perintah yang menggunakan format Tanya 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. Ikuti langkah-langkah dalam Mengonversi model ke format MediaPipe.
Model yang Diekspor Edge AI
AI Edge adalah penawaran Google yang memungkinkan Anda mengonversi model yang dipetakan pengguna menjadi model TensorFlow Lite multi-tanda tangan. Untuk mengetahui detail selengkapnya tentang pemetaan dan mengekspor model, kunjungi halaman GitHub AI Edge Torch.
Setelah mengekspor model ke dalam format TFLite, model siap dikonversi ke format MediaPipe. Untuk mengetahui informasi selengkapnya, lihat Mengonversi model ke format MediaPipe.
Mengonversi model ke format MediaPipe
Konversi model native
Jika Anda menggunakan LLM eksternal (Phi-2, Falcon, atau StableLM) atau Gemma versi non-Kaggle, gunakan skrip konversi kami untuk memformat model agar kompatibel dengan MediaPipe.
Proses konversi model memerlukan paket MediaPipe PyPI. Skrip konversi
tersedia di semua paket MediaPipe setelah 0.10.11
.
Instal dan impor dependensi dengan kode 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 . Perlu diketahui bahwa terkadang format safetensor model di-sharding menjadi beberapa file, misalnya model-00001-of-00003.safetensors , model-00001-of-00003.safetensors . Anda dapat menentukan pola file, seperti model*.safetensors . |
PATH |
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. | PATH |
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. | PATH |
vocab_model_file |
Jalur ke direktori yang menyimpan file tokenizer.json dan
tokenizer_config.json . Untuk Gemma, arahkan kursor ke satu file tokenizer.model . |
PATH |
lora_ckpt |
Jalur ke ckpt LoRA dari file safetensors yang menyimpan bobot adaptor LoRA. | PATH |
lora_rank |
Bilangan bulat yang menunjukkan peringkat LoRA ckpt. Diperlukan untuk mengonversi bobot lora. Jika tidak diberikan, pengonversi mengasumsikan tidak ada bobot LoRA. Catatan: Hanya backend GPU yang mendukung LoRA. | Bilangan Bulat |
lora_output_tflite_file |
Nama file tflite output untuk bobot LoRA. | PATH |
Konversi model Edge AI
Jika Anda menggunakan LLM yang dipetakan ke model TFLite melalui AI Edge, gunakan skrip bundling kami untuk membuat Task Bundle. Proses pemaketan mengemas model yang dipetakan dengan metadata tambahan (misalnya Parameter Tokenizer) yang diperlukan untuk menjalankan inferensi end-to-end.
Proses pemaketan model memerlukan paket MediaPipe PyPI. Skrip konversi
tersedia di semua paket MediaPipe setelah 0.10.14
.
Instal dan impor dependensi dengan kode 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 AI Edge mengekspor model TFLite. | PATH |
tokenizer_model |
Jalur ke model tokenizer SentencePiece. | PATH |
start_token |
Token awal khusus model. Token awal harus ada dalam model tokenizer yang disediakan. | STRING |
stop_tokens |
Membuat model token perhentian khusus. Token perhentian harus ada dalam model tokenizer yang disediakan. | DAFTAR[STRING] |
output_filename |
Nama file paket tugas output. | PATH |
Penyesuaian LoRA
API inferensi LLM Mediapipe dapat dikonfigurasi untuk mendukung Adaptasi 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 model Gemma-2B dan Phi-2 untuk backend GPU, dengan bobot LoRA yang hanya berlaku untuk lapisan atensi. Implementasi awal ini berfungsi sebagai API eksperimental untuk pengembangan mendatang dengan rencana untuk mendukung lebih banyak model dan berbagai jenis lapisan dalam update mendatang.
Mempersiapkan model LoRA
Ikuti petunjuk di HuggingFace untuk melatih model LoRA yang telah disesuaikan dengan baik di set data Anda dengan jenis model yang didukung, Gemma-2B atau Phi-2. Model Gemma-2B dan Phi-2 tersedia di HuggingFace dalam format safetensors. Karena LLM Inference API hanya mendukung LoRA pada lapisan atensi, hanya tentukan lapisan atensi saat membuat LoraConfig
seperti berikut:
# 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"],
)
Untuk pengujian, ada model LoRA yang ditingkatkan 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 sudah 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 TensorFlow Lite Flatbuffer menggunakan Paket MediaPipe Python. 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.
Inferensi model LoRA
LLM Inference API Web, Android, dan iOS diupdate untuk mendukung inferensi model LoRA. Web mendukung LoRA dinamis, yang dapat mengalihkan berbagai model LoRA selama runtime. Android dan iOS mendukung LoRA statis, yang menggunakan bobot LoRA yang sama selama masa aktif tugas.
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.