LLM çıkarım rehberi

LLM Inference API, büyük dil modellerini (LLM'ler) tamamen cihaz üzerinde çalıştırmanıza olanak tanır. Bu modelleri kullanarak metin oluşturma, doğal dil biçiminde bilgi alma ve belgeleri özetleme gibi çeşitli görevleri gerçekleştirebilirsiniz. Bu görev, metinden metne büyük dil modelleri için yerleşik destek sunar. Böylece, cihaz üzerinde en yeni üretken yapay zeka modellerini uygulamalarınıza ve ürünlerinize uygulayabilirsiniz.

Deneyin!

Görev, çeşitli LLM'ler için yerleşik destek sunar. LiteRT Community sayfasında barındırılan modeller, MediaPipe dostu bir biçimde sunulur ve ek dönüştürme veya derleme adımları gerektirmez.

PyTorch modellerini, Görev Paketleri oluşturmak için belirteç oluşturucu parametreleriyle birlikte gelen çok imzalı LiteRT (tflite) modellerine 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 nedenle Android ve iOS uygulamaları için uygundur.

Başlayın

Hedef platformunuz için bu uygulama kılavuzlarından birini uygulayarak bu görevi kullanmaya başlayın. Platforma özel bu kılavuzlar, mevcut bir modeli ve önerilen yapılandırma seçeneklerini kullanan kod örnekleriyle bu görevin temel bir uygulamasını adım adım açıklar:

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:

  1. Metinden metne oluşturma: Giriş metni istemine 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 uygulayabilirsiniz.
  3. LoRA desteği: LoRA modeliyle LLM özelliğini genişletin ve özelleştirin. Bunun için tüm veri kümenizi kullanarak eğitim yapabilir veya açık kaynak topluluğundan hazır LoRA modellerini alabilirsiniz (AI Edge Torch Generative API ile dönüştürülen modellerle uyumlu değildir).
Görev girişleri Görev çıktıları
LLM Inference API aşağıdaki girişleri kabul eder:
  • Metin istemi (ör. soru, e-posta konusu, özetlenecek belge)
LLM Inference API aşağıdaki sonuçları verir:
  • Giriş istemine dayalı olarak oluşturulan metin (ör. soruya yanıt, e-posta taslağı, belgenin özeti)

Yapılandırma seçenekleri

Bu görevin 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ığı yerin yolu. 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ırlar. Tamsayı 40
temperature Oluşturma sırasında eklenen rastgelelik miktarı. Sıcaklık yükseldikçe oluşturulan metin daha yaratıcı olur. Sıcaklık düştükçe ise daha tahmin edilebilir bir metin oluşturulur. Kayan 0,8
randomSeed Metin oluşturma sırasında kullanılan rastgele başlangıç değeri. Tamsayı 0
loraPath LoRA modelinin cihazdaki yerel mutlak yolu. Not: Bu yalnızca GPU modelleriyle uyumludur. PATH Yok
resultListener Sonuçları eşzamansız olarak almak için sonuç dinleyicisini 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ılarda ve mobil cihazlarda çalışacak şekilde optimize edilmiş çeşitli modeller için yerleşik destek de dahil olmak üzere metinden metne birçok büyük dil modelini destekler. Bu hafif modeller, çıkarımları tamamen cihaz üzerinde çalıştırmak için kullanılabilir.

LLM Inference API'yi başlatmadan önce bir model indirin ve dosyayı proje dizininizde saklayın. LiteRT Community HuggingFace deposundan önceden dönüştürülmüş bir model kullanabilir veya AI Edge Torch Generative Converter ile bir modeli MediaPipe ile uyumlu bir biçime dönüştürebilirsiniz.

LLM Inference API ile kullanmak üzere bir LLM'niz yoksa aşağıdaki modellerden biriyle başlayın.

Gemma-3n

Gemma-3n E2B ve E4B, Gemini modellerini oluşturmak için kullanılan araştırma ve teknolojinin aynısıyla geliştirilen, hafif ve son teknoloji açık modellerden oluşan Gemma ailesinin en yeni modelleridir. Gemma 3n modelleri, kaynakları kısıtlı cihazlarda verimli bir şekilde çalışacak şekilde tasarlanmıştır. Bu modeller, metin, resim ve ses girişlerini işleyerek çok formatlı giriş yapabilir ve metin çıkışları oluşturabilir.

Gemma 3n modelleri, kaynak gereksinimlerini azaltmak için seçici parametre etkinleştirme teknolojisini kullanır. Bu teknik, modellerin 2 milyar ve 4 milyar parametre gibi etkili bir boyutta çalışmasına olanak tanır. Bu, modellerin içerdiği toplam parametre sayısından daha düşüktür.

Gemma-3n E2B'yi indirin

Gemma-3n E4B'yi indirin

HuggingFace'teki Gemma-3n E2B ve E4B modelleri .litertlm biçiminde sunulur ve Android ile Web için LLM Inference API ile kullanıma hazırdır.

Gemma-3 1B

Gemma-3 1B, Gemini modellerini oluşturmak için kullanılan araştırma ve teknolojiyle geliştirilen, hafif ve son teknoloji açık modellerden oluşan Gemma ailesinin en hafif modelidir. Model, 1 milyar parametre ve açık ağırlıklar içerir.

Gemma-3 1B'yi indirin

HuggingFace'in Gemma-3 1B modeli, .task/.litertlm biçiminde sunulur ve Android ile web uygulamaları için LLM Inference API ile 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 veya GPU arka uçlarından birini seçmek için bu seçeneği kullanın. Bu seçenek yalnızca Android'de kullanılabilir.
  • supportedLoraRanks: LLM Inference API, Gemma-3 1B modeliyle Low-Rank Adaptation (LoRA) destekleyecek şekilde yapılandırılamaz. supportedLoraRanks veya loraRanks seçeneklerini kullanmayın.
  • maxTokens: maxTokens değeri, modele yerleştirilmiş bağlam boyutuyla eşleşmelidir. Bu, anahtar/değer çifti (KV) önbelleği veya bağlam uzunluğu olarak da adlandırılabilir.
  • 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ılırken başlatma işlemi, mevcut iş parçacığında uzun bir blokaj oluşturabilir. Mümkünse modeli her zaman bir çalışan iş parçacığından çalıştırın.

Gemma-2 2B

Gemma-2 2B, Gemma-2'nin 2B varyantıdır ve tüm platformlarda çalışır.

Gemma-2 2B'yi indirin

Model, 2B parametreler ve açık ağırlıklar içerir. Gemma-2 2B, sınıfındaki modeller için en iyi akıl yürütme becerileriyle bilinir.

PyTorch model dönüşümü

PyTorch üretken modelleri, AI Edge Torch Generative API ile MediaPipe uyumlu bir biçime dönüştürülebilir. API'yi kullanarak PyTorch modellerini çok imzalı LiteRT (TensorFlow Lite) modellerine dönüştürebilirsiniz. Modelleri eşleme ve dışa aktarma hakkında daha fazla bilgi için AI Edge Torch GitHub sayfasını ziyaret edin.

AI Edge Torch Generative API ile PyTorch modelini dönüştürmek için aşağıdaki adımlar uygulanır:

  1. PyTorch modeli kontrol noktalarını indirin.
  2. Modeli MediaPipe ile uyumlu bir dosya biçimine (.tflite) yazmak, dönüştürmek ve nicemlemek için AI Edge Torch Generative API'yi kullanın.
  3. tflite dosyasından ve model belirteçleştiriciden görev paketi (.task/.litertlm) 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 makinesi gerektirir.

Görev paketi oluşturmak için bundling script'i kullanarak görev paketi oluşturun. Paketleme işlemi, eşlenen modeli ek meta verilerle (ör. Uçtan uca çıkarım çalıştırmak için gereken Tokenizer parametreleri.

Model paketleme işlemi için MediaPipe PyPI paketi gerekir. Dönüşüm komut dosyası, 0.10.14 tarihinden sonraki tüm MediaPipe paketlerinde kullanılabilir.

Bağımlılıkları aşağıdaki komutlarla yükleyin ve 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'de dışa aktarılan TFLite modelinin yolu. PATH
tokenizer_model SentencePiece belirteç oluşturucu modelinin yolu. PATH
start_token Modele özgü başlangıç jetonu. Başlangıç jetonu, sağlanan belirteç oluşturucu modelinde bulunmalıdır. DİZE
stop_tokens Modele özel durdurma jetonları. Durdurma jetonları, sağlanan belirteçleştirici modelinde bulunmalıdır. LIST[STRING]
output_filename Çıkış görev paketi dosyasının adı. PATH

LoRA özelleştirme

Mediapipe LLM Inference API, büyük dil modelleri için Low-Rank Adaptation (LoRA) desteği sunacak şekilde yapılandırılabilir. Geliştiriciler, ince ayarlı LoRA modellerini kullanarak büyük dil modellerinin davranışını uygun maliyetli bir eğitim süreciyle özelleştirebilir.

LLM Inference API'nin 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ı için geçerlidir. Bu ilk uygulama, gelecekteki geliştirmeler için deneysel bir API olarak hizmet vermektedir. Gelecek güncellemelerde daha fazla modeli ve çeşitli katman türlerini desteklemeyi planlıyoruz.

LoRA modellerini hazırlama

Desteklenen model türleri (Gemma veya Phi-2) ile kendi veri kümenizde ince ayarlı bir LoRA modeli eğitmek için HuggingFace'teki talimatları uygulayın. Gemma-2 2B, Gemma 2B ve Phi-2 modelleri, HuggingFace'te 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'te LLMInference API'ye uygun, herkese açık erişilebilen ince ayarlı LoRA modelleri vardır. Örneğin, Gemma-2B için monsterapi/gemma-2b-lora-maths-orca-200k, Phi-2 için ise lole25/phi-2-sft-ultrachat-lora.

Hazırlanan veri kümesi üzerinde eğitim yapıp modeli kaydettikten sonra, ince ayarlı LoRA modeli ağırlıklarını içeren bir adapter_model.safetensors dosyası elde edersiniz. Safetensors dosyası, model dönüştürmede kullanılan LoRA kontrol noktasıdır.

Bir sonraki adım olarak, model ağırlıklarını MediaPipe Python paketini kullanarak TensorFlow Lite Flatbuffer'a dönüştürmeniz gerekir. ConversionConfig, temel model seçeneklerinin yanı sıra ek LoRA seçeneklerini de belirtmelidir. API yalnızca GPU ile LoRA çıkarımını desteklediğinden arka ucun 'gpu' olarak ayarlanması gerektiğini unutmayın.

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'si, LoRA modeli çıkarımını destekleyecek şekilde güncellendi.

Android, başlatma sırasında statik LoRA'yı destekler. LoRA modelini yüklemek için kullanıcılar, LoRA model yolunu ve temel LLM'yi 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.