LLM Inference API, büyük dil modellerini (LLM) tamamen cihaz üzerinde çalıştırmanızı sağlar. Bu modelleri metin oluşturma, doğal dil biçiminde bilgi 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 sunar. Böylece, cihazdaki en yeni üretken yapay zeka modellerini uygulamalarınıza ve ürünlerinize uygulayabilirsiniz.
Görev, Gemini modellerini oluşturmak için kullanılan araştırma ve teknolojiyle oluşturulan hafif, son teknoloji ürünü açık model ailesinin bir parçası olan Gemma 2B ve 7B'yi destekler. Ayrıca şu harici modelleri de destekler: Phi-2, Falcon-RW-1B ve StableLM-3B.
Yerel olarak desteklenen modellere ek olarak kullanıcılar, Google'ın AI Edge tekliflerini kullanarak diğer modelleri de eşleyebilir (PyTorch modellerini eşleme dahil). Böylece kullanıcılar, eşlenmiş bir modeli çok imzalı TensorFlow Lite modellerine aktarabilir. Bu modeller, Görev Paketi oluşturmak için tokenizer parametreleriyle birlikte sunulur.
Başlayın
Hedef platformunuz için bu uygulama rehberlerinden birini izleyerek bu görevi kullanmaya başlayın. Platforma özgü bu kılavuzlar, kullanılabilir bir modelin kullanıldığı kod örnekleri ve önerilen yapılandırma seçenekleriyle birlikte bu görevin temel bir şekilde uygulanmasında size yol gösterir:
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 Inference API, aşağıdaki temel özellikleri içerir:
- Metinden metne oluşturma - Girilen metin istemine göre metin oluşturun.
- LLM seçimi - Uygulamayı belirli kullanım alanlarınıza uyarlamak için birden fazla model uygulayın. Ayrıca, özelleştirilmiş ağırlıkları modeli yeniden eğitebilir ve ona uygulayabilirsiniz.
- LoRA desteği - Tüm veri kümeniz üzerinde eğitim yaparak veya açık kaynak topluluğundan önceden oluşturulmuş LoRA modellerini (yalnızca yerel modeller) alarak LoRA modeliyle LLM özelliğini genişletin ve özelleştirin.
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ı verir:
|
Yapılandırma seçenekleri
Bu görev aşağıdaki yapılandırma seçeneklerine sahiptir:
Seçenek Adı | Açıklama | Değer Aralığı | Varsayılan Değer |
---|---|---|---|
modelPath |
Modelin proje dizininde depolandığı yol. | 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 simge ile sınırlar. topK ayarlarken randomSeed için de bir değer belirlemeniz gerekir. |
Tamsayı | 40 |
temperature |
Oluşturma sırasında sunulan rastgelelik miktarı. Sıcaklık ne kadar yüksek olursa üretilen metin daha fazla yaratıcılık gerektirir, düşük sıcaklık ise daha tahmin edilebilir üretim sağlar. temperature ayarlarken randomSeed için de bir değer belirlemeniz gerekir. |
Kayan | 0,8 |
randomSeed |
Metin oluşturma sırasında kullanılan rastgele çekirdek. | Tamsayı | 0 |
loraPath |
Cihazda yerel olarak LoRA modeline giden mutlak yol. Not: Bu yalnızca GPU modelleriyle uyumludur. | PATH | Yok |
resultListener |
Sonuç işleyiciyi, sonuçları eşzamansız olarak alacak şekilde ayarlar. Yalnızca eşzamansı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 Inference API, tarayıcılar ve mobil cihazlarda çalışmak üzere optimize edilmiş çeşitli metin-metin büyük dil modelleri için yerleşik destek içerir. Bu hafif modeller, tamamen cihaz üzerinde çıkarımlar yapmak için indirilebilir.
LLM Inference API'yi başlatmadan önce, desteklenen modellerden birini indirin ve dosyayı proje dizininizde depolayın.
Gemma 2B
Gemma 2B, Gemini modellerini oluşturmak için kullanılan araştırma ve teknolojiyle oluşturulan hafif, son teknoloji ürünü açık model ailesinin bir parçasıdır. Model, 2B parametre ve açık ağırlıklar içerir. Bu model soru yanıtlama, özetleme ve akıl yürütme gibi çeşitli metin oluşturma görevleri için uygundur.
Gemma 2B modelleri dört varyantla sunulur:
- gemma-2b-it-cpu-int4: CPU uyumluluğuna sahip Gemma 2B 4 bit modeli.
- gemma-2b-it-cpu-int8: CPU uyumluluğuna sahip Gemma 2B 8 bit modeli.
- gemma-2b-it-gpu-int4: GPU uyumluluğuna sahip Gemma 2B 4 bit modeli.
- gemma-2b-it-gpu-int8: GPU uyumluluğuna sahip Gemma 2B 8 bit modeli.
Ayrıca, modeli uygulamaya eklemeden önce ince ayar yapabilir ve yeni ağırlıklar ekleyebilirsiniz. Gemma'yı ayarlama ve özelleştirme hakkında daha fazla bilgi için Tuning Gemma konusuna bakın. Gemma'yı Kaggle Models'ten indirdikten sonra, model zaten MediaPipe ile kullanılacak uygun biçime sahip olur.
Gemma 2B'yi Hugging Face'den indirirseniz modeli MediaPipe dostu bir biçime dönüştürmeniz gerekir. LLM Inference API için aşağıdaki dosyaların indirilmesi ve dönüştürülmesi gerekir:
model-00001-of-00002.safetensors
model-00002-of-00002.safetensors
tokenizer.json
tokenizer_config.json
Gemma 7B
Gemma 7B, 7B parametreleri ve açık ağırlıklara sahip daha büyük bir Gemma modelidir. Bu model; soru yanıtlama, özetleme ve akıl yürütme gibi çeşitli metin oluşturma görevlerinde daha güçlüdür. Gemma 7B yalnızca web'de desteklenir.
Gemma 7B modelinin tek bir varyantı vardır:
- gemma-1.1-7b-it-gpu-int8: GPU uyumluluğuna sahip Gemma 7B 8 bit modeli.
Gemma 7B'yi Hugging Face'ten indirirseniz modeli MediaPipe uyumlu bir biçime dönüştürmeniz gerekir. LLM Inference API, aşağıdaki dosyaların indirilmesini ve dönüştürülmesini gerektirir:
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
Doğan 1B
Falcon-1B, 350 milyarlık RefinedWeb jetonu üzerinde eğitilen, 1 milyar parametreye sahip nedensel yalnızca kod çözücü modelidir.
LLM Inference API, aşağıdaki dosyaların yerel olarak indirilmesini ve depolanmasını gerektirir:
tokenizer.json
tokenizer_config.json
pytorch_model.bin
Falcon model dosyaları indirildikten sonra, model MediaPipe biçimine dönüştürülmeye hazır hale gelir. Modeli MediaPipe biçimine dönüştürme bölümündeki adımları uygulayın.
KararlıLM 3B
StableLM-3B, 4 dönem için 1 trilyon jetonun çeşitli İngilizce ve kod veri kümelerinde önceden eğitilmiş, 3 milyar parametreye yalnızca kod çözücü amaçlı dil modelidir.
LLM Inference API, aşağıdaki dosyaların yerel olarak indirilmesini ve depolanmasını gerektirir:
tokenizer.json
tokenizer_config.json
model.safetensors
StableLM model dosyaları indirildikten sonra model, MediaPipe biçimine dönüştürülmeye hazır hale gelir. Modeli MediaPipe biçimine dönüştürme bölümündeki adımları uygulayın.
Phi-2
Phi-2, 2,7 milyar parametreli bir Dönüştürücü modelidir. Çeşitli NLP sentetik metinler ve filtrelenmiş web siteleri kullanılarak eğitildi. Model; Soru-Cevap, sohbet ve kod biçimini kullanan istemler için en uygun seçenektir.
LLM Inference API, aşağıdaki dosyaların yerel olarak indirilmesini ve depolanmasını gerektirir:
tokenizer.json
tokenizer_config.json
model-00001-of-00002.safetensors
model-00002-of-00002.safetensors
Phi-2 model dosyaları indirildikten sonra, model MediaPipe biçimine dönüştürülmeye hazır hale gelir. Modeli MediaPipe biçimine dönüştürme bölümündeki adımları uygulayın.
AI Edge Dışa Aktarılan Modeller
AI Edge, kullanıcı tarafından eşlenmiş modelleri çok imzalı TensorFlow Lite modellerine dönüştürmenizi sağlayan bir Google teklifidir. Modelleri eşleme ve dışa aktarma hakkında daha fazla bilgi için AI Edge Torch GitHub sayfasını ziyaret edin.
Model, TFLite biçimine aktarıldıktan sonra MediaPipe biçimine dönüştürülmeye hazır olur. Daha fazla bilgi için Modeli MediaPipe biçimine dönüştürme konusuna bakın.
Modeli MediaPipe biçimine dönüştür
Yerel model dönüşümü
Harici bir LLM (Phi-2, Falcon veya StableLM) veya Gemma'nın Kaggle olmayan bir sürümünü kullanıyorsanız modeli MediaPipe ile uyumlu olacak şekilde biçimlendirmek için dönüştürme komut dosyalarımızı kullanın.
Model dönüştürme işlemi MediaPipe PyPI paketini gerektirir. Dönüşüm komut dosyası, 0.10.11
tarihinden itibaren tüm MediaPipe paketlerinde kullanılabilir.
Bağımlılıkları yüklemek ve içe aktarmak için aşağıdaki adımları uygulayın:
$ python3 -m pip install mediapipe
Modeli dönüştürmek için genai.converter
kitaplığını kullanın:
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)
LoRA modelini dönüştürmek için ConversionConfig
, temel model seçeneklerini ve ek LoRA seçeneklerini belirtmelidir. API yalnızca GPU ile LoRA çıkarımı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 düz arabellek dosyası oluşturur.
Parametre | Açıklama | Kabul Edilen Değerler |
---|---|---|
input_ckpt |
model.safetensors veya pytorch.bin dosyasının yolu. Bazen model güvenlik koruyucularının biçiminin birden fazla dosyaya kırıldığını (ör. model-00001-of-00003.safetensors , model-00001-of-00003.safetensors ) unutmayın. model*.safetensors gibi bir dosya kalıbı belirtebilirsiniz. |
PATH |
ckpt_format |
Model dosyasının biçimi. | {"safetensors", "pytorch"} |
model_type |
Dönüştürülen LLM. | {"PHI_2", "FALCON_RW_1B", "STABLELM_4E1T_3B", "GEMMA_2B"} |
backend |
Modeli çalıştırmak için kullanılan işlemci (yetki verilmiş kullanıcı). | {"cpu", "gpu"} |
output_dir |
Katman başına ağırlık dosyalarını barındıran çıkış dizinine giden yol. | PATH |
output_tflite_file |
Çıkış dosyasının yolu. Örneğin, "model_cpu.bin" veya "model_gpu.bin". Bu dosya yalnızca LLM Inference API ile uyumludur ve genel bir "tflite" dosyası olarak kullanılamaz. | PATH |
vocab_model_file |
tokenizer.json ve tokenizer_config.json dosyalarını depolayan dizinin yolu. Gemma için, fare imlecini tek tokenizer.model dosyasının üzerine getirin. |
PATH |
lora_ckpt |
LoRA bağdaştırıcı ağırlığını depolayan safetytensors dosyasının LoRA ckpt'sinin yolu. | PATH |
lora_rank |
LoRA kpt derecesini temsil eden bir tam sayı. Lora ağırlıklarını dönüştürmek için gereklidir. Sağlanmazsa dönüştürücü, LoRA ağırlığının olmadığını varsayar. Not: LoRA'yı yalnızca GPU arka ucu destekler. | Tamsayı |
lora_output_tflite_file |
LoRA ağırlıkları için çıkış tflite dosya adı. | PATH |
AI Edge model dönüşümü
AI Edge üzerinden TFLite modeline eşlenmiş bir LLM kullanıyorsanız paket komut dosyamızı kullanarak bir Görev Paketi oluşturun. Paketleme işlemi, eşlenen modeli ek meta verilerle (ör. Tokenizer Parametreleri) gerekir.
Model paketleme işlemi için MediaPipe PyPI paketi gerekir. Dönüşüm komut dosyası, 0.10.14
tarihinden itibaren tüm MediaPipe paketlerinde kullanılabilir.
Bağımlılıkları yüklemek ve içe aktarmak için aşağıdaki adımları uygulayın:
$ python3 -m pip install mediapipe
Modeli gruplandırmak 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'den dışa aktarılan TFLite modelinin yolu. | PATH |
tokenizer_model |
SentencePiece belirteç oluşturucu modeline giden yol. | PATH |
start_token |
Modele özel başlangıç jetonu. Başlangıç jetonu, sağlanan jeton oluşturucu modelinde bulunmalıdır. | Dize |
stop_tokens |
Modele özel durak jetonları. Durdurma jetonları, sağlanan jeton oluşturucu modelinde mevcut olmalıdır. | LİSTE[STRING] |
output_filename |
Çıkış görev paketi dosyasının adı. | PATH |
LoRA özelleştirmesi
Mediapipe LLM çıkarım API'si, büyük dil modelleri için Düşük Sıralama Uyarlaması'nı (LoRA) destekleyecek şekilde yapılandırılabilir. Geliştiriciler, ince ayarlı LoRA modelleri kullanan uygun maliyetli bir eğitim süreciyle LLM'lerin davranışını özelleştirebilir.LLM Inference API'nin LoRA desteği, yalnızca dikkat katmanları için geçerli olan LoRA ağırlıkları ile GPU arka ucu için Gemma-2B ve Phi-2 modellerinde kullanılabilir. Bu ilk uygulama, gelecekteki geliştirmeler için deneysel bir API işlevi görmektedir. Gelecek güncellemelerde daha fazla model ve çeşitli katman türlerini desteklemesi planlanmaktadır.
LoRA modelleri hazırlama
Desteklenen model türleri (Gemma-2B veya Phi-2) ile kendi veri kümenizde hassas ayarlar yapılmış bir LoRA modeli eğitmek için HuggingFace talimatlarını uygulayın. Gemma-2B ve Phi-2 modellerinin her ikisi de HuggingFace'te koruyucu biçimde mevcuttur. LLM Inference API yalnızca dikkat katmanlarında LoRA'yı desteklediğinden, sadece aşağıdaki gibi LoraConfig
oluştururken dikkat katmanlarını belirtin:
# 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"],
)
Test için HuggingFace'te LLM Inference API'ye uyan, herkesin erişebileceği ve hassas ayarları yapılmış LoRA modelleri mevcuttur. Ö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ümesiyle ilgili eğitim verip modeli kaydettikten sonra, hassas ayarlar yapılmış LoRA model ağırlıklarını içeren bir adapter_model.safetensors
dosyası elde ediyorsunuz. Safetensors dosyası, model dönüştürme işleminde kullanılan LoRA kontrol noktasıdır.
Sonraki adım olarak, MediaPipe Python Paketini kullanarak model ağırlıklarını TensorFlow Lite Flatbuffer ürününe dönüştürmeniz gerekir. ConversionConfig
alanında temel model seçeneklerinin yanı sıra ek LoRA seçenekleri de belirtilmelidir. API yalnızca GPU ile LoRA çıkarımı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 düz arabellek dosyası oluşturur.
LoRA modeli çıkarımı
Web, Android ve iOS LLM Inference API, LoRA modeli çıkarımını destekleyecek şekilde güncellendi. Web, çalışma zamanında farklı LoRA modellerini değiştirebilen dinamik LoRA'yı destekler. Android ve iOS, görevin ömrü boyunca aynı LoRA ağırlıklarını kullanan statik LoRA'yı destekler.
Android, başlatma sırasında statik LoRA'yı destekler. Bir LoRA modelini yüklemek için kullanıcılar 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ımı çalıştırmak için temel modelle aynı generateResponse()
veya generateResponseAsync()
yöntemlerini kullanın.