Transformers 文件

Fuyu

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

Fuyu

PyTorch

概述

Fuyu 模型由 ADEPT 建立,作者為 Rohan Bavishi、Erich Elsen、Curtis Hawthorne、Maxwell Nye、Augustus Odena、Arushi Somani、Sağnak Taşırlar。

作者們推出了 Fuyu-8B,這是一個基於經典 Transformer 架構的僅解碼器多模態模型,帶有查詢和鍵歸一化。模型增加了一個線性編碼器,用於從影像輸入建立多模態嵌入。

透過將影像詞元(token)視為文字詞元,並使用特殊的影像換行符,模型可以知道影像行的結束位置。影像位置嵌入被移除。這避免了針對不同影像解析度需要不同訓練階段的問題。Fuyu-8B 擁有 80 億引數,並採用 CC-BY-NC 許可證,其能夠處理文字和影像、擁有 16K 的驚人上下文大小以及整體效能出色,因此備受矚目。

Fuyu 模型使用 bfloat16進行訓練,但原始推理使用 float16。Hub 上上傳的檢查點使用 torch_dtype = 'float16'AutoModel API 將用其把檢查點從 torch.float32 轉換為 torch.float16

線上權重的 `dtype` 基本上是無關緊要的,除非你在使用 `model = AutoModelForCausalLM.from_pretrained("path", torch_dtype = "auto")` 初始化模型時使用了 `torch_dtype="auto"`。原因是模型會首先被下載(使用線上檢查點的 `dtype`),然後它會被轉換為 `torch` 的預設 `dtype`(變為 `torch.float32`)。使用者應該指定他們想要的 `torch_dtype`,如果他們不指定,則預設為 `torch.float32`。

不建議在 `float16` 模式下微調模型,已知這會產生 `nan`,因此模型應在 `bfloat16` 模式下進行微調。

技巧

  • 要轉換模型,你需要使用 `git clone https://github.com/persimmon-ai-labs/adept-inference` 克隆原始倉庫,然後獲取檢查點
git clone https://github.com/persimmon-ai-labs/adept-inference
wget path/to/fuyu-8b-model-weights.tar
tar -xvf fuyu-8b-model-weights.tar
python src/transformers/models/fuyu/convert_fuyu_weights_to_hf.py  --input_dir /path/to/downloaded/fuyu/weights/ --output_dir /output/path \
    --pt_model_path /path/to/fuyu_8b_release/iter_0001251/mp_rank_00/model_optim_rng.pt
    --ada_lib_path /path/to/adept-inference

對於聊天模型

wget https://axtkn4xl5cip.objectstorage.us-phoenix-1.oci.customer-oci.com/n/axtkn4xl5cip/b/adept-public-data/o/8b_chat_model_release.tar
tar -xvf 8b_base_model_release.tar

然後,模型可以透過以下方式載入

from transformers import FuyuConfig, FuyuForCausalLM
model_config = FuyuConfig()
model = FuyuForCausalLM(model_config).from_pretrained('/output/path')

輸入需要透過一個特定的處理器進行處理,以獲得正確的格式。處理器需要一個影像處理器和一個分詞器。因此,輸入可以透過以下方式載入

from PIL import Image
from transformers import AutoTokenizer
from transformers.models.fuyu.processing_fuyu import FuyuProcessor
from transformers.models.fuyu.image_processing_fuyu import FuyuImageProcessor


tokenizer = AutoTokenizer.from_pretrained('adept-hf-collab/fuyu-8b')
image_processor = FuyuImageProcessor()


processor = FuyuProcessor(image_processor=image_processor, tokenizer=tokenizer)
text_prompt = "Generate a coco-style caption.\\n"

bus_image_url = "https://huggingface.co/datasets/hf-internal-testing/fixtures-captioning/resolve/main/bus.png"
bus_image_pil = Image.open(io.BytesIO(requests.get(bus_image_url).content))
inputs_to_model = processor(images=bus_image_pil, text=text_prompt)

該模型由 Molbap 貢獻。原始程式碼可以在這裡找到。

  • Fuyu 使用基於 `sentencepiece` 的分詞器,模型為 `Unigram`。它支援位元組回退,這僅在 `tokenizers==0.14.0` 的快速分詞器中可用。由於 `LlamaTokenizer` 是 sentencepiece 的標準包裝器,因此被使用。

  • 作者建議使用以下提示進行影像描述:`f"生成一個 coco 風格的描述。\\n"`

FuyuConfig

class transformers.FuyuConfig

< >

( vocab_size = 262144 hidden_size = 4096 intermediate_size = 16384 num_hidden_layers = 36 num_attention_heads = 64 hidden_act = 'relu2' max_position_embeddings = 16384 image_size = 300 patch_size = 30 num_channels = 3 initializer_range = 0.02 layer_norm_eps = 1e-05 use_cache = True tie_word_embeddings = False rope_theta = 25000.0 rope_scaling = None qk_layernorm = True hidden_dropout = 0.0 attention_dropout = 0.0 partial_rotary_factor = 0.5 pad_token_id = None bos_token_id = 1 eos_token_id = 2 image_token_id = 71011 text_config = None **kwargs )

引數

  • vocab_size (int, 可選, 預設為 262144) — Fuyu 模型的詞彙表大小。定義了在呼叫 FuyuForCausalLM 時傳入的 `inputs_ids` 可以表示的不同詞元的數量。
  • hidden_size (int, 可選, 預設為 4096) — 隱藏表示的維度。
  • intermediate_size (int, 可選, 預設為 16384) — MLP 表示的維度。
  • num_hidden_layers (int, 可選, 預設為 36) — Transformer 編碼器中的隱藏層數量。
  • num_attention_heads (int, 可選, 預設為 64) — Transformer 編碼器中每個注意力層的注意力頭數量。
  • hidden_act (strfunction, 可選, 預設為 "relu2") — 解碼器中的非線性啟用函式(函式或字串)。
  • max_position_embeddings (int, 可選, 預設為 16384) — 該模型可能使用的最大序列長度。
  • image_size (int, 可選, 預設為 300) — 輸入影像的大小。
  • patch_size (int, 可選, 預設為 30) — 輸入視覺 Transformer 編碼的補丁大小。
  • num_channels (int, 可選, 預設為 3) — 輸入影像的通道數。
  • initializer_range (float, 可選, 預設為 0.02) — 用於初始化所有權重矩陣的截斷正態分佈初始化器的標準差。
  • layer_norm_eps (float, 可選, 預設為 1e-05) — RMS 歸一化層使用的 epsilon 值。
  • use_cache (bool, 可選, 預設為 `True`) — 模型是否應返回最後一個鍵/值注意力(並非所有模型都使用)。僅在 `config.is_decoder=True` 時相關。是否繫結權重嵌入
  • tie_word_embeddings (bool, 可選, 預設為 `False`) — 是否繫結輸入和輸出嵌入。
  • rope_theta (float, 可選, 預設為 25000.0) — RoPE 嵌入的基週期。
  • rope_scaling (Dict, 可選) — 包含 RoPE 嵌入縮放配置的字典。目前支援兩種縮放策略:線性和動態。它們的縮放因子必須是大於 1 的浮點數。預期格式為 `{"type": 策略名稱, "factor": 縮放因子}`。使用此標誌時,不要將 `max_position_embeddings` 更新為預期的新最大值。有關這些縮放策略行為的更多資訊,請參閱以下帖子:https://www.reddit.com/r/LocalFuyu/comments/14mrgpr/dynamically_scaled_rope_further_increases/。這是一個實驗性功能,可能會在未來版本中發生破壞性 API 更改。
  • qk_layernorm (bool, 可選, 預設為 `True`) — 是否在投影隱藏狀態後對查詢(Queries)和鍵(Keys)進行歸一化
  • hidden_dropout (float, 可選, 預設為 0.0) — 在將 MLP 應用於隱藏狀態後的 dropout 比率。
  • attention_dropout (float, 可選, 預設為 0.0) — 計算注意力分數後的 dropout 比率。
  • partial_rotary_factor (float, 可選, 預設為 0.5) — 將具有旋轉嵌入的查詢和鍵的百分比。
  • pad_token_id (int, 可選) — 填充 詞元的 ID。
  • bos_token_id (int, 可選, 預設為 1) — 序列開始 詞元的 ID。
  • eos_token_id (Union[int, list[int]], 可選, 預設為 2) — 序列結束 詞元的 ID。可選地,可以使用一個列表來設定多個 序列結束 詞元。
  • image_token_id (int, 可選, 預設為 71011) — 影像佔位符詞元的 ID。
  • text_config (dict, 可選) — 用於初始化 `language```Aut` 的配置選項字典。

這是用於儲存 FuyuForCausalLM 配置的配置類。它用於根據指定的引數例項化一個 Fuyu 模型,定義模型架構。使用預設值例項化一個配置將產生與 adept/fuyu-8b 類似的配置。

配置物件繼承自 PretrainedConfig,可用於控制模型輸出。請閱讀 PretrainedConfig 的文件以獲取更多資訊。

>>> from transformers import FuyuConfig

>>> # Initializing a Fuyu fuyu-7b style configuration
>>> configuration = FuyuConfig()

FuyuModel

class transformers.FuyuModel

< >

( config: FuyuConfig )

引數

  • config (FuyuConfig) — 模型配置類,包含模型的所有引數。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

Fuyu 模型由視覺主幹和語言模型組成,不帶語言模型頭。

該模型繼承自 PreTrainedModel。請查閱超類文件,瞭解庫為所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

該模型也是 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。

forward

< >

( input_ids: LongTensor = None image_patches: Tensor = None image_patches_indices: Tensor = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None past_key_values: typing.Optional[list[torch.FloatTensor]] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None **kwargs ) transformers.modeling_outputs.CausalLMOutputWithPasttuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列標記的索引。預設情況下,填充將被忽略。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • image_patches (torch.FloatTensor,形狀為 (batch_size, num_total_patches, patch_size_ x patch_size x num_channels), 可選) — 用作連續嵌入的影像塊。影像塊被展平,然後投影到模型的隱藏大小。
  • image_patches_indices (torch.LongTensor,形狀為 (batch_size, sequence_length), 可選) — input_ids 張量中影像塊的索引張量。
  • attention_mask (torch.Tensor,形狀為 (batch_size, sequence_length), 可選) — 用於避免對填充標記索引執行注意力的掩碼。掩碼值選自 [0, 1]

    • 1 表示標記未被掩碼
    • 0 表示標記被掩碼

    什麼是注意力掩碼?

  • position_ids (torch.LongTensor,形狀為 (batch_size, sequence_length), 可選) — 每個輸入序列標記在位置嵌入中的位置索引。選自範圍 [0, config.n_positions - 1]

    什麼是位置 ID?

  • past_key_values (list[torch.FloatTensor], 可選) — 預計算的隱藏狀態(自注意力和交叉注意力塊中的鍵和值),可用於加速序列解碼。這通常包括模型在先前解碼階段返回的 past_key_values,當 use_cache=Trueconfig.use_cache=True 時。

    允許兩種格式:

    • Cache 例項,請參閱我們的 kv 快取指南
    • 長度為 config.n_layerstuple(torch.FloatTensor) 元組,每個元組包含 2 個形狀為 (batch_size, num_heads, sequence_length, embed_size_per_head) 的張量。這也稱為舊版快取格式。

    模型將輸出與輸入相同的快取格式。如果未傳遞 past_key_values,將返回舊版快取格式。

    如果使用 past_key_values,使用者可以選擇只輸入最後一個形狀為 (batch_size, 1)input_ids(那些沒有為其提供過去鍵值狀態的標記),而不是所有形狀為 (batch_size, sequence_length)input_ids

  • inputs_embeds (torch.FloatTensor,形狀為 (batch_size, sequence_length, hidden_size), 可選) — 可選地,您可以選擇直接傳遞嵌入表示,而不是傳遞 input_ids。如果您希望比模型的內部嵌入查詢矩陣更好地控制如何將 input_ids 索引轉換為關聯向量,這將非常有用。
  • use_cache (bool, 可選) — 如果設定為 True,將返回 past_key_values 鍵值狀態,可用於加速解碼(請參閱 past_key_values)。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通的元組。

返回

transformers.modeling_outputs.CausalLMOutputWithPasttuple(torch.FloatTensor)

一個 transformers.modeling_outputs.CausalLMOutputWithPast 或一個 `torch.FloatTensor` 元組(如果傳遞了 `return_dict=False` 或當 `config.return_dict=False` 時),根據配置(FuyuConfig)和輸入,包含各種元素。

  • loss (torch.FloatTensor 形狀為 (1,)可選,當提供 labels 時返回) — 語言建模損失(用於下一個 token 預測)。

  • logits (形狀為 (batch_size, sequence_length, config.vocab_size)torch.FloatTensor) — 語言建模頭部的預測分數(SoftMax 之前的每個詞彙標記的分數)。

  • past_key_values (Cache, 可選, 當傳遞 use_cache=True 或當 config.use_cache=True 時返回) — 這是一個 Cache 例項。有關更多詳細資訊,請參閱我們的 kv 快取指南

    包含預計算的隱藏狀態(自注意力塊中的鍵和值),可用於(參見 past_key_values 輸入)加速順序解碼。

  • hidden_states (tuple(torch.FloatTensor), 可選, 當傳遞 output_hidden_states=True 或當 config.output_hidden_states=True 時返回) — torch.FloatTensor 的元組(如果模型有嵌入層,則一個是嵌入層的輸出,加上每個層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple(torch.FloatTensor), 可選, 當傳遞 output_attentions=True 或當 config.output_attentions=True 時返回) — torch.FloatTensor 的元組(每個層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

FuyuModel 的前向方法,覆蓋了 `__call__` 特殊方法。

儘管前向傳遞的配方需要在此函式內定義,但之後應呼叫 `Module` 例項而不是此函式,因為前者負責執行前處理和後處理步驟,而後者會默默地忽略它們。

gather_continuous_embeddings

< >

( word_embeddings: Tensor continuous_embeddings: list image_patch_input_indices: Tensor )

引數

  • word_embeddings (torch.FloatTensor,形狀為 (batch_size, sequence_length, hidden_size)) — 詞嵌入張量。
  • continuous_embeddings (torch.FloatTensor,形狀為 (batch_size, num_patches, hidden_size)) — 連續嵌入張量。列表的長度是批次大小。每個條目的形狀為 [num_image_embeddings, hidden],並且 num_image_embeddings 需要與該批次元素的 image_patch_input_indices 中的非負索引數匹配。
  • image_patch_input_indices (torch.LongTensor,形狀為 (batch_size, sequence_length)) — input_ids 張量中影像塊的索引張量。

此函式將 continuous_embeddings 放置到 image_patch_input_indices 指示的位置的 word_embeddings 中。不同的批次元素可以有不同數量的連續嵌入。

get_image_features

< >

( pixel_values: FloatTensor **kwargs )

引數

  • pixel_values (torch.FloatTensor,形狀為 (batch_size, num_channels, image_size, image_size)) — 對應於輸入影像的張量。

將影像編碼為可以轉發到語言模型的連續嵌入。

FuyuForCausalLM

class transformers.FuyuForCausalLM

< >

( config: FuyuConfig )

引數

  • config (FuyuConfig) — 包含模型所有引數的模型配置類。使用配置檔案初始化不會載入與模型關聯的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。

Fuyu 模型,頂部帶有一個語言建模頭,用於在影像塊和文字上進行條件因果語言建模。

該模型繼承自 PreTrainedModel。請查閱超類文件,瞭解庫為所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

該模型也是 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。

forward

< >

( input_ids: LongTensor = None image_patches: Tensor = None image_patches_indices: Tensor = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None past_key_values: typing.Optional[list[torch.FloatTensor]] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None use_cache: typing.Optional[bool] = None labels: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None logits_to_keep: typing.Optional[int] = 0 **kwargs ) transformers.modeling_outputs.CausalLMOutputWithPasttuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列標記的索引。預設情況下,填充將被忽略。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • image_patches (torch.FloatTensor,形狀為 (batch_size, num_total_patches, patch_size_ x patch_size x num_channels), 可選) — 用作連續嵌入的影像塊。影像塊被展平,然後投影到模型的隱藏大小。
  • image_patches_indices (torch.LongTensor,形狀為 (batch_size, sequence_length), 可選) — input_ids 張量中影像塊的索引張量。
  • attention_mask (torch.Tensor,形狀為 (batch_size, sequence_length), 可選) — 用於避免對填充標記索引執行注意力的掩碼。掩碼值選自 [0, 1]

    • 1 表示標記未被掩碼
    • 0 表示標記被掩碼

    什麼是注意力掩碼?

  • position_ids (torch.LongTensor,形狀為 (batch_size, sequence_length), 可選) — 每個輸入序列標記在位置嵌入中的位置索引。選自範圍 [0, config.n_positions - 1]

    什麼是位置 ID?

  • past_key_values (list[torch.FloatTensor], 可選) — 預計算的隱藏狀態(自注意力和交叉注意力塊中的鍵和值),可用於加速序列解碼。這通常包括模型在先前解碼階段返回的 past_key_values,當 use_cache=Trueconfig.use_cache=True 時。

    允許兩種格式:

    • Cache 例項,請參閱我們的 kv 快取指南
    • 長度為 config.n_layerstuple(torch.FloatTensor) 元組,每個元組包含 2 個形狀為 (batch_size, num_heads, sequence_length, embed_size_per_head) 的張量。這也稱為舊版快取格式。

    模型將輸出與輸入相同的快取格式。如果未傳遞 past_key_values,將返回舊版快取格式。

    如果使用 past_key_values,使用者可以選擇只輸入最後一個形狀為 (batch_size, 1)input_ids(那些沒有為其提供過去鍵值狀態的標記),而不是所有形狀為 (batch_size, sequence_length)input_ids

  • inputs_embeds (torch.FloatTensor,形狀為 (batch_size, sequence_length, hidden_size), 可選) — 可選地,您可以選擇直接傳遞嵌入表示,而不是傳遞 input_ids。如果您希望比模型的內部嵌入查詢矩陣更好地控制如何將 input_ids 索引轉換為關聯向量,這將非常有用。
  • use_cache (bool, 可選) — 如果設定為 True,將返回 past_key_values 鍵值狀態,可用於加速解碼(請參閱 past_key_values)。
  • labels (torch.LongTensor,形狀為 (batch_size, sequence_length), 可選) — 用於計算掩碼語言建模損失的標籤。索引應在 [0, ..., config.text_config.vocab_size] 或 -100 之間(請參閱 input_ids 文件)。索引設定為 -100 的標記將被忽略(掩碼),損失僅針對標籤在 [0, ..., config.text_config.vocab_size] 中的標記計算。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通的元組。
  • logits_to_keep (int, 可選, 預設為 0) — 如果是 int,則計算最後 logits_to_keep 個標記的 logits。如果為 0,則計算所有 input_ids 的 logits(特殊情況)。生成時只需要最後一個標記的 logits,僅為該標記計算它們可以節省記憶體,這對於長序列或大詞彙量來說非常重要。如果是 torch.Tensor,則必須是一維的,對應於序列長度維度中要保留的索引。這在使用打包張量格式(批次和序列長度使用單一維度)時非常有用。

返回

transformers.modeling_outputs.CausalLMOutputWithPasttuple(torch.FloatTensor)

一個 transformers.modeling_outputs.CausalLMOutputWithPast 或一個 `torch.FloatTensor` 元組(如果傳遞了 `return_dict=False` 或當 `config.return_dict=False` 時),根據配置(FuyuConfig)和輸入,包含各種元素。

  • loss (torch.FloatTensor 形狀為 (1,)可選,當提供 labels 時返回) — 語言建模損失(用於下一個 token 預測)。

  • logits (形狀為 (batch_size, sequence_length, config.vocab_size)torch.FloatTensor) — 語言建模頭部的預測分數(SoftMax 之前的每個詞彙標記的分數)。

  • past_key_values (Cache, 可選, 當傳遞 use_cache=True 或當 config.use_cache=True 時返回) — 這是一個 Cache 例項。有關更多詳細資訊,請參閱我們的 kv 快取指南

    包含預計算的隱藏狀態(自注意力塊中的鍵和值),可用於(參見 past_key_values 輸入)加速順序解碼。

  • hidden_states (tuple(torch.FloatTensor), 可選, 當傳遞 output_hidden_states=True 或當 config.output_hidden_states=True 時返回) — torch.FloatTensor 的元組(如果模型有嵌入層,則一個是嵌入層的輸出,加上每個層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple(torch.FloatTensor), 可選, 當傳遞 output_attentions=True 或當 config.output_attentions=True 時返回) — torch.FloatTensor 的元組(每個層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

FuyuForCausalLM 的前向方法,覆蓋了 `__call__` 特殊方法。

儘管前向傳遞的配方需要在此函式內定義,但之後應呼叫 `Module` 例項而不是此函式,因為前者負責執行前處理和後處理步驟,而後者會默默地忽略它們。

示例

>>> from transformers import FuyuProcessor, FuyuForCausalLM
>>> from PIL import Image
>>> import requests

>>> processor = FuyuProcessor.from_pretrained("adept/fuyu-8b")
>>> model = FuyuForCausalLM.from_pretrained("adept/fuyu-8b")

>>> url = "https://huggingface.co/datasets/hf-internal-testing/fixtures-captioning/resolve/main/bus.png"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> prompt = "Generate a coco-style caption.\n"

>>> inputs = processor(images=image, text=prompt, return_tensors="pt")
>>> outputs = model(**inputs)

>>> generated_ids = model.generate(**inputs, max_new_tokens=7)
>>> generation_text = processor.batch_decode(generated_ids[:, -7:], skip_special_tokens=True)
>>> print(generation_text[0])
A blue bus parked on the side of a road.

FuyuImageProcessor

class transformers.FuyuImageProcessor

< >

( do_resize: bool = True size: typing.Optional[dict[str, int]] = None resample: Resampling = <Resampling.BILINEAR: 2> do_pad: bool = True padding_value: float = 1.0 padding_mode: str = 'constant' do_normalize: bool = True image_mean: typing.Union[float, list[float]] = 0.5 image_std: typing.Union[float, list[float]] = 0.5 do_rescale: bool = True rescale_factor: float = 0.00392156862745098 patch_size: typing.Optional[dict[str, int]] = None **kwargs )

引數

  • do_resize (bool, 可選, 預設為 True) — 是否將影像大小調整為 size
  • size (dict[str, int], 可選, 預設為 {"height" -- 1080, "width": 1920}): 格式為 {"height": int, "width": int} 的字典,用於指定輸出影像的大小。
  • resample (PILImageResampling, 可選, 預設為 Resampling.BILINEAR) — 調整影像大小時使用的 PILImageResampling 濾波器,例如 PILImageResampling.BILINEAR
  • do_pad (bool, 可選, 預設為 True) — 是否將影像填充到 size
  • padding_value (float, 可選, 預設為 1.0) — 用於填充影像的值。
  • padding_mode (str, 可選, 預設為 "constant") — 填充影像時使用的填充模式。
  • do_normalize (bool, optional, defaults to True) — 是否對影像進行歸一化。
  • image_mean (float, optional, defaults to 0.5) — 歸一化影像時使用的均值。
  • image_std (float, optional, defaults to 0.5) — 歸一化影像時使用的標準差。
  • do_rescale (bool, optional, defaults to True) — 是否對影像進行縮放。
  • rescale_factor (float, optional, defaults to 1 / 255) — 縮放影像時使用的因子。
  • patch_size (dict[str, int], optional, defaults to {"height" -- 30, "width": 30}): 格式為 {"height": int, "width": int} 的字典,用於指定影像塊的大小。

此類應處理 FuyuForCausalLM 主模型之前的影像處理部分。具體來說,它應處理:

  • 處理影像:以一批影像作為輸入。如果影像大小可變,它會根據所需的影像塊尺寸調整它們的大小。影像輸出的 img_h 和 img_w 始終為 (1080, 1920)。

    然後,它使用 patchify_image 函式將這些影像分塊。

  • 建立影像輸入 ID:為每個影像塊分配一個佔位符 ID,以標識這些影像塊在詞元序列中的位置。對於可變大小的影像,每行影像塊都以一個換行符 ID 結尾。

  • 影像塊索引:對於每個影像塊,程式碼會維護一個索引,指示這些影像塊應插入到詞元流中的位置。

__call__

< >

( images **kwargs )

預處理單張或批次影像。

FuyuProcessor

class transformers.FuyuProcessor

< >

( image_processor tokenizer **kwargs )

引數

構建一個 Fuyu 處理器,它將 Fuyu 影像處理器和 Llama 分詞器包裝成一個單一的處理器。

FuyuProcessor 提供了 FuyuImageProcessorLlamaTokenizerFast 的所有功能。更多資訊請參閱 call()decode() 方法。

__call__

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] = None text: typing.Union[str, list[str], NoneType] = None audio = None videos = None **kwargs: typing_extensions.Unpack[transformers.models.fuyu.processing_fuyu.FuyuProcessorKwargs] ) FuyuBatchEncoding

引數

  • images (PIL.Image.Image, list[PIL.Image.Image]) — 要準備的影像或一批影像。每個影像可以是 PIL 影像、NumPy 陣列或 PyTorch 張量。支援通道優先(channels-first)和通道置後(channels-last)格式。
  • text (str, list[str]) — 要編碼的序列或一批序列。每個序列可以是一個字串或一個字串列表(預分詞的字串)。如果序列以字串列表的形式提供(預分詞),則必須設定 is_split_into_words=True(以消除與一批序列的歧義)。

返回

FuyuBatchEncoding

一個具有以下欄位的 `FuyuBatchEncoding`:

  • input_ids — 要饋送給模型的詞元 ID 張量。當 `text` 不為 `None` 時返回。
  • image_patches — 影像塊張量的列表。當 `images` 不為 `None` 時返回。
  • image_patches_indices — 模型需要插入影像塊嵌入位置的索引張量。
  • attention_mask — 當 `return_attention_mask=True` 時,指定模型應關注哪些詞元的索引列表。

為模型準備一個或多個序列和影像的主要方法。如果 `text` 不為 `None`,此方法會將 `text` 和 `kwargs` 引數轉發給 LlamaTokenizerFast 的 call() 方法以編碼文字。如果 `images` 不為 `None`,此方法會為準備影像將 `images` 和 `kwargs` 引數轉發給 FuyuImageProcessor 的 call() 方法。請參閱上述兩個方法的文件字串以獲取更多資訊。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.