Transformers documentation

İşleyiciler

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

İşleyiciler

Çok modlu modeller, birden fazla modaliteyi birleştiren girdileri işleyebilecek bir ön işleyici gerektirir. Girdi modalitesine bağlı olarak, bir işleyicinin metni tensör dizisine, görüntüleri piksel değerlerine ve sesleri doğru örneklem hızına sahip tensör dizisine dönüştürmesi gerekir.

Örneğin, PaliGemma, SigLIP görüntü işleyicisini ve Llama belirteçleyicisini kullanan bir görme-dil modelidir. ProcessorMixin sınıfı, bu iki ön işleyici türünü sarar ve çok modlu bir model için tek ve birleşik bir işleyici sınıfı sağlar.

İşleyiciyi yüklemek için from_pretrained() çağrın. İşleyiciye girdi türünü geçirerek beklenen model girdilerini, girdi kimliklerini ve piksel değerlerini üretin.

from transformers import AutoProcessor, PaliGemmaForConditionalGeneration
from PIL import Image
import requests

processor = AutoProcessor.from_pretrained("google/paligemma-3b-pt-224")

prompt = "answer en Where is the cat standing?"
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
image = Image.open(requests.get(url, stream=True).raw)

inputs = processor(text=prompt, images=image, return_tensors="pt")
inputs

Bu kılavuz, işlemci sınıfını ve çok modlu girdilerin nasıl ön işleneceğini açıklar.

İşleyici sınıfları

Tüm işlemciler, Hub'a işlemci yükleme, kaydetme ve paylaşma için from_pretrained(), save_pretrained() ve push_to_hub() gibi yöntemler sağlayan ProcessorMixin sınıfından devralır.

İşleyiciyi yüklemenin iki yolu vardır: AutoProcessor ile ve modele özgü işleyici sınıfı ile.

AutoProcessor
model-özel işlemci

AutoClass API'si, ilgili model sınıfını doğrudan belirtmeden işlemcileri yüklemek için basit bir arayüz sunar.

Bir işlemci yüklemek için from_pretrained() kullanın.

from transformers import AutoProcessor

processor = AutoProcessor.from_pretrained("google/paligemma-3b-pt-224")

İşleyiciyi kaydetme ve yükleme

save_pretrained(), işleyicinin yapılandırmasını tek bir processor_config.json dosyasına yazar. Sözcük ayrıştırıcı ve sohbet şablonu kendi dosyalarında saklanır.

from transformers import AutoProcessor

processor = AutoProcessor.from_pretrained("llava-hf/llava-onevision-qwen2-0.5b-ov-hf")
processor.save_pretrained("./llava-onevision")
llava-onevision/
├── chat_template.jinja
├── processor_config.json
├── tokenizer.json
└── tokenizer_config.json

Tokenizer hariç her alt-işleyici, image_processor, video_processor veya feature_extractor gibi kendi öznitelik adının altında, processor_config.json içinde iç içe yer alır. İşleyicinin kendisine ait ayarlar, örneğin image_token, üst düzeyde bulunur. Aşağıdaki örnek kısaltılmıştır.

{
  "image_processor": {
    "image_processor_type": "LlavaOnevisionImageProcessor",
    "do_resize": true,
    "size": {"height": 384, "width": 384},
    "image_mean": [0.5, 0.5, 0.5]
  },
  "image_token": "<image>",
  "processor_class": "LlavaOnevisionProcessor",
  "video_processor": {
    "video_processor_type": "LlavaOnevisionVideoProcessor",
    "do_resize": true,
    "size": {"height": 384, "width": 384},
    "image_mean": [0.5, 0.5, 0.5]
  },
  "video_token": "<video>"
}

Diğer dosyalar ayrı olarak kaydedilir.

  • Tokenizer, tokenizer.json ve tokenizer_config.json gibi standart dosyalarını yazar. İşleyicinin (processor) ikinci bir tokenizer'ı varsa, bu, örneğin decoder_tokenizer/ gibi, ilgili özniteliğinin adıyla adlandırılmış bir alt klasörde saklanır.
  • Sohbet şablonu chat_template.jinja dosyasına kaydedilir. Bir işlemcinin birden çok sohbet şablonu varsa, default şablonu chat_template.jinja dosyasına, diğerleri ise chat_templates/ klasörüne yerleştirilir.

Bir işlemciyi from_pretrained() ile yüklediğinizde, her alt işlemci önce processor_config.json içindeki iç içe anahtarını arar. Anahtar orada yoksa bağımsız bir dosyaya geri döner. Görüntü işlemcileri ve özellik çıkarıcılar preprocessor_config.json dosyasını okur, video işlemciler ise video_preprocessor_config.json ve ardından preprocessor_config.json dosyalarını okur. Her alt işlemciyi kendi dosyasında saklayan eski denetim noktaları da bu şekilde yüklenmeye devam eder.

İç içe yapılandırma, bağımsız dosyaya göre önceliklidir. Bir kontrol noktasında her ikisi de varsa, preprocessor_config.json veya video_preprocessor_config.json dosyalarını düzenlemenin bir etkisi olmaz. Bunun yerine processor_config.json içindeki iç içe girmiş girdiyi düzenleyin.

Ön işleme

Processors, çok modlu girdileri Transformers'in beklediği formata dönüştürmek için ön işleme yapar. Bir processor'un işleyebileceği girdi modalitelerinin birkaç kombinasyonu vardır; örneğin metin ve ses ya da metin ve görüntü.

Otomatik konuşma tanıma (ASR) görevleri, metin ve ses girdilerini işleyebilen bir işlemci gerektirir. Bir veri seti yükleyin ve audio ile text sütunlarını inceleyin (gerekli olmayan diğer sütunları kaldırabilirsiniz).

from datasets import load_dataset

dataset = load_dataset("keithito/lj_speech", split="train")
dataset = dataset.map(remove_columns=["file", "id", "normalized_text"])
dataset[0]["audio"]
{'array': array([-7.3242188e-04, -7.6293945e-04, -6.4086914e-04, ...,
         7.3242188e-04,  2.1362305e-04,  6.1035156e-05], dtype=float32),
 'path': '/root/.cache/huggingface/datasets/downloads/extracted/917ece08c95cf0c4115e45294e3cd0dee724a1165b7fc11798369308a465bd26/LJSpeech-1.1/wavs/LJ001-0001.wav',
 'sampling_rate': 22050}

dataset[0]["text"]
'Printing, in the only sense with which we are at present concerned, differs from most if not from all the arts and crafts represented in the Exhibition'

Ön eğitilmiş modellerin gerektirdiği örneklem hızıyla eşleşmesi için örneklem hızını yeniden örneklemeyi unutmayın.

from datasets import Audio

dataset = dataset.cast_column("audio", Audio(sampling_rate=16000))

Bir işlemci yükleyin ve array ile text sütunlarını ona iletin.

from transformers import AutoProcessor

processor = AutoProcessor.from_pretrained("openai/whisper-tiny")

def prepare_dataset(example):
    audio = example["audio"]
    example.update(processor(audio=audio["array"], text=example["text"], sampling_rate=16000))
    return example

Veri setini ön işlemek için prepare_dataset fonksiyonunu uygulayın. İşleyici, audio sütunu için input_features ve metin sütunu için labels döndürür.

prepare_dataset(dataset[0])
Update on GitHub