LLM çıkarım rehberi

LLM Tahmini API'si, 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.

Deneyin.

Görev, Gemma'nın şu varyantlarını destekler: Gemma-2 2B, Gemma 2B ve Gemma 7B. Gemma, Gemini modellerini oluşturmak için kullanılan aynı araştırma ve teknolojiden oluşturulmuş, hafif ve son teknoloji açık modellerden oluşan bir ailedir. Ayrıca Phi-2, Falcon-RW-1B ve StableLM-3B harici modellerini de destekler.

Desteklenen modellere ek olarak, PyTorch modellerini çok imzalı LiteRT (tflite) modellerine aktarmak için Google'ın AI Edge Torch'unu kullanabilirsiniz. Bu modeller, LLM Inference API ile uyumlu Görev Paketleri oluşturmak için tokenizör parametreleriyle birlikte gruplandırılır. AI Edge Torch ile dönüştürülen modeller yalnızca CPU arka ucunda çalışabilir ve bu nedenle Android ve iOS ile sınırlıdır.

Başlayın

Hedef platformunuzla ilgili bu uygulama kılavuzlarından birini uygulayarak bu görevi kullanmaya başlayın. Bu platforma özel kılavuzlarda, mevcut bir modeli ve önerilen yapılandırma seçeneklerini kullanan kod örnekleri ile bu görevin temel uygulamasında size yol gösterilmektedir:

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:

  1. Metinden metne oluşturma: Giriş metni istemlerine göre metin oluşturun.
  2. 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.
  3. 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 Generative 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:
  • Metin istemi (ör. soru, e-posta konusu, özetlenmesi gereken doküman)
LLM Inference API aşağıdaki sonuçları döndürür:
  • Giriş istemine göre oluşturulan metin (ör. soruya verilen yanıt, e-posta taslağı, dokümanın özeti)

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 üretilen metinde daha fazla yaratıcılık elde edilir. Sıcaklık düştükçe ise daha tahmin edilebilir bir üretim 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ıldığında 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. Önceden dönüştürülmüş bir model kullanabilir veya bir modeli MediaPipe uyumlu bir biçime dönüştürebilirsiniz.

LLM Tahmini API'si, bazılarında model dönüşümü gerektiren iki kategori model türüyle uyumludur. Modeliniz için gerekli adımlar yöntemini belirlemek üzere tabloyu kullanın.

Modeller Dönüşüm yöntemi Uyumlu platformlar Dosya türü
Desteklenen modeller Gemma 2B, Gemma 7B, Gemma-2 2B, Phi-2, StableLM, Falcon MediaPipe Android, iOS, web .bin
Diğer PyTorch modelleri Tüm PyTorch LLM modelleri AI Edge Torch Üretken kitaplığı Android, iOS .task

Gemma 2B, Gemma 7B ve Gemma-2 2B için dönüştürülmüş .bin dosyalarını Kaggle'da barındırıyoruz. Bu modeller, LLM Tahmini API'miz kullanılarak doğrudan dağıtılabilir. Diğer modelleri nasıl dönüştürebileceğinizi öğrenmek için Model Dönüşüm bölümüne bakın.

Gemma-2 2B

Gemma-2 2B, Gemini modellerini oluşturmak için kullanılan aynı araştırma ve teknolojiden yararlanılarak geliştirilen hafif, son teknoloji açık modeller ailesindeki en yeni modeldir. 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.

Gemma-2 2B'yi indirin

Gemma-2 2B modelleri aşağıdaki varyantlarda mevcuttur:

Ayrıca modeli uygulamaya eklemeden önce ayarlayabilir ve yeni ağırlıklar ekleyebilirsiniz. Gemma'yı ayarlama ve özelleştirme hakkında daha fazla bilgi için Gemma'yı ayarlama başlıklı makaleyi inceleyin. Gemma-22B, Kaggle Modelleri'nden indirildikten sonra MediaPipe Görevler ile kullanılmak üzere uygun biçimdedir.

Gemma 2B

Gemma 2B, Gemini modellerini oluşturmak için kullanılan aynı araştırma ve teknolojiden oluşturulan hafif, son teknoloji açık model ailesinin bir parçasıdır. Model, 2B parametreler 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'yi indirin

Gemma 2B modelleri aşağıdaki varyantlarda mevcuttur:

Ayrıca modeli uygulamaya eklemeden önce ayarlayabilir ve yeni ağırlıklar ekleyebilirsiniz. Gemma'yı ayarlama ve özelleştirme hakkında daha fazla bilgi için Gemma'yı ayarlama başlıklı makaleyi inceleyin. Gemma 2B, Kaggle Models'den indirildikten sonra MediaPipe Görevler ile kullanılmak üzere uygun biçimdedir.

Gemma 7B

Gemma 7B, 7B parametreleri ve açık ağırlıklara sahip daha büyük bir Gemma modelidir. Model; soru yanıtlama, özetleme ve akıl yürütme gibi çeşitli metin oluşturma görevleri için daha güçlüdür. Gemma 7B yalnızca web'de desteklenir.

Gemma 7B'yi indirin

Gemma 7B modeli tek bir varyantta sunulur:

Gemma 7B, Kaggle Models'den indirildikten sonra MediaPipe ile kullanılmak üzere uygun biçimdedir.

Falcon 1B

Falcon-1B, RefinedWeb'in 350 milyar jetonunda eğitilmiş, yalnızca nedensel kod çözücüye sahip 1 milyar parametreli bir modeldir.

Falcon 1B'yi indirin

LLM Tahmini API'si, aşağıdaki dosyaların yerel olarak indirilip depolanmasını gerektirir:

  • tokenizer.json
  • tokenizer_config.json
  • pytorch_model.bin

Falcon model dosyaları indirildikten sonra model, bir dönüşüm komut dosyasıyla MediaPipe biçimine dönüştürülmeye hazırdır. Desteklenen modeller için dönüşüm komut dosyası bölümündeki adımları uygulayın.

StableLM 3B

StableLM-3B, 4 dönem boyunca 1 trilyon farklı İngilizce ve kod veri kümesi jetonu üzerinde önceden eğitilmiş, 3 milyar parametreli, yalnızca kod çözücü dil modelidir.

StableLM 3B'yi indirin

LLM Tahmini API'si, aşağıdaki dosyaların yerel olarak indirilip depolanmasını gerektirir:

  • tokenizer.json
  • tokenizer_config.json
  • model.safetensors

StableLM model dosyaları indirildikten sonra model, bir dönüşüm komut dosyasıyla MediaPipe biçimine dönüştürülmeye hazırdır. Desteklenen modeller için dönüşüm komut dosyası bölümündeki adımları uygulayın.

Phi-2

Phi-2, 2,7 milyar parametre içeren bir dönüştürücü modelidir. Çeşitli sentetik NLP metinleri ve filtrelenmiş web siteleri kullanılarak eğitildi. Bu model, soru-cevap, sohbet ve kod biçimini kullanan istemler için en uygundur.

Phi-2'yi indirin

LLM Tahmini API'si, aşağıdaki dosyaların yerel olarak indirilip 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, bir dönüştürme komut dosyasıyla MediaPipe biçimine dönüştürülmeye hazırdır. Desteklenen modeller için dönüşüm komut dosyası bölümündeki adımları uygulayın.

Üretken PyTorch modelleri

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 dönüştürmek için AI Edge Torch Üretken API'yi kullanmayı planlıyorsanız PyTorch modelleri için Torch Üretken dönüştürücü bölümündeki adımları uygulayın.

Model dönüşümü

MediaPipe LLM Tahmini API'si, cihaz üzerinde çok çeşitli büyük dil modelleri çalıştırmanıza olanak tanır. MediaPipe uyumlu bir biçime önceden dönüştürülmüş modellerin yanı sıra dönüşüm komut dosyası veya AI Edge Torch kitaplığıyla dönüştürülebilen diğer modeller de buna dahildir.

LLM Inference API, .bin ve .task dosya biçimlerindeki modelleri kabul eder. Önceden dönüştürülmüş modeller ve dönüşüm komut dosyasıyla dönüştürülmüş modeller .bin dosyaları olurken AI Edge Torch kitaplığıyla dönüştürülmüş modeller .task dosyaları olur. Dönüştürülen modellerinizin dosya biçimlerini manuel olarak değiştirmeyin.

LLM Tahmini API'si üç model dönüşüm yolu içerir:

Önceden dönüştürülmüş modeller

Gemma-2 2B, Gemma 2B ve Gemma 7B modelleri, MediaPipe biçiminde önceden dönüştürülmüş modeller olarak kullanılabilir. Bu modeller, kullanıcıdan ek dönüşüm adımları gerektirmez ve LLM Tahmini API ile olduğu gibi çalıştırılabilir.

Gemma-2 2B modelini Kaggle Modelleri'nden indirebilirsiniz:

Gemma 2B'nin varyantlarını Kaggle Modelleri'nden indirebilirsiniz:

Gemma 7B'yi Kaggle Modelleri'nden indirebilirsiniz:

Gemma modelleri hakkında daha fazla bilgi için Gemma-22B, Gemma 2B ve Gemma 7B ile ilgili dokümanları inceleyin.

Desteklenen modeller için dönüşüm komut dosyası

MediaPipe paketi, aşağıdaki harici modelleri MediaPipe uyumlu bir biçime dönüştürmek için bir dönüşüm komut dosyası sunar:

Desteklenen harici modeller hakkında daha fazla bilgi için Falcon 1B, StableLM 3B ve Phi-2 ile ilgili dokümanlara bakın.

Model dönüştürme işlemi için MediaPipe PyPI paketi gerekir. Dönüşüm komut dosyası, 0.10.11 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 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çeneklerinin yanı sıra ek LoRA seçeneklerini de 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.

Parametre Açıklama Kabul edilen değerler
input_ckpt model.safetensors veya pytorch.bin dosyasının yolu. Bazen model safetensors biçiminin birden fazla dosyaya (ör. model-00001-of-00003.safetensors, model-00001-of-00003.safetensors) bölündüğünü unutmayın. model*.safetensors gibi bir dosya kalıbı belirtebilirsiniz. PATH
ckpt_format Model dosya 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 (temsilci). {"cpu", "gpu"}
output_dir Katman başına ağırlık dosyalarını barındıran çıkış dizininin yolu. 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 adaptör ağırlığını depolayan safetensors dosyasının LoRA ckpt yolunu belirtir. PATH
lora_rank LoRA ckpt'sinin sırasını temsil eden bir tam sayı. Lora ağırlıklarını dönüştürmek için gereklidir. Bu değer sağlanmazsa dönüştürücü, LoRA ağırlığı olmadığını varsayar. Not: LoRA yalnızca GPU arka ucunu destekler. Tamsayı
lora_output_tflite_file LoRA ağırlıkları için çıkış tflite dosya adı. PATH

PyTorch modelleri için Torch Üretken dönüştürücü

PyTorch üretken modelleri, AI Edge Torch Üretken API ile MediaPipe uyumlu bir biçime dönüştürülebilir. LLM Tahmini API ile kullanmak üzere PyTorch LLM'leri oluşturmak, dönüştürmek ve kesirli hale getirmek için API'yi kullanabilirsiniz. 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 makinesi gerektirir.

AI Edge Torch Üretken API ile bir PyTorch modelini dönüştürmek için aşağıdakiler gerekir:

  1. PyTorch model kontrol noktalarını indirme
  2. 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.
  3. tflite dosyasından ve model dize ayırıcısından bir Görev Paketi (.task) oluşturun.

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) gerekir.

Model birleştirme 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 özgü başlangıç jetonu. Başlangıç jetonu, sağlanan tokenleştirici modelinde bulunmalıdır. Dize
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üştürme işleminde kullanılan LoRA kontrol noktasıdır.

Bir sonraki adımda, MediaPipe Python paketini 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 modelle aynı generateResponse() veya generateResponseAsync() yöntemlerini kullanın.