Transformers documentation
LLaVa-NeXT-Video
Bu model 2024-05-31 tarihinde HF papers'ta yayımlandı ve 2024-06-26 tarihinde Hugging Face Transformers'a katkıda bulunuldu.
LLaVa-NeXT-Video
Genel Bakış
LLaVa-NeXT-Video modeli, Yuanhan Zhang, Bo Li, Haotian Liu, Yong Jae Lee, Liangke Gui, Di Fu, Jiashi Feng, Ziwei Liu ve Chunyuan Li tarafından LLaVA-NeXT: A Strong Zero-shot Video Understanding Model makalesinde önerilmiştir. LLaVa-NeXT-Video, video ve görüntü veri setlerinin karışımı üzerinde ince ayar (fine-tuning) yaparak LLaVa-NeXT'in üzerine inşa edilmiş olup modelin video üzerindeki performansını artırmaktadır.
LLaVA-NeXT, kullandığı AnyRes tekniği sayesinde video içeriğini sıfır atış (zero-shot) olarak anlama konusunda şaşırtıcı derecede güçlü bir performans sergilemektedir. AnyRes tekniği, yüksek çözünürlüklü bir görüntüyü doğal olarak birden fazla görüntüye dönüştürür. Videolar, LLaVa-NeXT'teki görüntü setine benzer şekilde bir kareler seti olarak düşünülebileceğinden, bu teknik videoları temsil etmek için doğal olarak genellenebilir. LLaVA-NeXT'in mevcut sürümü, video verisi üzerinde LLaVA-Next'in üzerine denetimli ince ayar (SFT) uygulayarak AnyRes'ten faydalanır ve daha iyi video anlama yetenekleri elde eder. Model, VideoMME bench üzerinde açık kaynaklı modeller arasında güncel SOTA'dır.
Blogdan gelen giriş aşağıdaki gibidir:
30 Ocak 2024'te, yalnızca metin-görsel verileri üzerinde eğitilmiş, açık kaynaklı Büyük Çok Modlu Model (LMM) olan LLaVA-NeXT'i yayımladık. Önerilen AnyRes tekniği sayesinde akıl yürütme, OCR ve dünya bilgisi yeteneklerini artırarak, görsel tabanlı çok modlu anlama görevlerinin geniş bir yelpazesinde olağanüstü performans sergilemekte ve MMMU ile MathVista gibi bazı görsel kıyaslamalarda Gemini-Pro'yu dahi geride bırakmaktadır.
**Bugünkü incelemede, LLaVA-NeXT'in video anlama görevlerindeki performansını ele alıyoruz. LLaVA-NeXT'in video içeriğini anlama konusunda şaşırtıcı derecede güçlü bir performansa sahip olduğunu ortaya koyuyoruz. Videolar için mevcut LLaVA-NeXT sürümünde birkaç iyileştirme bulunuyor:**
- AnyRes ile sıfır atışlı video temsil yetenekleri: AnyRes tekniği, yüksek çözünürlüklü bir görüntüyü, önceden eğitilmiş bir VIT'in işleyebileceği birden fazla görüntüye doğal olarak temsil eder ve bunları birleştirilmiş bir dizi oluşturacak şekilde düzenler. Bu teknik, videoları (birden fazla kareden oluşan) temsil etmeye doğal olarak genellenebilir ve yalnızca görüntülerle eğitilmiş LLaVA-Next modelinin video görevlerinde şaşırtıcı derecede iyi performans göstermesine olanak tanır. Önemle belirtmek gerekir ki, bu, LMM'lerin güçlü sıfır atışlı modallı aktarım yeteneğini gösterdiği ilk örnektir.
- Uzunluk genellemesi ile çıkarım, daha uzun videolarda iyileşme sağlar. Doğrusal ölçeklendirme tekniği, uzunluk genellemesini mümkün kılarak LLaVA-NeXT'in, LLM'nin “max_token_length” sınırının ötesindeki uzun videoları etkili bir şekilde işlemesini sağlar.
- Güçlü video anlama yeteneği. (1) Yukarıdaki iki tekniği birleştiren LLaVA-Next-Image, video üzerinde eğitilmiş açık kaynaklı LMM'lere kıyasla üstün sıfır atış (zero-shot) performansı sağlar. (2) Video verisi üzerinde LLaVA-Next-Image'i daha fazla denetimli ince ayar (SFT) ile eğiten LLaVA-Next-Video, LLaVA-Next-Image'e kıyasla daha iyi video anlama yeteneklerine ulaşır. (3) Doğrudan tercih optimizasyonu (DPO) kullanarak model yanıtını yapay zekâ geri bildirimine hizalayan LLaVA-Next-Video-DPO, önemli bir performans artışı gösterir.
- SGLang ile verimli dağıtım ve çıkarım. Video görevlerinde 5 kat daha hızlı çıkarım yapmanızı sağlayarak, milyon seviyesinde video yeniden başlıklandırma gibi daha ölçeklenebilir sunum olanakları sunar. Talimatlar için lütfen deponuza göz atın.**
Bu model RaushanTurganbay tarafından katkıda bulunmuştur. Orijinal kod burada bulunabilir.
Kullanım ipuçları
- Toplu üretim hesaplama yaparken daha doğru sonuçlar elde edilebilmesi için kullanıcılara
padding_side="left"kullanmalarını öneririz. Üretimden önceprocessor.tokenizer.padding_side = "left"çağrısını yaptığınızdan emin olun.
- Llava-Next, görüntüler için farklı sayıda yama (patch) kullandığından, girdilerin işlenmesi sırasında yapılan dolgudan (padding) ayrı olarak, modelleme kodunun içinde girdileri doldurmak (pad) zorundadır. Model
eval()modundaysa varsayılan ayar “left-padding” (sol dolgu), aksi halde “right-padding” (sağ dolgu) şeklindedir.
v4.46 sürümünden sonra yayınlanan LLaVA modelleri,
processor.patch_size = {{patch_size}},processor.num_additional_image_tokens = {{num_additional_image_tokens}}veprocessor.vision_feature_select_strategy = {{vision_feature_select_strategy}}eklenmesiyle ilgili uyarılar verecektir. Model checkpoint'ine sahipseniz bu öznitelikleri işlemciye (processor) eklemeniz, sahip değilseniz bir PR açmanız şiddetle tavsiye edilir. Bu öznitelikleri eklemek, LLaVA'nın her görsel için gereken görsel token sayısını tahmin etmeye çalışacağı ve token sayısı kadar<image>yer tutucusuyla metni genişleteceği anlamına gelir. Genellikle görsel başına yaklaşık 500 token kullanılır; bu nedenle metnin kısaltılmadığından emin olun, aksi halde gömme (embedding) birleştirme sırasında hata oluşacaktır. Öznitelikler,model.config.vision_config.patch_sizeveyamodel.config.vision_feature_select_strategyolarak model yapılandırmasından (config) elde edilebilir. Görüntü iskeleti (vision backbone) bir CLS token ekliyorsanum_additional_image_tokensdeğeri1, görsel yamalarına (vision patches) ek olarak hiçbir şey eklenmiyorsa0olmalıdır.
Chat Şablonlarıyla İstemleri Biçimlendirme
Her checkpoint, altta yatan büyük dil modeli omurgasına bağlı olarak belirli bir istem biçimiyle eğitilir. Doğru biçimlendirmeyi sağlamak için işleyicinin apply_chat_template yöntemini kullanın.
Önemli:
- Bir sohbet geçmişi oluşturmanız gerekir — düz bir dize geçirmek işe yaramaz.
- Her mesaj,
"role"ve"content"anahtarlarına sahip bir sözlük olmalıdır. "content","text"ve"image"gibi farklı modaliteler için sözlüklerden oluşan bir liste olmalıdır.
Girdinizi nasıl yapılandıracağınızın bir örneği aşağıda verilmiştir. LLaVA-NeXT-Video-7B-hf modelini ve video ile görsellerden oluşan bir sohbet geçmişini kullanacağız.
from transformers import LlavaNextVideoProcessor
processor = LlavaNextVideoProcessor.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf")
conversation = [
{
"role": "system",
"content": [
{"type": "text", "text": "A chat between a curious human and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the human's questions."},
],
},
{
"role": "user",
"content": [
{"type": "text", "text": "What’s shown in this image?"},
{"type": "image"},
],
},
{
"role": "assistant",
"content": [{"type": "text", "text": "This image shows a red stop sign."},]
},
{
"role": "user",
"content": [
{"type": "text", "text": "Why is this video funny?"},
{"type": "video"},
],
},
]
text_prompt = processor.apply_chat_template(conversation, add_generation_prompt=True)
# Note that the template simply formats your prompt, you still have to tokenize it and obtain pixel values for your visuals
print(text_prompt)🚀 Bonus: transformers>=4.49.0 kullanıyorsanız, apply_chat_template ile vektörleştirilmiş çıktı da alabilirsiniz. Kullanımına dair ayrıntılar için aşağıdaki Kullanım Örnekleri bölümüne bakın.
Kullanım örneği
Tekli Medya Modu
Model, hem görüntü hem de video girdilerini kabul edebilir. Yarım hassasiyetli (torch.float16) çıkarım için örnek kod aşağıdadır:
from huggingface_hub import hf_hub_download
from transformers import LlavaNextVideoForConditionalGeneration, LlavaNextVideoProcessor
# Load the model in half-precision
model = LlavaNextVideoForConditionalGeneration.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf", device_map="auto")
processor = LlavaNextVideoProcessor.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf")
# Load the video as an np.array, sampling uniformly 8 frames (can sample more for longer videos)
video_path = hf_hub_download(repo_id="raushan-testing-hf/videos-test", filename="sample_demo_1.mp4", repo_type="dataset")
conversation = [
{
"role": "user",
"content": [
{"type": "text", "text": "Why is this video funny?"},
{"type": "video", "path": video_path},
],
},
]
inputs = processor.apply_chat_template(conversation, num_frames=8, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=60)
processor.batch_decode(out, skip_special_tokens=True, clean_up_tokenization_spaces=True)Karışık Medya Modu
Model, iç içe geçmiş görüntü-video girdilerinden de üretim yapabilir. Ancak dikkat edin, model iç içe geçmiş görüntü-video ortamında eğitilmediğinden bu durum performansı etkileyebilir. Aşağıda karma medya girdisi için bir kullanım örneği verilmiştir; yukarıdaki kod parçasına şu satırları ekleyin:
# Generate from image and video mixed inputs
conversation = [
{
"role": "user",
"content": [
{"type": "text", "text": "How many cats are there in the image?"},
{"type": "image", "url": "http://images.cocodataset.org/val2017/000000039769.jpg"},
],
},
{
"role": "assistant",
"content": [{"type": "text", "text": "There are two cats"}],
},
{
"role": "user",
"content": [
{"type": "text", "text": "Why is this video funny?"},
{"type": "video", "path": video_path},
],
},
]
inputs = processor.apply_chat_template(conversation, num_frames=8, add_generation_prompt=True, tokenize=True, return_dict=True, padding=True, return_tensors="pt").to(model.device)
# Generate
generate_ids = model.generate(**inputs, max_length=50)
processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True)
Model optimizasyonu
Bellek verimliliği için Bitsandbytes ile kuantizasyon
Model, daha düşük bit derinliğinde yüklenebilir; bu, orijinal modelin performansını korurken bellek yükünü önemli ölçüde azaltır. Bu sayede kaynak kısıtlı senaryolarda verimli bir şekilde dağıtım yapılabilir.
Öncelikle pip install bitsandbytes komutunu çalıştırarak bitsandbytes'ı yüklediğinizden ve kütüphanenin desteklediği bir GPU/ivmeciye erişiminiz olduğundan emin olun.
bitsandbytes, CUDA dışında birden çok arka ucu destekleyecek şekilde yeniden yapılandırılmaktadır. Şu anda ROCm (AMD GPU) ve Intel CPU uygulamaları olgunlaşmış durumdadır; Intel XPU üzerinde çalışmalar devam etmekte olup Apple Silicon desteğinin Q4/Q1 döneminde sunulması beklenmektedir. Kurulum talimatları ve en güncel arka uç güncellemeleri için bu bağlantıya gidin.
Tam sürüm öncesinde hataları tespit etmemize yardımcı olmak için geri bildirimlerinizi önemsiyoruz! Daha fazla ayrıntı ve geri bildirim bağlantıları için bu belgelere göz atın.
Ardından aşağıda gösterildiği gibi BitsAndBytesConfig ekleyerek kuantize edilmiş modeli yükleyin:
from transformers import LlavaNextVideoForConditionalGeneration
# specify how to quantize the model
quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.float16,
)
model = LlavaNextVideoForConditionalGeneration.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf", quantization_config=quantization_config, device_map="auto")Üretim hızını artırmak için Flash-Attention 2
Ayrıca, model içinde kullanılan dikkat mekanizmasının daha hızlı bir uygulaması olan Flash Attention kullanarak model çıkarımını büyük ölçüde hızlandırabiliriz.
Öncelikle, Flash Attention 2'nin en son sürümünün yüklendiğinden emin olun:
pip install -U flash-attn --no-build-isolation
Ayrıca, Flash-Attention 2 ile uyumlu bir donanıma sahip olmanız gerekir. flash attention deposu resmi dokümantasyonunda bu konuda daha fazla bilgi edinebilirsiniz. FlashAttention-2 yalnızca bir model torch.float16 veya torch.bfloat16 olarak yüklendiğinde kullanılabilir.
Flash Attention-2 kullanarak bir model yüklemek ve çalıştırmak için, modeli aşağıdaki gibi yüklerken attn_implementation="flash_attention_2" parametresini eklemeniz yeterlidir:
from transformers import LlavaNextVideoForConditionalGeneration
model = LlavaNextVideoForConditionalGeneration.from_pretrained(
"llava-hf/LLaVA-NeXT-Video-7B-hf", ,
attn_implementation="flash_attention_2",
).to(0, device_map="auto")LlavaNextVideoConfig
sınıf transformers.LlavaNextVideoConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevision_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonetext_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneimage_token_index: int = 32001video_token_index: int = 32000projector_hidden_act: str = 'gelu'vision_feature_select_strategy: typing.Literal['default', 'full'] = 'default'vision_feature_layer: int | list[int] = -2multimodal_projector_bias: bool = Truetie_word_embeddings: bool = Falseimage_grid_pinpoints: list | None = Nonespatial_pool_mode: str = 'average'spatial_pool_stride: int = 2image_seq_length: int = 576video_seq_length: int = 288 )
Parametreler
- vision_config (
Union[dict, ~configuration_utils.PreTrainedConfig], isteğe bağlı) — Görüntü omurgasının yapılandırma nesnesi veya sözlüğü. - text_config (
Union[dict, ~configuration_utils.PreTrainedConfig], isteğe bağlı) — Metin omurgasının yapılandırma nesnesi veya sözlüğü. - image_token_index (
int, isteğe bağlı, varsayılan32001) — Girdi görselleri için yer tutucu olarak kullanılan görsel jeton indeksi. - video_token_index (
int, isteğe bağlı, varsayılan32000) — Girdi videoları için yer tutucu olarak kullanılan video token indeksi. - projector_hidden_act (
str, isteğe bağlı, varsayılangelu) — Çok modlu projeksiyoncu tarafından kullanılan aktivasyon fonksiyonu. - vision_feature_select_strategy (
Literal[default, full], isteğe bağlı, varsayılandefault) — Görüntü omurgasından (vision backbone) görüntü özelliğini seçmek için kullanılan özellik seçme stratejisi. - vision_feature_layer (
Union[int, list[int]], isteğe bağlı, varsayılan-2) — Görüntü özelliğinin seçileceği katmanın indeksi. Birden fazla indeks sağlanırsa, ilgili indekslere karşılık gelen görüntü özellikleri birleştirilerek görüntü özellikleri oluşturulur. - multimodal_projector_bias (
bool, isteğe bağlı, varsayılanTrue) — Multimodal projeksiyonda bias kullanılıp kullanılmayacağı. - tie_word_embeddings (
bool, isteğe bağlı, varsayılanFalse) — Modelintied_weights_keyseşlemesine göre ağırlık gömme bağlamalarının yapılıp yapılmayacağı. - image_grid_pinpoints (
List, optional, defaults to[[336, 672], [672, 336], [672, 672], [1008, 336], [336, 1008]]) — A list of possible resolutions to use for processing high resolution images. Each item in the list should be a tuple or list of the form(height, width). - spatial_pool_mode (
str, isteğe bağlı, varsayılan"average") — Videolar için kullanılacak havuzlama modu. “average”, “max” veya “conv” olabilir. - spatial_pool_stride (
int, isteğe bağlı, varsayılan 2) — Videolar için havuzlama katmanında kullanılan adım. - image_seq_length (
int, isteğe bağlı, varsayılan576) — Tek bir gömme için dizi uzunluğu. - video_seq_length (
int, isteğe bağlı, varsayılan288) — Tek bir video gömme dizisinin uzunluğu.
Bu, bir LlavaNextVideoModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Llava Next Video modelinin örneklenmesinde, model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneklendiğinde, llava-hf/LLaVA-NeXT-Video-7B-hf modelinin yapılandırmasına benzer bir yapılandırma elde edilir.
Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.
Örnek:
>>> from transformers import LlavaNextVideoForConditionalGeneration, LlavaNextVideoConfig, CLIPVisionConfig, LlamaConfig
>>> # Initializing a CLIP-vision config
>>> vision_config = CLIPVisionConfig()
>>> # Initializing a Llama config
>>> text_config = LlamaConfig()
>>> configuration = LlavaNextVideoConfig(vision_config, text_config)
>>> model = LlavaNextVideoForConditionalGeneration(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configLlavaNextVideoProcessor
sınıf transformers.LlavaNextVideoProcessor
< source >( video_processor = Noneimage_processor = Nonetokenizer = Nonechat_template = Nonepatch_size = Nonevision_feature_select_strategy = Nonevideo_token = '<video>'image_token = '<image>'num_additional_image_tokens = 0**kwargs )
Parametreler
- video_processor (
LlavaNextVideoVideoProcessor) — Video işleyici zorunlu bir girdidir. - image_processor (
LlavaNextImageProcessor) — Görsel işleyici zorunlu bir girdidir. - tokenizer (
tokenizer_class) — Tokenizer zorunlu bir girdidir. - chat_template (
str) — Bir sohbet içindeki mesaj listelerini tokenize edilebilir bir dizeye dönüştürmek için kullanılan bir Jinja şablonu. - patch_size (
int, isteğe bağlı) — Görüntü kulesinden gelen yama boyutu. - vision_feature_select_strategy (
str, isteğe bağlı) — Görüntü omurgasından (vision backbone) görüntü özelliğini seçmek için kullanılan özellik seçme stratejisi. Modelin yapılandırmasıyla aynı olmalıdır. - video_token (
str, isteğe bağlı, varsayılan"<video>") — Video konumunu belirtmek için kullanılan özel token. - image_token (
str, isteğe bağlı, varsayılan"<image>") — Görsel konumunu belirtmek için kullanılan özel jeton. - num_additional_image_tokens (
int, isteğe bağlı, varsayılan 0) — Görsel gömme (embedding) verilerine eklenen ek token sayısı, örneğin CLS (+1). Omurga (backbone) ağında CLS veya başka ek token'lar eklenmiyorsa bu argümanı ayarlamanıza gerek yoktur.
Bir video işleyiciyi, bir görüntü işleyiciyi ve bir belirteçleyiciyi tek bir işleyicide birleştiren bir LlavaNextVideoProcessor oluşturur.
LlavaNextVideoProcessor, LlavaNextVideoVideoProcessor, LlavaNextImageProcessor ve tokenizer_class sınıflarının tüm işlevlerini sunar. Daha fazla bilgi için ~LlavaNextVideoVideoProcessor, ~LlavaNextImageProcessor ve ~tokenizer_class belgelerine bakın.
LlavaNextVideoVideoProcessor
sınıf transformers.LlavaNextVideoVideoProcessor
< source >( **kwargs: *<class 'transformers.processing_utils.VideosKwargs'> )
Parametreler
- do_convert_rgb (
bool, kwargs, opsiyonel, varsayılanTrue) — Görselin RGB'ye dönüştürülüp dönüştürülmemesi. - do_resize (
bool, kwargs, isteğe bağlı, varsayılanTrue) — Görselin yeniden boyutlandırılıp boyutlandırılmayacağı. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, varsayılan{'shortest_edge' -- 224}): Modelin kabul ettiği maksimum giriş boyutlarını açıklar. - default_to_square (
bool, kwargs, isteğe bağlı, varsayılanFalse) — size bir int ise, yeniden boyutlandırma sırasında varsayılan olarak kare bir görüntü kullanılıp kullanılmayacağı. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, varsayılan3) — Görsel yeniden boyutlandırılıyorsa kullanılacak yeniden örnekleme filtresi. Bu,PILImageResamplingenum değerlerinden biri olabilir. Yalnızcado_resizeTrueolarak ayarlanırsa etkilidir. - do_rescale (
bool, kwargs, isteğe bağlı, varsayılanTrue) — Görselin yeniden ölçeklendirilip ölçeklendirilmeyeceği. - rescale_factor (
float, kwargs, opsiyonel, varsayılan0.00392156862745098) —do_rescaleTrueolarak ayarlandığında görüntüyü yeniden ölçeklemek için kullanılan yeniden ölçekleme faktörü. - do_normalize (
bool, kwargs, opsiyonel, varsayılanTrue) — Görselin normalize edilip edilmeyeceği. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opsiyonel, varsayılan[0.48145466, 0.4578275, 0.40821073]) — Normalizasyon için kullanılacak görüntü ortalaması. Yalnızcado_normalizeTrueolarak ayarlanırsa etkilidir. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opsiyonel, varsayılan[0.26862954, 0.26130258, 0.27577711]) — Normalizasyon için kullanılacak görüntü standart sapması. Yalnızcado_normalizeTrueolarak ayarlanırsa etkilidir. - do_center_crop (
bool, kwargs, opsiyonel, varsayılanTrue) — Görselin ortadan kırpılıp kırpılmayacağı. - do_pad (
bool, kwargs, opsiyonel) — Görselin dolgu (padding) uygulanıp uygulanmayacağı. Dolgu, partideki en büyük boyuta veya görsel başına sabit kare bir boyuta yapılır. Kesin dolgu stratejisi modele bağlıdır. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, varsayılan{'height' -- 224, 'width': 224}):center_cropuygulandıktan sonra çıktı görüntüsünün boyutu. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, isteğe bağlı) — YalnızcaChannelDimension.FIRSTdesteklenir. Yavaş işleyicilerle uyumluluk için eklendi. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, isteğe bağlı) — Girdi görüntüsü için kanal boyutu biçimi. Ayarlanmazsa, kanal boyutu biçimi girdi görüntüsünden çıkarılır. Aşağıdakilerden biri olabilir:"channels_first"veyaChannelDimension.FIRST: (num_channels, height, width) biçiminde görüntü."channels_last"veyaChannelDimension.LAST: (yükseklik, genişlik, kanal sayısı) biçiminde görüntü."none"veyaChannelDimension.NONE: (height, width) biçiminde görüntü.
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Videoların işleneceği cihaz. Ayarlanmamışsa, cihaz girdi videolarından çıkarılır. - do_sample_frames (
bool, kwargs, opsiyonel, varsayılanFalse) — İşlemden önce videodan kare örneklenip örneklenmeyeceği veya videonun tamamının işleneceği. - video_metadata (
Annotated[~video_utils.VideoMetadata | dict | list[dict | ~video_utils.VideoMetadata] | list[list[dict | ~video_utils.VideoMetadata]] | None, None], kwargs) — Toplam süre, fps ve toplam kare sayısı hakkında bilgi içeren videonun metadata'sı. Videodan kare örneklemek veya zaman damgaları hesaplamak için kullanılacaktır. Videoyu işlemden önce manuel olarak çözmeye çalışmıyorsanız herhangi bir metadata geçirmeyin - fps (
Annotated[int | float | None, None], kwargs) —do_sample_frames=Trueolduğunda saniyede örneklenmesi hedeflenen kare sayısı. - num_frames (
Annotated[int | None, None], kwargs) —do_sample_frames=Trueolduğunda örneklenmesi gereken maksimum kare sayısı. - return_metadata (
bool, kwargs, opsiyonel, varsayılanFalse) — Video meta verilerinin döndürülüp döndürülmeyeceğini belirtir. Video meta verileri, video süresi, fps, çözümleme arka ucu gibi bilgileri içeren bir nesnedir. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Belirtilirse, belirli bir çerçeveye ait tensörler döndürülür. Kabul edilen değerler şunlardır:'pt': PyTorchtorch.Tensornesnelerini döndürür.'np': NumPynp.ndarraynesnelerini döndürür.
- **kwargs (VideosKwargs, opsiyonel) — Her modalite (metin, görüntüler, videolar, ses) için ek işleme seçenekleri. Modelle ilgili parametreler yukarıda listelenmiştir; desteklenen argümanların tam listesi için TypedDict sınıfına bakın.
LlavaNextVideoVideoProcessor video işleyicisi oluşturur.
LlavaNextVideoModel
sınıf transformers.LlavaNextVideoModel
< source >( config: LlavaNextVideoConfig )
Parametreler
- config (LlavaNextVideoConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
Dil modelleme kafası olmadan bir görme omurgası ve bir dil modelinden oluşan Llava-Next modeli.
Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Nonepixel_values: typing.Optional[torch.Tensor] = Nonepixel_values_videos: typing.Optional[torch.Tensor] = Noneimage_sizes: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonevision_feature_layer: int | list[int] | None = Nonevision_feature_select_strategy: str | None = Noneuse_cache: bool | None = Nonemm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None**kwargs: *<class 'transformers.modeling_flash_attention_utils.FlashAttentionKwargs'> ) → LlavaNextVideoModelOutputWithPast or tuple(torch.Tensor)
Parametreler
- input_ids (
torch.LongTensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.
- pixel_values (
torch.Tensor, şekli(batch_size, num_channels, image_size, image_size), isteğe bağlı) — Girdi görüntülerine karşılık gelen tensörler. Piksel değerleri LlavaNextImageProcessor kullanılarak elde edilebilir. Ayrıntılar için LlavaNextImageProcessor.call() bölümüne bakın (LlavaNextVideoProcessor, görüntü işleme için LlavaNextImageProcessor kullanır). - pixel_values_videos (
torch.Tensor, şekli(batch_size, num_frames, num_channels, frame_size, frame_size), isteğe bağlı) — Girdi videosuna karşılık gelen tensörler. Videolar için piksel değerleri, LlavaNextVideoVideoProcessor kullanılarak elde edilebilir. Ayrıntılar için LlavaNextVideoVideoProcessor.call() bölümüne bakın (LlavaNextVideoProcessor, videoları işlemek için LlavaNextVideoVideoProcessor kullanır). - image_sizes (
torch.LongTensor, şekli(batch_size, 2), isteğe bağlı) — Toplumdaki görüntülerin boyutları; her görüntü için (yükseklik, genişlik) olarak verilir. - attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- position_ids (
torch.LongTensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, isteğe bağlı) — Sıralı çözümlemeyi hızlandırmak için kullanılabilen önceden hesaplanmış gizli durumlar (self-attention ve cross-attention bloklarındaki anahtar ve değerler). Bu genelliklepast_key_valuesdeğerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülenuse_cache=Trueveyaconfig.use_cache=True.Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın.
past_key_valuesgeçirilmezse, varsayılan olarak DynamicCache başlatılır.Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.
past_key_valueskullanılıyorsa, kullanıcının tüminput_ids(şekli(batch_size, sequence_length)) yerine, bu modele geçmiş anahtar değer durumları verilmemiş olan, işlenmemişinput_ids(şekli(batch_size, unprocessed_length)) girmesi beklenir. - inputs_embeds (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,input_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır. - vision_feature_layer (
Union[int, list[int]], isteğe bağlı) — Görüntü özelliğinin seçileceği katmanın indeksi. Birden fazla indeks sağlanırsa, ilgili indekslere ait görüntü özellikleri birleştirilerek görüntü özellikleri oluşturulur. - vision_feature_select_strategy (
str, isteğe bağlı, varsayılan"default") — Görüntü omurgasından görüntü özelliğini seçmek için kullanılan özellik seçme stratejisi."default"veya"full"değerlerinden biri olabilir."default"değeri seçilirse, CLS token'ı görüntü özelliklerinden kaldırılır."full"değeri seçilirse, tam görüntü özellikleri kullanılır. - use_cache (
bool, isteğe bağlı) —Trueolarak ayarlanırsa,past_key_valuesanahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz.past_key_values). - mm_encoder_outputs (
dict[str, ~modeling_outputs.BaseModelOutputWithPooling], isteğe bağlı) — Anahtarları desteklenen modaliteler, değerleri ise o modalite için kodlanmış çıktılar olan bir sözlük. Her kodlanmış çıktı, (pooler_output, isteğe bağlı:last_hidden_states, isteğe bağlı:hidden_states, isteğe bağlı:attentions)pooler_output(şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) biçiminde bir demettir ve kodlayıcının çok modlu özelliklerinin metin gömme (embedding) değerleriyle birleştirilmiş bir dizisidir.
Dönüş değeri
LlavaNextVideoModelOutputWithPast veya tuple(torch.Tensor)
LlavaNextVideoModelOutputWithPast veya bir torch.Tensor demeti (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırmaya (LlavaNextVideoConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
LlavaNextVideoModel forward metodu, __call__ özel metodunu geçersiz kılar.
İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine
Moduleörneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.
last_hidden_state (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size)) — Modelin son katmanının çıktısındaki gizli durumlar dizisi.past_key_valueskullanılırsa, yalnızca(batch_size, 1, hidden_size)biçimindeki dizilerin son gizli durumu (hidden-state) çıktı olarak verilir.past_key_values (
Cache, isteğe bağlı,use_cache=Truegeçirildiğinde veyaconfig.use_cache=Trueolduğunda döndürülür) — Bir Cache örneğidir. Daha fazla ayrıntı için kv cache kılavuzumuza bakın.Sıralı çözümlemeyi hızlandırmak için (bkz.
past_key_valuesgirdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki anahtar ve değerler) içerir.hidden_states (
tuple(torch.Tensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, sequence_length).Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
image_hidden_states (
torch.Tensor, isteğe bağlı) — Boyutu(batch_size, num_images, sequence_length, hidden_size)olan birtorch.Tensor. Görüntü kodlayıcısı tarafından üretilen ve son gizli durum projekte edildikten sonraki modelin image_hidden_states değerleri.video_hidden_states (
torch.Tensor, isteğe bağlı) — Boyutu(batch_size * num_frames, num_videos, sequence_length, hidden_size)olan birtorch.Tensor. Görüntü kodlayıcısı tarafından üretilen ve son gizli durum projekte edildikten sonraki modelin video_hidden_states'i.
get_image_features
< source >( pixel_values: Tensorimage_sizes: Tensorvision_feature_layer: int | list[int] | None = Nonevision_feature_select_strategy: str | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)
Parametreler
- pixel_values (
torch.Tensor, şekli(batch_size, num_patches, channels, height, width)) — Girdi görüntülerine karşılık gelen tensörler. - image_sizes (
torch.Tensor, şekli(num_images, 2)) — Her bir görüntünün gerçek boyutu (H, W). - vision_feature_layer (
Union[int, list[int]], isteğe bağlı) — Görüntü özelliğinin seçileceği katmanın indeksi. Birden fazla indeks sağlanırsa, ilgili indekslere ait görüntü özellikleri birleştirilerek görüntü özellikleri oluşturulur. - image_sizes (
torch.Tensor, şekli(batch_size, 2)) — Toplumdaki görüntülerin boyutları; her görüntü için (yükseklik, genişlik). - vision_feature_layer (
Union[int, list[int]], isteğe bağlı) — Görüntü özelliğinin seçileceği katmanın indeksi. Birden fazla indeks sağlanırsa, ilgili indekslere ait görüntü özellikleri birleştirilerek görüntü özellikleri oluşturulur. - vision_feature_select_strategy (
str, opsiyonel) — Görüntü omurgasından (vision backbone) görüntü özelliğini seçmek için kullanılan özellik seçme stratejisi."default"veya"full"değerlerinden biri olabilir.
Dönüş değeri
BaseModelOutputWithPooling veya tuple(torch.Tensor)
A BaseModelOutputWithPooling veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (LlavaNextVideoConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
Görme kulesinden görüntü son gizli durumlarını alır ve çok modlu projeksiyonu uygular.
last_hidden_state (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size)) — Modelin son katmanının çıktısındaki gizli durumlar dizisi.pooler_output (
torch.Tensor, şekli(batch_size, hidden_size)) — Sıranın ilk token'ının (sınıflandırma token'ı) son katman gizli durumu, yardımcı ön eğitim görevi için kullanılan katmanlar üzerinden ek işlemden geçirildikten sonraki hali. Örneğin BERT ailesi modelleri için, bu, sınıflandırma token'ının doğrusal bir katman ve tanh aktivasyon fonksiyonu üzerinden işlenmesinden sonra döndürülen değerdir. Doğrusal katman ağırlıkları, ön eğitim sırasında bir sonraki cümle tahmini (sınıflandırma) hedefinden eğitilir.hidden_states (
tuple(torch.Tensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, sequence_length).Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
get_placeholder_mask
< source >( input_ids: LongTensorinputs_embeds: Tensorimage_features: typing.Optional[torch.Tensor] = Nonevideo_features: typing.Optional[torch.Tensor] = None )
input_ids veya inputs_embeds içinden çok modlu yer tutucu maskesini alır ve yer tutucu belirteç sayısının çok modlu özelliklerin uzunluğuna eşit olduğunu kontrol eder. Uzunluklar farklıysa bir hata oluşturulur.
get_video_features
< source >( pixel_values_videos: Tensorvision_feature_layer: int | list[int] | None = Nonevision_feature_select_strategy: str | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)
Parametreler
- pixel_values_videos (
torch.Tensor]şekli(batch_size, num_frames, channels, height, width)) — Girdi videosuna karşılık gelen tensörler. - vision_feature_layer (
Union[int, list[int]], isteğe bağlı) — Görüntü özelliğinin seçileceği katmanın indeksi. Birden fazla indeks sağlanırsa, ilgili indekslere ait görüntü özellikleri birleştirilerek görüntü özellikleri oluşturulur. - vision_feature_layer (
Union[int, list[int]], isteğe bağlı) — Görüntü özelliğinin seçileceği katmanın indeksi. Birden fazla indeks sağlanırsa, ilgili indekslere ait görüntü özellikleri birleştirilerek görüntü özellikleri oluşturulur. - vision_feature_select_strategy (
str, opsiyonel) — Görüntü omurgasından (vision backbone) görüntü özelliğini seçmek için kullanılan özellik seçme stratejisi."default"veya"full"değerlerinden biri olabilir.
Dönüş değeri
BaseModelOutputWithPooling veya tuple(torch.Tensor)
A BaseModelOutputWithPooling veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (LlavaNextVideoConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
Görme kulesinden video son gizli durumlarını alır ve çok modlu projeksiyonu uygular.
last_hidden_state (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size)) — Modelin son katmanının çıktısındaki gizli durumlar dizisi.pooler_output (
torch.Tensor, şekli(batch_size, hidden_size)) — Sıranın ilk token'ının (sınıflandırma token'ı) son katman gizli durumu, yardımcı ön eğitim görevi için kullanılan katmanlar üzerinden ek işlemden geçirildikten sonraki hali. Örneğin BERT ailesi modelleri için, bu, sınıflandırma token'ının doğrusal bir katman ve tanh aktivasyon fonksiyonu üzerinden işlenmesinden sonra döndürülen değerdir. Doğrusal katman ağırlıkları, ön eğitim sırasında bir sonraki cümle tahmini (sınıflandırma) hedefinden eğitilir.hidden_states (
tuple(torch.Tensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, sequence_length).Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
pack_image_features
< source >( image_featuresimage_sizesvision_feature_select_strategyimage_newline = None )
Parametreler
- image_features (
list[torch.Tensor], uzunluğu num_images, her birinin şekli(num_patches, image_length, embed_dim)) — Görsel özellik tensörlerinin listesi; her biri tüm yamaların (patch) görsel özelliklerini içerir. - image_sizes (
torch.Tensor, şekli(num_images, 2)) — Her bir görüntünün gerçek boyutu (H, W). - vision_feature_select_strategy (
str) — Görüntü omurgasından (vision backbone) görüntü özelliğini seçmek için kullanılan özellik seçme stratejisi. - image_newline (
torch.Tensor, şekli(embed_dim)) — Yeni satır gömme vektörü.
Her image_feature'ı yeniden şekillendirin, dolgu kısımlarını kaldırın ve ardından tüm görsel vektörleri içeren tek bir image_features tensörüne paketleyin.
LlavaNextVideoForConditionalGeneration
sınıf transformers.LlavaNextVideoForConditionalGeneration
< source >( config: LlavaNextVideoConfig )
Parametreler
- config (LlavaNextVideoConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
Bir görme omurgası ve bir dil modelinden oluşan LLAVA-NeXT modeli.
Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Nonepixel_values: typing.Optional[torch.Tensor] = Nonepixel_values_videos: typing.Optional[torch.Tensor] = Noneimage_sizes: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonevision_feature_layer: int | list[int] | None = Nonevision_feature_select_strategy: str | None = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0mm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → LlavaNextVideoCausalLMOutputWithPast or tuple(torch.Tensor)
Parametreler
- input_ids (
torch.LongTensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.
- pixel_values (
torch.Tensor, şekli(batch_size, num_channels, image_size, image_size), isteğe bağlı) — Girdi görüntülerine karşılık gelen tensörler. Piksel değerleri LlavaNextImageProcessor kullanılarak elde edilebilir. Ayrıntılar için LlavaNextImageProcessor.call() bölümüne bakın (LlavaNextVideoProcessor, görüntü işleme için LlavaNextImageProcessor kullanır). - pixel_values_videos (
torch.Tensor, şekli(batch_size, num_frames, num_channels, frame_size, frame_size), isteğe bağlı) — Girdi videosuna karşılık gelen tensörler. Videolar için piksel değerleri, LlavaNextVideoVideoProcessor kullanılarak elde edilebilir. Ayrıntılar için LlavaNextVideoVideoProcessor.call() bölümüne bakın (LlavaNextVideoProcessor, videoları işlemek için LlavaNextVideoVideoProcessor kullanır). - image_sizes (
torch.LongTensor, şekli(batch_size, 2), isteğe bağlı) — Toplumdaki görüntülerin boyutları; her görüntü için (yükseklik, genişlik) olarak verilir. - attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- position_ids (
torch.LongTensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, isteğe bağlı) — Sıralı çözümlemeyi hızlandırmak için kullanılabilen önceden hesaplanmış gizli durumlar (self-attention ve cross-attention bloklarındaki anahtar ve değerler). Bu genelliklepast_key_valuesdeğerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülenuse_cache=Trueveyaconfig.use_cache=True.Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın.
past_key_valuesgeçirilmezse, varsayılan olarak DynamicCache başlatılır.Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.
past_key_valueskullanılıyorsa, kullanıcının tüminput_ids(şekli(batch_size, sequence_length)) yerine, bu modele geçmiş anahtar değer durumları verilmemiş olan, işlenmemişinput_ids(şekli(batch_size, unprocessed_length)) girmesi beklenir. - inputs_embeds (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,input_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır. - vision_feature_layer (
Union[int, list[int]], isteğe bağlı) — Görüntü özelliğinin seçileceği katmanın indeksi. Birden fazla indeks sağlanırsa, ilgili indekslere ait görüntü özellikleri birleştirilerek görüntü özellikleri oluşturulur. - vision_feature_select_strategy (
str, isteğe bağlı) — Görüntü omurgasından (vision backbone) görüntü özelliğini seçmek için kullanılan özellik seçme stratejisi."default"veya"full"değerlerinden biri olabilir. - labels (
torch.LongTensor, şekli(batch_size, sequence_length), isteğe bağlı) — Maskeli dil modelleme kaybını hesaplamak için etiketler. Endeksler[0, ..., config.vocab_size]aralığında olmalı ya da -100 olmalı (input_idsdocstring'ine bakın). Endeksleri-100olarak ayarlanan tokenlar yok sayılır (maskelenir), kayıp yalnızca etiketleri[0, ..., config.vocab_size]aralığında olan tokenlar için hesaplanır. - use_cache (
bool, isteğe bağlı) —Trueolarak ayarlanırsa,past_key_valuesanahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz.past_key_values). - logits_to_keep (
Union[int, torch.Tensor], isteğe bağlı, varsayılan0) —intise, sonlogits_to_keeptoken için logits hesaplanır.0ise, tüminput_idsiçin logits hesaplanır (özel durum). Üretim için yalnızca son token logits'leri gereklidir ve bunların yalnızca o token için hesaplanması bellek tasarrufu sağlar; bu, uzun diziler veya büyük sözlük boyutu için oldukça önemli hale gelir.torch.Tensorise, dizi uzunluğu boyutundaki korunacak indekslere karşılık gelen 1B olmalıdır. Bu, paketlenmiş tensor biçimini (batch ve dizi uzunluğu için tek boyut) kullanırken faydalıdır. - mm_encoder_outputs (
dict[str, ~modeling_outputs.BaseModelOutputWithPooling], isteğe bağlı) — Anahtarları desteklenen modaliteler, değerleri ise o modalite için kodlanmış çıktılar olan bir sözlük. Her kodlanmış çıktı, (pooler_output, isteğe bağlı:last_hidden_states, isteğe bağlı:hidden_states, isteğe bağlı:attentions)pooler_output(şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) biçiminde bir demettir ve kodlayıcının çok modlu özelliklerinin metin gömme (embedding) değerleriyle birleştirilmiş bir dizisidir.
Dönüş değeri
LlavaNextVideoCausalLMOutputWithPast veya tuple(torch.Tensor)
LlavaNextVideoCausalLMOutputWithPast veya bir torch.Tensor demeti (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırmaya (LlavaNextVideoConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
LlavaNextVideoForConditionalGeneration forward metodu, __call__ özel metodunu geçersiz kılar.
İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine
Moduleörneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.
loss (
torch.Tensor, şekli(1,), isteğe bağlı,labelssağlandığında döndürülür) — Dil modelleme kaybı (sonraki token tahmini için).logits (
torch.Tensor, şekli(batch_size, sequence_length, config.vocab_size)) — Dil modelleme başlığının tahmin puanları (SoftMax öncesi her sözlük jetonu için puanlar).past_key_values (
Cache, isteğe bağlı,use_cache=Truegeçirildiğinde veyaconfig.use_cache=Trueolduğunda döndürülür) — Bir Cache örneğidir. Daha fazla ayrıntı için kv cache kılavuzumuza bakın.Sıralı çözümlemeyi hızlandırmak için (bkz.
past_key_valuesgirdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki anahtar ve değerler) içerir.hidden_states (
tuple[torch.Tensor], isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
attentions (
tuple[torch.Tensor], isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, sequence_length).Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
image_hidden_states (
torch.Tensor, isteğe bağlı) — (batch_size * num_patches, num_images, sequence_length, hidden_size) boyutunda birtorch.Tensor. Görüntü kodlayıcısı tarafından üretilen ve son gizli durum projekte edildikten sonraki modelin image_hidden_states değerleri.video_hidden_states (
torch.Tensor, isteğe bağlı) — Boyutu(batch_size * num_frames, num_videos, sequence_length, hidden_size)olan birtorch.Tensor. Görüntü kodlayıcısı tarafından üretilen ve son gizli durum projekte edildikten sonraki modelin video_hidden_states'i.
Örnek:
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> import av
>>> from transformers import AutoProcessor, LlavaNextVideoForConditionalGeneration
>>> def read_video_pyav(container, indices):
... '''
... Decode the video with PyAV decoder.
... Args:
... container (`av.container.input.InputContainer`): PyAV container.
... indices (`list[int]`): List of frame indices to decode.
... Returns:
... result (np.ndarray): np array of decoded frames of shape (num_frames, height, width, 3).
... '''
... frames = []
... container.seek(0)
... start_index = indices[0]
... end_index = indices[-1]
... for i, frame in enumerate(container.decode(video=0)):
... if i > end_index:
... break
... if i >= start_index and i in indices:
... frames.append(frame)
... return np.stack([x.to_ndarray(format="rgb24") for x in frames])
>>> model = LlavaNextVideoForConditionalGeneration.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf", device_map="auto")
>>> processor = AutoProcessor.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf")
>>> prompt = "USER: <video>\nWhy is this video funny? ASSISTANT:"
>>> video_path = hf_hub_download(repo_id="raushan-testing-hf/videos-test", filename="sample_demo_1.mp4", repo_type="dataset")
>>> container = av.open(video_path)
>>> # sample uniformly 8 frames from the video (model was trained with 32 frames per video, but this video is short)
>>> total_frames = container.streams.video[0].frames
>>> indices = np.arange(0, total_frames, total_frames / 8).astype(int)
>>> clip = read_video_pyav(container, indices)
>>> inputs_video = processor(text=prompt, videos=clip, return_tensors="pt").to(model.device)
>>> # load an image to generate from an image
>>> prompt = "USER:<image>\nWhat is shown in this image? ASSISTANT:"
>>> url = "https://www.ilankelman.org/stopsigns/australia.jpg"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read()))
>>> inputs_image = processor(text=prompt, images=image, return_tensors="pt").to(model.device)
>>> # Generate from video
>>> generate_ids = model.generate(**inputs_video, max_length=50)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"USER:\nWhy is this video funny? ASSISTANT: The humor in this video comes from the unexpected and endearing sight of a baby wearing glasses and (...)"
>>> # Generate from image
>>> generate_ids = model.generate(**inputs_image, max_length=30)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"USER: \nWhat's the content of the image? ASSISTANT: The image shows a red stop sign on a pole, with a traditional Chinese archway (...)"get_image_features
< source >( pixel_values: Tensorimage_sizes: Tensorvision_feature_layer: int | list[int] | None = Nonevision_feature_select_strategy: str | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)
Parametreler
- pixel_values (
torch.Tensor, şekli(batch_size, num_patches, channels, height, width)) — Girdi görüntülerine karşılık gelen tensörler. - image_sizes (
torch.Tensor, şekli(num_images, 2)) — Her bir görüntünün gerçek boyutu (H, W). - vision_feature_layer (
Union[int, list[int]], isteğe bağlı) — Görüntü özelliğinin seçileceği katmanın indeksi. Birden fazla indeks sağlanırsa, ilgili indekslere ait görüntü özellikleri birleştirilerek görüntü özellikleri oluşturulur. - image_sizes (
torch.Tensor, şekli(batch_size, 2)) — Toplumdaki görüntülerin boyutları; her görüntü için (yükseklik, genişlik). - vision_feature_layer (
Union[int, list[int]], isteğe bağlı) — Görüntü özelliğinin seçileceği katmanın indeksi. Birden fazla indeks sağlanırsa, ilgili indekslere ait görüntü özellikleri birleştirilerek görüntü özellikleri oluşturulur. - vision_feature_select_strategy (
str, opsiyonel) — Görüntü omurgasından (vision backbone) görüntü özelliğini seçmek için kullanılan özellik seçme stratejisi."default"veya"full"değerlerinden biri olabilir.
Dönüş değeri
BaseModelOutputWithPooling veya tuple(torch.Tensor)
A BaseModelOutputWithPooling veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (LlavaNextVideoConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
last_hidden_state (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size)) — Modelin son katmanının çıktısındaki gizli durumlar dizisi.pooler_output (
torch.Tensor, şekli(batch_size, hidden_size)) — Sıranın ilk token'ının (sınıflandırma token'ı) son katman gizli durumu, yardımcı ön eğitim görevi için kullanılan katmanlar üzerinden ek işlemden geçirildikten sonraki hali. Örneğin BERT ailesi modelleri için, bu, sınıflandırma token'ının doğrusal bir katman ve tanh aktivasyon fonksiyonu üzerinden işlenmesinden sonra döndürülen değerdir. Doğrusal katman ağırlıkları, ön eğitim sırasında bir sonraki cümle tahmini (sınıflandırma) hedefinden eğitilir.hidden_states (
tuple(torch.Tensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, sequence_length).Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
Örnek:
>>> from PIL import Image
>>> from transformers import AutoProcessor, LlavaNextVideoForConditionalGeneration
>>> model = LlavaNextVideoForConditionalGeneration.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf")
>>> processor = AutoProcessor.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf")
>>> messages = [
... {
... "role": "user", "content": [
... {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
... {"type": "text", "text": "Where is the cat standing?"},
... ]
... },
... ]
>>> inputs = processor.apply_chat_template(
... messages,
... tokenize=True,
... return_dict=True,
... return_tensors="pt",
... add_generation_prompt=True
... )
>>> # Generate
>>> generate_ids = model.generate(**inputs)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True)[0]get_video_features
< source >( pixel_values_videos: Tensorvision_feature_layer: int | list[int] | None = Nonevision_feature_select_strategy: str | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)
Parametreler
- pixel_values_videos (
torch.Tensor]şekli(batch_size, num_frames, channels, height, width)) — Girdi videosuna karşılık gelen tensörler. - vision_feature_layer (
Union[int, list[int]], isteğe bağlı) — Görüntü özelliğinin seçileceği katmanın indeksi. Birden fazla indeks sağlanırsa, ilgili indekslere ait görüntü özellikleri birleştirilerek görüntü özellikleri oluşturulur. - vision_feature_layer (
Union[int, list[int]], isteğe bağlı) — Görüntü özelliğinin seçileceği katmanın indeksi. Birden fazla indeks sağlanırsa, ilgili indekslere ait görüntü özellikleri birleştirilerek görüntü özellikleri oluşturulur. - vision_feature_select_strategy (
str, opsiyonel) — Görüntü omurgasından (vision backbone) görüntü özelliğini seçmek için kullanılan özellik seçme stratejisi."default"veya"full"değerlerinden biri olabilir.
Dönüş değeri
BaseModelOutputWithPooling veya tuple(torch.Tensor)
A BaseModelOutputWithPooling veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (LlavaNextVideoConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
last_hidden_state (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size)) — Modelin son katmanının çıktısındaki gizli durumlar dizisi.pooler_output (
torch.Tensor, şekli(batch_size, hidden_size)) — Sıranın ilk token'ının (sınıflandırma token'ı) son katman gizli durumu, yardımcı ön eğitim görevi için kullanılan katmanlar üzerinden ek işlemden geçirildikten sonraki hali. Örneğin BERT ailesi modelleri için, bu, sınıflandırma token'ının doğrusal bir katman ve tanh aktivasyon fonksiyonu üzerinden işlenmesinden sonra döndürülen değerdir. Doğrusal katman ağırlıkları, ön eğitim sırasında bir sonraki cümle tahmini (sınıflandırma) hedefinden eğitilir.hidden_states (
tuple(torch.Tensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, sequence_length).Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
Örnek:
>>> from PIL import Image
>>> from transformers import AutoProcessor, LlavaNextVideoForConditionalGeneration
>>> model = LlavaNextVideoForConditionalGeneration.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf")
>>> processor = AutoProcessor.from_pretrained("llava-hf/LLaVA-NeXT-Video-7B-hf")
>>> messages = [
... {
... "role": "user", "content": [
... {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
... {"type": "text", "text": "Where is the cat standing?"},
... ]
... },
... ]
>>> inputs = processor.apply_chat_template(
... messages,
... tokenize=True,
... return_dict=True,
... return_tensors="pt",
... add_generation_prompt=True
... )
>>> # Generate
>>> generate_ids = model.generate(**inputs)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True)[0]