LLM Inference API, büyük dil modellerini (LLM'ler) tamamen cihaz üzerinde çalıştırmanıza olanak tanır. Bu API'yi metin oluşturma, bilgileri doğal dil biçiminde alma ve belgeleri özetleme gibi çeşitli görevleri gerçekleştirmek için kullanabilirsiniz. Görev, birden fazla metinden metne büyük dil modeli için yerleşik destek sağlar. Böylece, en yeni cihaz üzerinde üretken yapay zeka modellerini uygulamalarınıza ve ürünlerinize uygulayabilirsiniz.
Görev, çeşitli LLM'ler için yerleşik destek sağlar. LiteRT Community sayfasında barındırılan modeller, MediaPipe uyumlu bir biçimde sunulur ve ek dönüştürme veya derleme adımı gerektirmez.
PyTorch modellerini, Görev Paketleri oluşturmak için tokenizör parametreleriyle birlikte paketlenen çok imzalı LiteRT (tflite
) modellerine dışa aktarmak üzere AI Edge Torch'u kullanabilirsiniz. AI Edge Torch ile dönüştürülen modeller, LLM Inference API ile uyumludur ve CPU arka ucunda çalışabilir. Bu sayede Android ve iOS uygulamaları için uygun hale gelirler.
Başlayın
Hedef platformunuzla ilgili bu uygulama kılavuzlarından birini uygulayarak bu görevi kullanmaya başlayın. Platforma özel bu kılavuzlarda, mevcut bir modeli ve önerilen yapılandırma seçeneklerini kullanan kod örnekleri ile bu görevin temel uygulama sürecinde size yol gösterilir:
Web:
Android:
iOS
Görev ayrıntıları
Bu bölümde, bu görevin özellikleri, girişleri, çıkışları ve yapılandırma seçenekleri açıklanmaktadır.
Özellikler
LLM Tahmini API'si aşağıdaki temel özellikleri içerir:
- Metinden metne oluşturma: Giriş metin istemine göre metin oluşturun.
- LLM seçimi: Uygulamayı belirli kullanım alanlarınıza göre uyarlamak için birden fazla model uygulayın. Ayrıca modeli yeniden eğitebilir ve özelleştirilmiş ağırlıkları modele uygulayabilirsiniz.
- LoRA desteği: Tüm veri kümenizde eğitim yaparak veya açık kaynak topluluğundan önceden hazırlanmış LoRA modellerini alarak LLM özelliğini LoRA modeliyle genişletin ve özelleştirin (AI Edge Torch Üretken API ile dönüştürülen modellerle uyumlu değildir).
Görev girişleri | Görev çıkışları |
---|---|
LLM Inference API aşağıdaki girişleri kabul eder:
|
LLM Inference API aşağıdaki sonuçları döndürür:
|
Yapılandırma seçenekleri
Bu görev için aşağıdaki yapılandırma seçenekleri vardır:
Seçenek Adı | Açıklama | Değer Aralığı | Varsayılan değer |
---|---|---|---|
modelPath |
Modelin proje dizininde depolandığı yolunu belirtir. | PATH | Yok |
maxTokens |
Modelin işlediği maksimum jeton sayısı (giriş jetonları + çıkış jetonları). | Tamsayı | 512 |
topK |
Modelin, oluşturma işleminin her adımında dikkate aldığı jeton sayısı. Tahminleri, en olası k jetonla sınırlandırır. | Tamsayı | 40 |
temperature |
Oluşturma sırasında uygulanan rastgelelik miktarı. Sıcaklık yükseldikçe oluşturulan metinde daha fazla yaratıcılık elde edilir. Sıcaklık düştükçe ise daha tahmin edilebilir bir sonuç elde edilir. | Kayan | 0,8 |
randomSeed |
Metin oluşturma sırasında kullanılan rastgele tohum. | Tamsayı | 0 |
loraPath |
Cihazdaki LoRA modelinin mutlak yolu. Not: Bu özellik yalnızca GPU modelleriyle uyumludur. | PATH | Yok |
resultListener |
Sonuç dinleyicisini, sonuçları eşzamansız olarak alacak şekilde ayarlar. Yalnızca ayarsız oluşturma yöntemi kullanılırken geçerlidir. | Yok | Yok |
errorListener |
İsteğe bağlı bir hata işleyici ayarlar. | Yok | Yok |
Modeller
LLM Tahmini API'si, tarayıcılarda ve mobil cihazlarda çalışacak şekilde optimize edilmiş çeşitli modeller için yerleşik destek de dahil olmak üzere birçok metinden metne büyük dil modelini destekler. Bu hafif modeller, çıkarımların tamamen cihaz üzerinde çalıştırılması için kullanılabilir.
LLM Tahmini API'sini başlatmadan önce bir model indirin ve dosyayı proje dizininizde saklayın. LiteRT Community HuggingFace deposundaki önceden dönüştürülmüş bir modeli kullanabilir veya AI Edge Torch Generative Converter ile bir modeli MediaPipe uyumlu bir biçime dönüştürebilirsiniz.
LLM Tahmini API'si ile kullanabileceğiniz bir LLM'niz yoksa aşağıdaki modellerden birini kullanmaya başlayın.
Gemma-3 1B
Gemma-3 1B, Gemini modellerini oluşturmak için kullanılan aynı araştırma ve teknolojiden oluşturulan hafif, son teknoloji açık modeller ailesindeki en yeni modeldir. Model 1 milyar parametre ve açık ağırlıklar içerir. 1B varyantı, Gemma ailesindeki en hafif modeldir. Bu sayede cihaz üzerinde birçok kullanım alanı için idealdir.
HuggingFace'ın Gemma-3 1B modeli .task
biçiminde mevcuttur ve Android ile web uygulamaları için LLM Tahmini API'siyle kullanıma hazırdır.
Gemma-3 1B'yi LLM Inference API ile çalıştırırken aşağıdaki seçenekleri uygun şekilde yapılandırın:
preferredBackend
:CPU
veyaGPU
arka uç arasında seçim yapmak için bu seçeneği kullanın. Bu seçenek yalnızca Android için kullanılabilir.supportedLoraRanks
: LLM Tahmini API'si, Gemma-3 1B modeliyle Düşük Sıralı Uyumluluğu (LoRA) destekleyecek şekilde yapılandırılamaz.supportedLoraRanks
veyaloraRanks
seçeneklerini kullanmayın.maxTokens
:maxTokens
değeri, modele yerleştirilen bağlam boyutuyla eşleşmelidir. Buna anahtar/değer (KV) önbelleği veya bağlam uzunluğu da denilebilir.numResponses
: Her zaman 1 olmalıdır. Bu seçenek yalnızca web'de kullanılabilir.
Gemma-3 1B, web uygulamalarında çalıştırıldığında ilklendirme, mevcut iş parçacığında uzun süreli bir engellemeye neden olabilir. Mümkünse modeli her zaman bir işleyici iş parçacığında çalıştırın.
Gemma-2 2B
Gemma-2 2B, Gemma-2'nin 2B varyantıdır ve tüm platformlarda çalışır.
Model 2B parametreler ve açık ağırlıklar içerir. Gemma-2 2B, sınıfındaki modeller için en son teknolojiye sahip akıl yürütme becerileriyle bilinir.
PyTorch modelini dönüştürme
PyTorch üretken modelleri, AI Edge Torch Üretken API ile MediaPipe uyumlu bir biçime dönüştürülebilir. PyTorch modellerini çok imzalı LiteRT (TensorFlow Lite) modellerine dönüştürmek için API'yi kullanabilirsiniz. Modelleri eşleme ve dışa aktarma hakkında daha fazla bilgi için AI Edge Torch GitHub sayfasını ziyaret edin.
Bir PyTorch modelini AI Edge Torch Üretken API ile dönüştürmek için aşağıdaki adımlar uygulanır:
- PyTorch model kontrol noktalarını indirin.
- Modeli oluşturmak, dönüştürmek ve MediaPipe uyumlu bir dosya biçimine (
.tflite
) dönüştürmek için AI Edge Torch Generative API'yi kullanın. - tflite dosyasından ve model dize ayırıcısından bir Görev Paketi (
.task
) oluşturun.
Torch Generative dönüştürücü yalnızca CPU için dönüştürme yapar ve en az 64 GB RAM'e sahip bir Linux makinesine ihtiyaç duyar.
Görev paketi oluşturmak için paket oluşturma komut dosyasını kullanarak Görev Paketi oluşturun. Paketleme işlemi, eşlenen modeli ek meta veri (ör. Tokenizer Parametreleri) gereklidir.
Model paketleme işlemi için MediaPipe PyPI paketi gerekir. Dönüşüm komut dosyası, 0.10.14
tarihinden sonra tüm MediaPipe paketlerinde kullanılabilir.
Bağımlılıkları aşağıdakilerle yükleyip içe aktarın:
$ python3 -m pip install mediapipe
Modeli paketlemek için genai.bundler
kitaplığını kullanın:
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)
Parametre | Açıklama | Kabul edilen değerler |
---|---|---|
tflite_model |
AI Edge'in dışa aktardığı TFLite modelinin yolu. | PATH |
tokenizer_model |
SentencePiece tokenizasyon modeli yolu. | PATH |
start_token |
Modele özel başlangıç jetonu. Başlangıç jetonu, sağlanan tokenleştirici modelinde bulunmalıdır. | STRING |
stop_tokens |
Modele özel durak jetonları. Durak karakterleri, sağlanan dize ayırıcı modelinde bulunmalıdır. | LIST[STRING] |
output_filename |
Çıkış görevi paketi dosyasının adı. | PATH |
LoRA özelleştirmesi
Mediapipe LLM çıkarım API'si, büyük dil modelleri için düşük rütbeli uyarlamayı (LoRA) destekleyecek şekilde yapılandırılabilir. Geliştiriciler, hassas ayarlanmış LoRA modellerini kullanarak LLM'lerin davranışını uygun maliyetli bir eğitim süreciyle özelleştirebilir.LLM Çıkarma API'sinin LoRA desteği, GPU arka ucu için tüm Gemma varyantları ve Phi-2 modellerinde çalışır. LoRA ağırlıkları yalnızca dikkat katmanlarına uygulanır. Bu ilk uygulama, gelecekteki geliştirmeler için deneysel bir API görevi görür. Önümüzdeki güncellemelerde daha fazla model ve çeşitli katman türlerini destekleme planları vardır.
LoRA modelleri hazırlama
Gemma veya Phi-2 gibi desteklenen model türleriyle kendi veri kümenizde hassas ayarlanmış bir LoRA modeli eğitmek için HuggingFace'taki talimatları uygulayın. Gemma-2 2B, Gemma 2B ve Phi-2 modelleri, HuggingFace'ta safetensors biçiminde kullanılabilir. LLM Inference API yalnızca dikkat katmanlarında LoRA'yı desteklediğinden, LoraConfig
'ü oluştururken yalnızca dikkat katmanlarını aşağıdaki gibi belirtin:
# 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"],
)
Test için, HuggingFace'ta bulunan LLM Inference API'ye uygun, herkese açık ince ayarlanmış LoRA modelleri vardır. Örneğin, Gemma-2B için monsterapi/gemma-2b-lora-maths-orca-200k ve Phi-2 için lole25/phi-2-sft-ultrachat-lora.
Hazırlanan veri kümesinde eğitim yaptıktan ve modeli kaydettikten sonra, ince ayarlanmış LoRA model ağırlıklarını içeren bir adapter_model.safetensors
dosyası elde edersiniz.
safetensors dosyası, model dönüşümünde kullanılan LoRA kontrol noktasıdır.
Bir sonraki adımda, MediaPipe Python Paketi'ni kullanarak model ağırlıklarını TensorFlow Lite Flatbuffer'a dönüştürmeniz gerekir. ConversionConfig
, temel model seçeneklerinin yanı sıra ek LoRA seçeneklerini belirtmelidir. API yalnızca GPU ile LoRA çıkarımlarını desteklediğinden arka uç 'gpu'
olarak ayarlanmalıdır.
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)
Dönüştürücü, biri temel model, diğeri LoRA modeli için olmak üzere iki TFLite flatbuffer dosyası oluşturur.
LoRA model çıkarım
Web, Android ve iOS LLM Tahmini API'si, LoRA model çıkarımlarını desteklemek için güncellendi.
Android, başlatma sırasında statik LoRA'yı destekler. Kullanıcılar, LoRA modeli yüklemek için temel LLM'nin yanı sıra LoRA model yolunu da belirtir.// 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)
LoRA ile LLM çıkarımlarını çalıştırmak için temel modeldekiyle aynı generateResponse()
veya generateResponseAsync()
yöntemlerini kullanın.