Transformers documentation
EmbeddingGemma2
이 모델은 2026-10-06에 Hugging Face Transformers에 기여되었습니다.
EmbeddingGemma2
개요
EmbeddingGemma 2는 Gemma 4 아키텍처를 기반으로 Google이 개발한 멀티모달 임베딩 모델입니다. 텍스트, 이미지, 오디오, 비디오를 개별적으로 또는 동일한 입력 내에서 조합하여 768차원 밀집 벡터 공간으로 인코딩하며, 이를 통해 크로스모달 검색, 의미적 유사도, 클러스터링, 분류 작업을 수행합니다.
주요 기능:
- 통합 멀티모달 벡터 공간. 비전(Gemma4VisionModel) 및 오디오(Gemma4AudioModel) 타워는 Per-Layer Embeddings(PLE)를 사용하여 전체 어텐션과 슬라이딩 윈도우 어텐션을 교차 적용하는 양방향 텍스트 인코더(EmbeddingGemma2TextModel)로 투영됩니다. 단일 모달리티(
text,image,audio,video) 또는 모달리티 조합(image + text,text + audio,image + audio, 여러 이미지, 텍스트와 미디어의 교차 배치)은 모두 하나의 비교 가능한 임베딩으로 매핑됩니다. - Matryoshka Representation Learning (MRL). EmbeddingGemma2Model은 선형 헤드를 통해
embedding_dim(768)으로 투영된 토큰 표현을 출력합니다. 임베딩은 더 작은 접두사(512,256, 또는128)로 잘라서 재정규화할 수 있으며, 이때 품질 저하는 거의 없습니다. - 설정 가능한 시각 및 비디오 예산. EmbeddingGemma2Processor를 사용하면 이미지 또는 프레임당 소프트 토큰 예산(
{70, 140, 280, 560, 1120}의max_soft_tokens)과 비디오 샘플링 속도(기본값fps=1,max_frames=32,overflow_strategy="uniform",add_timestamps=False)를 조정할 수 있습니다. - 선택적 모달리티 타워 로딩. 사용하지 않는 비전 또는 오디오 타워는 로딩 시(
vision_config=None,audio_config=None) 비활성화하여 텍스트 전용 또는 단일 모달리티 배포 시 메모리 사용량을 줄일 수 있습니다.
모든 원본 EmbeddingGemma 체크포인트는 EmbeddingGemma 컬렉션에서 찾을 수 있습니다. 아래 예제는 google/embeddinggemma-2 식별자를 사용합니다.
사용 예시
문장 또는 멀티모달 임베딩은 두 단계로 생성됩니다. last_hidden_state의 패딩되지 않은 토큰에 대해 마스크 인식 평균 풀링을 수행한 후, float32에서 L2 정규화를 적용합니다. Sentence Transformers(>=6.1.0)는 전처리, 프롬프트 포맷팅, 평균 풀링, 정규화를 자동으로 수행하며 권장되는 진입점입니다. AutoModel을 사용하는 경우 processor.apply_chat_template(일반 텍스트의 경우 AutoTokenizer)를 사용하고 last_hidden_state를 직접 풀링합니다.
텍스트 검색 ( encode_query / encode_document )
pip install -U sentence-transformers
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("google/embeddinggemma-2")
queries = ["Which planet is known as the Red Planet?"]
documents = [
"Venus is often called Earth's twin because of its similar size and proximity.",
"Mars, known for its reddish appearance, is often referred to as the Red Planet.",
]
# encode_query and encode_document apply the "query" and "document" task prompts
query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents)
print(query_embeddings.shape, document_embeddings.shape)
# (1, 768) (2, 768)
# (1, 2) matrix of cosine similarities
print(model.similarity(query_embeddings, document_embeddings))import torch
import torch.nn.functional as F
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained("google/embeddinggemma-2", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("google/embeddinggemma-2")
# Prepend the task prompt directly to plain text inputs (see Task prompts below)
sentences = [
"task: search result | query: Which planet is known as the Red Planet?",
"title: none | text: Venus is often called Earth's twin because of its similar size and proximity.",
"title: none | text: Mars, known for its reddish appearance, is often referred to as the Red Planet.",
]
inputs = tokenizer(sentences, padding=True, return_tensors="pt").to(model.device)
with torch.no_grad():
# (batch_size, sequence_length, config.text_config.embedding_dim)
token_embeddings = model(**inputs).last_hidden_state
# Mask-aware mean pooling over non-padded tokens, then L2 normalization in float32
mask = inputs["attention_mask"].unsqueeze(-1).to(token_embeddings.dtype)
sentence_embeddings = (token_embeddings * mask).sum(dim=1) / mask.sum(dim=1).clamp(min=1e-9)
sentence_embeddings = F.normalize(sentence_embeddings.float(), p=2, dim=-1)
query_embedding, document_embeddings = sentence_embeddings[:1], sentence_embeddings[1:]
print(query_embedding @ document_embeddings.T)작업 프롬프트
모델은 입력 앞에 선택적으로 추가되는 작업 프롬프트를 지원하며(평균 풀링에도 포함됨), 프롬프트는 필수 사항이 아니므로 프롬프트 없이도 모델이 동작합니다. 최적의 설정은 하위 도메인과 모달리티 조합에 따라 달라지므로, 특정 작업에서 프롬프트 사용 여부에 따라 모두 평가하는 것을 권장합니다. Sentence Transformers는 아래 카탈로그를 config_sentence_transformers.json에 포함하므로, prompt_name을 전달하거나 query와 document에 매핑되는 encode_query / encode_document를 사용하세요. AutoModel을 사용하는 경우, 프롬프트를 apply_chat_template의 system 메시지로 전달하거나(또는 일반 텍스트 앞에 추가하세요).
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("google/embeddinggemma-2")
embeddings = model.encode("How to train a neural network", prompt_name="Classification")prompt_name | prompt |
|---|---|
query, Retrieval-query, Retrieval, Reranking, BitextMining, SearchQuery | task: search result \| query: |
document, Document, Retrieval-document | title: none \| text: |
Classification, MultilabelClassification | task: classification \| query: |
Clustering | task: clustering \| query: |
CodeRetrieval, InstructionRetrieval | task: code retrieval \| query: |
FactChecking | task: fact checking \| query: |
QuestionAnswering | task: question answering \| query: |
STS, SentenceSimilarity, PairClassification, Summarization | task: sentence similarity \| query: |
Matryoshka 임베딩
Embedding head는 Matryoshka Representation Learning으로 학습되므로, 768차원 임베딩을 더 짧은 접두사(512, 256, 또는 128)로 잘라서 다시 정규화할 수 있습니다. 이를 통해 인덱스 크기를 줄이고 검색 속도를 높이는 동시에 랭킹 품질을 크게 유지할 수 있습니다. 쿼리와 문서를 동일한 차원으로 잘라야 하며, 슬라이싱 후에는 항상 정규화해야 합니다. Sentence Transformers에서 truncate_dim은 이미 정규화된 출력을 슬라이싱하므로, 접두사는 더 이상 단위 길이가 아닙니다.
import torch.nn.functional as F
from sentence_transformers import SentenceTransformer
# truncate_dim can also be set once at load time: SentenceTransformer(..., truncate_dim=256)
model = SentenceTransformer("google/embeddinggemma-2")
queries = ["Which planet is known as the Red Planet?"]
documents = [
"Venus is often called Earth's twin because of its similar size and proximity.",
"Mars, known for its reddish appearance, is often referred to as the Red Planet.",
]
query_embeddings = model.encode_query(queries, truncate_dim=256, convert_to_tensor=True)
document_embeddings = model.encode_document(documents, truncate_dim=256, convert_to_tensor=True)
query_embeddings = F.normalize(query_embeddings.float(), p=2, dim=-1)
document_embeddings = F.normalize(document_embeddings.float(), p=2, dim=-1)
# (1, 256) and (2, 256): a 3x smaller index than the full 768 dimensions
print(query_embeddings.shape, document_embeddings.shape)
# the Mars document still ranks first
print(model.similarity(query_embeddings, document_embeddings))import torch
import torch.nn.functional as F
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained("google/embeddinggemma-2", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("google/embeddinggemma-2")
sentences = [
"task: search result | query: Which planet is known as the Red Planet?",
"title: none | text: Venus is often called Earth's twin because of its similar size and proximity.",
"title: none | text: Mars, known for its reddish appearance, is often referred to as the Red Planet.",
]
inputs = tokenizer(sentences, padding=True, return_tensors="pt").to(model.device)
with torch.no_grad():
token_embeddings = model(**inputs).last_hidden_state
mask = inputs["attention_mask"].unsqueeze(-1).to(token_embeddings.dtype)
sentence_embeddings = (token_embeddings * mask).sum(dim=1) / mask.sum(dim=1).clamp(min=1e-9)
# Slice to the first 256 dimensions, then normalize
sentence_embeddings = F.normalize(sentence_embeddings[:, :256].float(), p=2, dim=-1)
print(sentence_embeddings.shape)
# torch.Size([3, 256])
query_embedding, document_embeddings = sentence_embeddings[:1], sentence_embeddings[1:]
# the Mars document still ranks first
print(query_embedding @ document_embeddings.T)멀티모달 임베딩
텍스트, 이미지, 오디오, 비디오는 모두 동일한 768차원 벡터 공간으로 매핑되어 크로스 모달 검색(예: 텍스트 쿼리로 이미지, 오디오 또는 비디오 검색)와 구성형 멀티모달 검색(여러 모달리티를 단일 쿼리 또는 문서 임베딩으로 결합)를 지원합니다.
Sentence Transformers에서 멀티모달 입력은 "text", "image", "audio", "video"를 키로 하는 딕셔너리로 전달됩니다(각 값은 단일 항목 또는 항목 목록일 수 있습니다). AutoModel을 사용할 때는 채팅 스타일의 메시지 목록을 processor.apply_chat_template(..., tokenize=True, return_dict=True, return_tensors="pt")에 전달합니다.
1. 단일 모달리티 & 크로스 모달리티 검색
각 모달리티(text, image, audio, video)는 각각 독립적으로 임베딩되며, 코사인 유사도를 통해 다른 어떤 모달리티와도 직접 비교할 수 있습니다:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("google/embeddinggemma-2")
IMAGE = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
# Embed each modality on its own into the shared (768,) space
candidates = model.encode(
[
{"text": "A photo of a cat"},
{"image": IMAGE},
{"audio": "path/to/audio.wav"},
{"video": "path/to/video.mp4"},
]
)
print(candidates.shape)
# (4, 768)
# Cross-modal retrieval: rank text, image, audio, and video candidates against a text query
query = model.encode_query(["A fluffy cat outdoors"])
print(model.similarity(query, candidates))
# tensor([[...]]) of shape (1, 4)import torch
import torch.nn.functional as F
from transformers import AutoModel, AutoProcessor
model = AutoModel.from_pretrained("google/embeddinggemma-2", device_map="auto")
processor = AutoProcessor.from_pretrained("google/embeddinggemma-2")
IMAGE = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
conversations = [
[{"role": "user", "content": [{"type": "text", "text": "A photo of a cat"}]}],
[{"role": "user", "content": [{"type": "image", "url": IMAGE}]}],
[{"role": "user", "content": [{"type": "audio", "url": "path/to/audio.wav"}]}],
[{"role": "user", "content": [{"type": "video", "url": "path/to/video.mp4"}]}],
]
inputs = processor.apply_chat_template(
conversations,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
with torch.no_grad():
token_embeddings = model(**inputs).last_hidden_state
mask = inputs["attention_mask"].unsqueeze(-1).to(token_embeddings.dtype)
embeddings = (token_embeddings * mask).sum(dim=1) / mask.sum(dim=1).clamp(min=1e-9)
embeddings = F.normalize(embeddings.float(), p=2, dim=-1)
print(embeddings.shape)
# torch.Size([4, 768])2. 복합 멀티모달 임베딩(하나의 입력에 여러 모달리티 포함)
여러 모달리티, 또는 동일한 모달리티의 여러 항목을 단일 결합 임베딩으로 결합할 수 있으며, image + audio와 같은 순수 비텍스트 조합도 포함됩니다:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("google/embeddinggemma-2")
IMAGE_1 = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
IMAGE_2 = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/coco_sample.png"
composed_embeddings = model.encode(
[
# text + image
{"text": "A photo of a cat", "image": IMAGE_1},
# text + audio
{"text": "A song", "audio": "path/to/audio.wav"},
# image + audio (no text required)
{"image": IMAGE_1, "audio": "path/to/audio.wav"},
# multiple images + audio + text in one embedding
{"image": [IMAGE_1, IMAGE_2], "audio": "path/to/audio.wav", "text": "Compare both cats"},
]
)
print(composed_embeddings.shape)
# (4, 768)import torch
import torch.nn.functional as F
from transformers import AutoModel, AutoProcessor
model = AutoModel.from_pretrained("google/embeddinggemma-2", device_map="auto")
processor = AutoProcessor.from_pretrained("google/embeddinggemma-2")
IMAGE = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
conversations = [
# text + image
[
{
"role": "user",
"content": [
{"type": "text", "text": "A photo of a cat"},
{"type": "image", "url": IMAGE},
],
}
],
# text + audio
[
{
"role": "user",
"content": [
{"type": "text", "text": "A song"},
{"type": "audio", "url": "path/to/audio.wav"},
],
}
],
# image + audio (no text required)
[
{
"role": "user",
"content": [
{"type": "image", "url": IMAGE},
{"type": "audio", "url": "path/to/audio.wav"},
],
}
],
]
inputs = processor.apply_chat_template(
conversations,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
with torch.no_grad():
token_embeddings = model(**inputs).last_hidden_state
mask = inputs["attention_mask"].unsqueeze(-1).to(token_embeddings.dtype)
embeddings = (token_embeddings * mask).sum(dim=1) / mask.sum(dim=1).clamp(min=1e-9)
embeddings = F.normalize(embeddings.float(), p=2, dim=-1)
print(embeddings.shape)
# torch.Size([3, 768])3. 자동 순서 지정과 수동 플레이스홀더
텍스트에 플레이스홀더 토큰(<|image|>, <|video|>, <|audio|>)이 나타나지 않는 경우, 모달리티는 사전 또는 채팅 메시지의 content에 항목이 나타나는 순서대로 정확히 출력됩니다(system 작업 프롬프트 바로 다음).
문장 내 특정 위치에 텍스트와 미디어를 교차 배치하려면 <|image|>, <|video|>, 또는 <|audio|>를 텍스트에 직접 작성합니다. 이렇게 하면 해당 입력에 대한 자동 플레이스홀더 삽입이 비활성화되며, 각 플레이스홀더는 제공된 미디어 항목 순서대로 확장됩니다.
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("google/embeddinggemma-2")
IMAGE_1 = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
IMAGE_2 = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/coco_sample.png"
# 1. Automatic ordering: follows the dictionary's key order
# -> <bos> [prompt] <image_tokens> <text_tokens> <eos>
image_first = model.encode({"image": IMAGE_1, "text": "A photo of a cat"}, prompt_name="document")
# -> <bos> [prompt] <text_tokens> <image_tokens> <eos>
text_first = model.encode({"text": "A photo of a cat", "image": IMAGE_1}, prompt_name="document")
# 2. Manual placeholders: interleave media at exact positions in the text
# No extra placeholders are inserted; counts must match the passed media inputs.
interleaved = model.encode(
{
"text": "A jacket similar to <|image|> or <|image|> featured in <|audio|>",
"image": [IMAGE_1, IMAGE_2],
"audio": "path/to/audio.wav",
},
prompt_name="query",
)import torch
import torch.nn.functional as F
from transformers import AutoModel, AutoProcessor
model = AutoModel.from_pretrained("google/embeddinggemma-2", device_map="auto")
processor = AutoProcessor.from_pretrained("google/embeddinggemma-2")
IMAGE_1 = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
IMAGE_2 = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/coco_sample.png"
# 1. Automatic ordering: follows the content list order after any system prompt
image_first_messages = [
{"role": "system", "content": "title: none | text: "},
{
"role": "user",
"content": [
{"type": "image", "url": IMAGE_1},
{"type": "text", "text": "A photo of a cat"},
],
},
]
# 2. Manual placeholders: interleave media at exact positions in the text
interleaved_messages = [
{"role": "system", "content": "task: search result | query: "},
{
"role": "user",
"content": [
{"type": "image", "url": IMAGE_1},
{"type": "image", "url": IMAGE_2},
{"type": "audio", "url": "path/to/audio.wav"},
{"type": "text", "text": "A jacket similar to <|image|> or <|image|> featured in <|audio|>"},
],
},
]
inputs = processor.apply_chat_template(
[image_first_messages, interleaved_messages],
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
with torch.no_grad():
token_embeddings = model(**inputs).last_hidden_state
mask = inputs["attention_mask"].unsqueeze(-1).to(token_embeddings.dtype)
embeddings = (token_embeddings * mask).sum(dim=1) / mask.sum(dim=1).clamp(min=1e-9)
embeddings = F.normalize(embeddings.float(), p=2, dim=-1)4. 이질적(혼합 모달리티) 배치
단일 배치는 일반 텍스트, 단일 모달리티 미디어, 멀티모달리티 입력을 하나의 forward pass에서 혼합할 수 있으며, 각 항목을 개별적으로 인코딩했을 때와 동일한 행별 임베딩을 생성합니다:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("google/embeddinggemma-2")
IMAGE = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
embeddings = model.encode(
[
"A photo of a cat",
{"image": IMAGE},
{"text": "A photo of a cat", "image": IMAGE},
{"audio": "path/to/audio.wav"},
],
prompt_name="document",
)
print(embeddings.shape)
# (4, 768)import torch
import torch.nn.functional as F
from transformers import AutoModel, AutoProcessor
model = AutoModel.from_pretrained("google/embeddinggemma-2", device_map="auto")
processor = AutoProcessor.from_pretrained("google/embeddinggemma-2")
IMAGE = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
conversations = [
[
{"role": "system", "content": "title: none | text: "},
{"role": "user", "content": [{"type": "text", "text": "A photo of a cat"}]},
],
[
{"role": "system", "content": "title: none | text: "},
{"role": "user", "content": [{"type": "image", "url": IMAGE}]},
],
[
{"role": "system", "content": "title: none | text: "},
{
"role": "user",
"content": [
{"type": "text", "text": "A photo of a cat"},
{"type": "image", "url": IMAGE},
],
},
],
[
{"role": "system", "content": "title: none | text: "},
{"role": "user", "content": [{"type": "audio", "url": "path/to/audio.wav"}]},
],
]
inputs = processor.apply_chat_template(
conversations,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
with torch.no_grad():
token_embeddings = model(**inputs).last_hidden_state
mask = inputs["attention_mask"].unsqueeze(-1).to(token_embeddings.dtype)
embeddings = (token_embeddings * mask).sum(dim=1) / mask.sum(dim=1).clamp(min=1e-9)
embeddings = F.normalize(embeddings.float(), p=2, dim=-1)
print(embeddings.shape)
# torch.Size([4, 768])5. 사용하지 않는 모달리티 타워 비활성화(메모리 최적화)
워크로드가 모달리티의 일부만 임베딩하는 경우(예: 오디오 없이 텍스트만 또는 텍스트 + 이미지), 설정에서 vision_config=None 및/또는 audio_config=None을 설정하여 사용하지 않는 비전 또는 오디오 타워의 인스턴스화와 로딩을 건너뛸 수 있습니다. 체크포인트에 있는 사용하지 않는 타워의 가중치는 경고 없이 깔끔하게 무시되며, 오디오 타워가 없는 경우 모델이 744M에서 439M 파라미터로, 두 타워 모두 없는 경우 271M 파라미터로 줄어듭니다.
이 값들은 model_kwargs가 아니라 config_kwargs(AutoConfig.from_pretrained로 전달됨)를 통해 전달하세요:
from sentence_transformers import SentenceTransformer
# Text-only deployment (skips both vision and audio towers)
text_model = SentenceTransformer(
"google/embeddinggemma-2",
config_kwargs={"vision_config": None, "audio_config": None},
)
# Vision + text deployment (skips audio tower)
vision_text_model = SentenceTransformer(
"google/embeddinggemma-2",
config_kwargs={"audio_config": None},
)from transformers import AutoModel
# Text-only deployment (skips both vision and audio towers)
text_model = AutoModel.from_pretrained(
"google/embeddinggemma-2",
vision_config=None,
audio_config=None,
device_map="auto",
)
# Vision + text deployment (skips audio tower)
vision_text_model = AutoModel.from_pretrained(
"google/embeddinggemma-2",
audio_config=None,
device_map="auto",
)프로세서
EmbeddingGemma2Processor는 토크나이저, 이미지 프로세서, 오디오 특징 추출기, 비디오 프로세서를 함께 제공합니다.
배치된 멀티모달 입력의 경우, Sentence Transformers를 통해 샘플별 딕셔너리를 전달하는 것을 권장합니다(
model.encode([{"image": ..., "text": ...}, ...])). 정확한 모달리티 순서와 교차 배치에 대한 최대의 제어가 필요할 경우,text에<|image|>,<|video|>,<|audio|>플레이스홀더를 수동으로 포함하세요.
시각 토큰 예산 제어(max_soft_tokens)
소프트 토큰 예산(max_soft_tokens, 지원 값 {70, 140, 280, 560, 1120})은 이미지 또는 비디오 프레임마다 생성되는 시각 토큰의 해상도와 수를 제어합니다(기본값은 이미지당 280, 비디오 프레임당 140). 값이 낮을수록 시퀀스 길이와 지연 시간이 줄어듭니다:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("google/embeddinggemma-2")
IMAGE = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
image_embedding = model.encode(
{"image": IMAGE},
processing_kwargs={"image": {"max_soft_tokens": 70}},
)from transformers import AutoProcessor
processor = AutoProcessor.from_pretrained("google/embeddinggemma-2")
IMAGE = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
inputs = processor(images=[IMAGE], max_soft_tokens=70, return_tensors="pt")
print(inputs["input_ids"].shape, inputs["pixel_values"].shape)
# torch.Size([1, 67]) torch.Size([1, 630, 768])Video frame sampling controls
기본적으로 EmbeddingGemma2VideoProcessor는 1 FPS(fps=1)로 프레임을 샘플링하고, 각 클립을 32프레임(max_frames=32, overflow_strategy="uniform")으로 제한하며, 프롬프트에서 프레임 타임스탬프를 생략합니다(add_timestamps=False). 각 매개변수는 호출별로 재정의할 수 있습니다:
fps(int | float | None): 초당 프레임 수(fps) 기준의 목표 샘플링 속도입니다. 유효한fps와duration가 포함된VideoMetadata가 필요합니다(비디오 파일/URL에서 디코딩할 때 자동으로 설정됨). 메타데이터가 없는 미리 디코딩된 프레임 배열의 경우, FPS 샘플링은 경고와 함께 건너뛰고max_frames가 직접 적용됩니다.max_frames(int | None): 비디오당 유지되는 최대 프레임 수.overflow_strategy("uniform" | "truncate" | None):max_frames를 초과하는 프레임이 어떻게 줄어드는지 지정합니다. ("uniform"은 클립 전체에 걸쳐 균일하게 재샘플링하고,"truncate"는 앞부분의max_frames개 프레임을 유지합니다.)add_timestamps(bool): 각 프레임의 soft-token 블록 앞에mm:ss타임스탬프를 붙일지 여부입니다.fps와 달리 폴백이 없습니다. 메타데이터에fps가 없는 비디오에서add_timestamps=True를 설정하면 예외가 발생하며, 이는 추측된 프레임 레이트를 사용하면 프롬프트에 잘못된mm:ss라벨이 기록되기 때문입니다.
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("google/embeddinggemma-2")
video_embedding = model.encode(
{"video": "path/to/video.mp4"},
processing_kwargs={"video": {"add_timestamps": True, "fps": 2, "max_frames": 16, "overflow_strategy": "truncate"}},
)from transformers import AutoProcessor
processor = AutoProcessor.from_pretrained("google/embeddinggemma-2")
inputs = processor(
videos=["path/to/video.mp4"],
add_timestamps=True,
fps=2,
max_frames=16,
overflow_strategy="truncate",
return_tensors="pt",
)chat template 없이 processor(...)를 직접 호출
processor.apply_chat_template가 멀티모달 대화의 주요 진입점이지만, processor(...)를 직접 호출할 수도 있습니다. text가 생략된 경우(text=None), 배치의 각 샘플에 대해 <|image|>, <|video|>, <|audio|> 플레이스홀더가 자동으로 생성됩니다.
from transformers import AutoProcessor
processor = AutoProcessor.from_pretrained("google/embeddinggemma-2")
IMAGE = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
AUDIO = "path/to/audio.wav" # a path, a URL, or a 1-D float array sampled at 16 kHz
# Text only
inputs = processor(text=["task: search result | query: Which planet is the Red Planet?"], return_tensors="pt")
# Media only (text=None): placeholders are synthesized per sample
inputs = processor(images=[IMAGE], return_tensors="pt")
inputs = processor(videos=["path/to/video.mp4"], return_tensors="pt")
inputs = processor(audio=[AUDIO], return_tensors="pt")
# Nested per-sample lists or combined modalities with text=None
inputs = processor(
images=[[IMAGE, IMAGE], [IMAGE]],
audio=[[AUDIO], [AUDIO, AUDIO]],
return_tensors="pt",
)
# Manual placeholders in text for direct processor calls
inputs = processor(text=["<|image|> a photo of a cat"], images=[[IMAGE]], return_tensors="pt")
print(list(inputs.keys()))
# ['input_ids', 'attention_mask', 'pixel_values', 'image_position_ids']EmbeddingGemma2TextConfig
클래스 transformers.EmbeddingGemma2TextConfig
< 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 = Nonevocab_size: int = 262144hidden_size: int = 512intermediate_size: int = 2048num_hidden_layers: int = 24num_attention_heads: int = 4num_key_value_heads: int = 2head_dim: int = 256hidden_activation: str = 'gelu_pytorch_tanh'max_position_embeddings: int = 262144initializer_range: float = 0.02rms_norm_eps: float = 1e-06pad_token_id: int | None = 0eos_token_id: int | list[int] | None = 1bos_token_id: int | None = 2rope_parameters: dict | None = Noneattention_bias: bool = Falseattention_dropout: int | float | None = 0.0sliding_window: int = 512layer_types: list[str] | None = Nonehidden_size_per_layer_input: int = 512embedding_dim: int = 768 )
매개변수
- vocab_size (
int, 선택 사항, 기본값262144) — 모델의 어휘 크기입니다.input_ids로 표현할 수 있는 서로 다른 토큰의 수를 정의합니다. - hidden_size (
int, 선택 사항, 기본값512) — 숨겨진 표현의 차원입니다. - intermediate_size (
int, 선택 사항, 기본값2048) — MLP 표현의 차원입니다. - num_hidden_layers (
int, 선택 사항, 기본값24) — Transformer decoder의 숨겨진 레이어 수. - num_attention_heads (
int, 선택 사항, 기본값4) — Transformer decoder의 각 attention layer에 사용할 attention head의 수입니다. - num_key_value_heads (
int, 선택 사항, 기본값2) — Grouped Query Attention 구현에 사용할 key_value 헤드 수입니다.num_key_value_heads=num_attention_heads인 경우 모델은 Multi Head Attention(MHA)을 사용하고,num_key_value_heads=1인 경우 모델은 Multi Query Attention(MQA)을 사용하며, 그 외에는 GQA가 사용됩니다. 멀티 헤드 체크포인트를 GQA 체크포인트로 변환할 때, 각 그룹의 key 및 value 헤드는 해당 그룹 내 모든 원래 헤드를 meanpooling하여 구성해야 합니다. 자세한 내용은 이 논문을 참고하세요. 지정되지 않으면num_attention_heads가 기본값으로 사용됩니다. - head_dim (
int, 선택 사항, 기본값256) — Attention head의 차원입니다. None인 경우 hidden_size // num_attention_heads가 기본값으로 사용됩니다. - hidden_activation (
str, 선택 사항, 기본값gelu_pytorch_tanh) — 디코더에서 사용되는 비선형 활성화 함수(함수 또는 문자열)입니다. 예를 들어,"gelu","relu","silu"등이 있습니다. - max_position_embeddings (
int, 선택 사항, 기본값262144) — 이 모델이 사용될 수 있는 최대 시퀀스 길이입니다. - initializer_range (
float, 선택 사항, 기본값0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다. - rms_norm_eps (
float, 선택 사항, 기본값1e-06) — rms 정규화 레이어에서 사용되는 epsilon 값입니다. - pad_token_id (
int, 선택 사항, 기본값0) — 어휘에서 패딩에 사용되는 토큰 ID입니다. - eos_token_id (
Union[int, list[int]], 선택 사항, 기본값1) — 어휘에서 스트림 종료에 사용되는 토큰 id입니다. - bos_token_id (
int, 선택 사항, 기본값2) — 어휘에서 스트림 시작에 사용되는 토큰 ID입니다. - rope_parameters (
dict, 선택) — RoPE 임베딩의 구성 매개변수를 포함하는 사전입니다. 사전에는rope_theta값이 포함되어야 하며, 더 긴max_position_embeddings로 RoPE를 사용하려는 경우 스케일링에 사용되는 매개변수를 선택적으로 포함할 수 있습니다. - attention_bias (
bool, 선택 사항, 기본값False) — 자기 주의(self-attention) 시 query, key, value 및 출력 투영 계층에 bias를 사용할지 여부입니다. - attention_dropout (
Union[int, float], 선택 사항, 기본값0.0) — Attention 확률에 적용할 dropout 비율입니다. - sliding_window (
int, 선택 사항, 기본값 512) — 양방향 슬라이딩 윈도우의 포함 반경입니다.sliding_attention레이어는abs(q_idx - kv_idx) <= sliding_window를 만족하는 모든 위치에 주의를 기울입니다. 여기서 마스크가 대칭이므로, 인과적 Gemma 모델이 설정하는 한쪽 방향의 폭이 아니라 반경으로 정의됩니다. 따라서 기본값은 참조 구현에서 명시한 1024 폭 윈도우의 절반입니다. - layer_types (
list[str], 선택 사항) — 각 레이어 인덱스를 해당 레이어 유형에 명시적으로 매핑하는 목록입니다. 제공되지 않으면 config 값에 기반하여 자동으로 생성됩니다. - hidden_size_per_layer_input (
int, 선택 사항, 기본값 512) — 레이어별(PLE) 잔차 신호의 차원입니다. EmbeddingGemma 2는 투사 전용 PLE를 사용하며, 이 신호는inputs_embeds에서만 유도되고 보조 토큰 조회 테이블은 없습니다. - embedding_dim (
int, 선택 사항, 기본값 768) —embedding_projection가 생성하는 문장 임베딩의 차원입니다.
이것은 EmbeddingGemma2Model의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인자에 따라 Embedding Gemma2 모델을 인스턴스화하고 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 인스턴스화하면 google/embeddinggemma-2와 유사한 설정이 생성됩니다.
Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.
EmbeddingGemma2Config
클래스 transformers.EmbeddingGemma2Config
< 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 = Nonetext_config: transformers.models.embedding_gemma2.configuration_embedding_gemma2.EmbeddingGemma2TextConfig | dict[str, typing.Any] | None = Nonevision_config: transformers.configuration_utils.PreTrainedConfig | dict[str, typing.Any] | None = Noneaudio_config: transformers.configuration_utils.PreTrainedConfig | dict[str, typing.Any] | None = Noneboi_token_id: int | None = 255999eoi_token_id: int | None = 258882image_token_id: int | None = 258880video_token_id: int | None = 258884boa_token_id: int | None = 256000eoa_token_index: int | None = 258883audio_token_id: int | None = 258881initializer_range: float | None = 0.02 )
매개변수
- text_config (
EmbeddingGemma2TextConfig, 선택) — 텍스트 백본의 설정입니다. - vision_config (
PreTrainedConfig또는dict, 선택) — 비전 타워의 구성입니다. Gemma 4에서 그대로 재사용되며, 타워 자체는 런타임에AutoModel을 통해 해석됩니다. - audio_config (
PreTrainedConfig또는dict, 선택) — 오디오 타워의 설정입니다. Gemma 4에서 그대로 재사용되며, 타워 자체는 런타임에AutoModel을 통해 해석됩니다. - boi_token_id (
int, 선택 사항, 기본값 255999) — 이미지 프롬프트를 감싸기 위한 begin-of-image 토큰 인덱스입니다. - eoi_token_id (
int, 선택 사항, 기본값 258882) — 이미지 프롬프트를 감싸기 위한 end-of-image 토큰 인덱스입니다. - image_token_id (
int, 선택 사항, 기본값258880) — 입력 이미지의 자리표시자로 사용되는 이미지 토큰 인덱스입니다. - video_token_id (
int, 선택 사항, 기본값258884) — 입력 비디오의 플레이스홀더로 사용되는 비디오 토큰 인덱스입니다. - boa_token_id (
int, 선택 사항, 기본값 256000) — 오디오 프롬프트를 감싸기 위한 begin-of-audio 토큰 인덱스입니다. - eoa_token_index (
int, 선택 사항, 기본값 258883) — 오디오 프롬프트를 감싸기 위한 end-of-audio 토큰 인덱스입니다. - audio_token_id (
int, 선택 사항, 기본값258881) — 입력 오디오의 자리 표시자로 사용되는 오디오 토큰 인덱스입니다. - initializer_range (
float, 선택 사항, 기본값0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다.
이것은 EmbeddingGemma2Model의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인자에 따라 Embedding Gemma2 모델을 인스턴스화하고 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 인스턴스화하면 google/embeddinggemma-2와 유사한 설정이 생성됩니다.
Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.
EmbeddingGemma2VideoProcessor
class transformers.EmbeddingGemma2VideoProcessor
< source >( **kwargs: *<class 'transformers.models.embedding_gemma2.video_processing_embedding_gemma2.EmbeddingGemma2VideoProcessorKwargs'> )
매개변수
- do_convert_rgb (
bool, kwargs, 선택 사항, 기본값True) — 이미지를 RGB로 변환할지 여부. - do_resize (
bool, kwargs, 선택 사항, 기본값True) — 이미지를 리사이즈할지 여부. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, 기본값None) — 모델의 최대 입력 차원을 설명합니다. - default_to_square (
bool, kwargs, 선택 사항, 기본값True) — size가 int인 경우 리사이즈 시 정사각형 이미지로 기본 설정할지 여부입니다. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, 기본값3) — 이미지를 리사이즈할 때 사용할 리샘플링 필터입니다.PILImageResamplingenum 중 하나를 사용할 수 있습니다.do_resize가True로 설정된 경우에만 효과가 있습니다. - do_rescale (
bool, kwargs, 선택, 기본값True) — 이미지를 다시 스케일링할지 여부. - rescale_factor (
float, kwargs, 선택 사항, 기본값0.00392156862745098) —do_rescale이True로 설정된 경우 이미지를 재조정(rescale)하는 데 사용할 재조정 계수입니다. - do_normalize (
bool, kwargs, 선택, 기본값True) — 이미지를 정규화할지 여부. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, 선택, 기본값[0.0, 0.0, 0.0]) — 정규화에 사용할 이미지 평균입니다.do_normalize가True로 설정된 경우에만 효과가 있습니다. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, 선택, 기본값[1.0, 1.0, 1.0]) — 정규화에 사용할 이미지 표준 편차입니다.do_normalize가True로 설정된 경우에만 효과가 있습니다. - do_center_crop (
bool, kwargs, 선택) — 이미지를 중앙으로 크롭할지 여부. - do_pad (
bool, kwargs, optional) — 이미지를 패딩할지 여부입니다. 패딩은 배치 내 가장 큰 크기로 수행하거나, 이미지마다 고정된 정사각형 크기로 수행합니다. 정확한 패딩 전략은 모델에 따라 달라집니다. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) —center_crop을 적용한 후 출력 이미지의 크기. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, 선택 사항) —ChannelDimension.FIRST만 지원됩니다. 느린 프로세서와의 호환성을 위해 추가되었습니다. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, 선택 사항) — 입력 이미지의 채널 차원 형식입니다. 설정되지 않으면 입력 이미지에서 채널 차원 형식을 추론합니다. 다음 중 하나일 수 있습니다:"channels_first"또는ChannelDimension.FIRST: (num_channels, height, width) 형식의 이미지."channels_last"또는ChannelDimension.LAST: (height, width, num_channels) 형식의 이미지."none"또는ChannelDimension.NONE: (height, width) 형식의 이미지.
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — 동영상을 처리할 장치입니다. 설정되지 않은 경우, 입력 동영상에서 장치를 추론합니다. - do_sample_frames (
bool, kwargs, 선택 사항, 기본값True) — 처리 전에 비디오에서 프레임을 샘플링할지, 아니면 비디오 전체를 처리할지를 결정합니다. - video_metadata (
Annotated[~video_utils.VideoMetadata | dict | list[dict | ~video_utils.VideoMetadata] | list[list[dict | ~video_utils.VideoMetadata]] | None, None], kwargs) — 총 길이, fps, 총 프레임 수에 대한 정보를 포함하는 비디오의 메타데이터입니다. 비디오에서 프레임을 샘플링하거나 타임스탬프를 계산하는 데 사용됩니다. 비디오를 수동으로 디코딩하여 처리하려는 경우를 제외하고는 메타데이터를 전달하지 마세요. - fps (
Annotated[int | float | None, None], kwargs, 기본값1) —do_sample_frames=True일 때 초당 샘플링할 목표 프레임 수. - num_frames (
Annotated[int | None, None], kwargs) —do_sample_frames=True일 때 샘플링할 최대 프레임 수. - return_metadata (
bool, kwargs, 선택, 기본값False) — 비디오 메타데이터를 반환할지 여부입니다. 비디오 메타데이터는 비디오 길이, fps, 디코딩 백엔드 등에 대한 정보를 포함하는 객체입니다. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — 설정된 경우, 특정 프레임워크의 텐서를 반환합니다. 허용되는 값은 다음과 같습니다:'pt': PyTorchtorch.Tensor객체를 반환합니다.'np': NumPynp.ndarray객체를 반환합니다.
- patch_size (
int, kwargs, 선택 사항) — 픽셀 단위의 각 이미지 패치 크기입니다. - max_soft_tokens (
int, kwargs, 선택) — 비디오 프레임당 최대 소프트(비전) 토큰 수. {70, 140, 280, 560, 1120} 중 하나여야 합니다. - pooling_kernel_size (
int, kwargs, 선택 사항) — 패치화 이후에 적용되는 공간 풀링 커널 크기. - add_timestamps (
bool, kwargs, 선택) — 비디오 플레이스홀더 확장 시 각 프레임 앞에mm:ss타임스탬프를 붙일지 여부. 이미 디코딩된 프레임에서는 타임스탬프를 추론할 수 없으므로, 유효한fps가 포함된VideoMetadata가 필요합니다. - max_frames (
int, kwargs, 선택) — 샘플링할 최대 프레임 수입니다. 설정된 경우, 샘플링된 인덱스는 예산에 맞게 균일하게 재샘플링됩니다. - overflow_strategy (
str, kwargs, optional) — 총 샘플링 프레임 수를 예산에 맞게 줄이기 위해 사용하는 전략입니다. “uniform” 또는 “truncate”로만 설정할 수 있습니다. FPS 기반 샘플링 이후에 적용되며, FPS 기반 샘플링이 꺼져 있거나 적용되지 않는 경우에도 단독으로 적용됩니다. - load_audio_from_video (
bool, kwargs, 선택) — 입력 비디오의 오디오 트랙을 로드할지 여부를 지정합니다. - **kwargs (ProcessingKwargs, 선택) — 각 모달리티(텍스트, 이미지, 비디오, 오디오)에 대한 추가 처리 옵션입니다. 모델별 매개변수는 위에 나열되어 있으며, 지원되는 인수의 전체 목록은 TypedDict 클래스를 참조하세요.
EmbeddingGemma2VideoProcessor 비디오 프로세서를 생성합니다.
preprocess
< source >( videos: typing.Union[list['PIL.Image.Image'], numpy.ndarray, ForwardRef('torch.Tensor'), list[numpy.ndarray], list['torch.Tensor'], list[list['PIL.Image.Image']], list[list[numpy.ndarray]], list[list['torch.Tensor']], transformers.video_utils.URL, list[transformers.video_utils.URL], list[list[transformers.video_utils.URL]], transformers.video_utils.Path, list[transformers.video_utils.Path], list[list[transformers.video_utils.Path]]]**kwargs: *<class 'transformers.models.embedding_gemma2.video_processing_embedding_gemma2.EmbeddingGemma2VideoProcessorKwargs'> ) → ~image_processing_base.BatchFeature
매개변수
- videos (
Union[list[PIL.Image.Image], numpy.ndarray, torch.Tensor, list[numpy.ndarray], list[torch.Tensor], list[list[PIL.Image.Image]], list[list[numpy.ndarray]], list[list[torch.Tensor]], ~video_utils.URL, list[~video_utils.URL], list[list[~video_utils.URL]], ~video_utils.Path, list[~video_utils.Path], list[list[~video_utils.Path]]]) — 전처리할 비디오입니다. 픽셀 값이 0에서 255 범위로 이루어진 단일 비디오 또는 비디오 배치(batch)를 기대합니다. 픽셀 값이 0에서 1 범위로 이루어진 비디오를 전달하는 경우do_rescale=False로 설정하십시오. - do_convert_rgb (
bool, kwargs, 선택 사항) — 이미지를 RGB로 변환할지 여부입니다. - do_resize (
bool, kwargs, 선택) — 이미지를 리사이즈할지 여부. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 모델의 최대 입력 차원을 설명합니다. - default_to_square (
bool, kwargs, 선택 사항) — size가 int인 경우 리사이즈 시 정사각형 이미지로 기본 설정할지 여부. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — 이미지를 리사이즈할 경우 사용할 리샘플링 필터입니다. 이는PILImageResamplingenum 중 하나일 수 있습니다.do_resize가True로 설정된 경우에만 효과가 있습니다. - do_rescale (
bool, kwargs, 선택 사항) — 이미지를 다시 스케일링할지 여부입니다. - rescale_factor (
float, kwargs, optional) —do_rescale이True로 설정된 경우 이미지를 리스케일하기 위한 리스케일 팩터입니다. - do_normalize (
bool, kwargs, optional) — 이미지를 정규화할지 여부. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, 선택) — 정규화에 사용할 이미지 평균입니다.do_normalize가True로 설정된 경우에만 효과가 있습니다. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, 선택) — 정규화에 사용할 이미지 표준 편차.do_normalize가True로 설정된 경우에만 효과가 있습니다. - do_center_crop (
bool, kwargs, 선택) — 이미지를 중앙으로 크롭할지 여부. - do_pad (
bool, kwargs, optional) — 이미지를 패딩할지 여부입니다. 패딩은 배치 내 가장 큰 크기로 수행하거나, 이미지마다 고정된 정사각형 크기로 수행합니다. 정확한 패딩 전략은 모델에 따라 달라집니다. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) —center_crop을 적용한 후 출력 이미지의 크기. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, 선택 사항) —ChannelDimension.FIRST만 지원됩니다. 느린 프로세서와의 호환성을 위해 추가되었습니다. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, 선택 사항) — 입력 이미지의 채널 차원 형식입니다. 설정되지 않으면 입력 이미지에서 채널 차원 형식을 추론합니다. 다음 중 하나일 수 있습니다:"channels_first"또는ChannelDimension.FIRST: (num_channels, height, width) 형식의 이미지."channels_last"또는ChannelDimension.LAST: (height, width, num_channels) 형식의 이미지."none"또는ChannelDimension.NONE: (height, width) 형식의 이미지.
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — 동영상을 처리할 장치입니다. 설정되지 않은 경우, 입력 동영상에서 장치를 추론합니다. - do_sample_frames (
bool, kwargs, 선택) — 처리 전에 비디오에서 프레임을 샘플링할지, 아니면 비디오 전체를 처리할지 여부를 지정합니다. - video_metadata (
Annotated[~video_utils.VideoMetadata | dict | list[dict | ~video_utils.VideoMetadata] | list[list[dict | ~video_utils.VideoMetadata]] | None, None], kwargs) — 총 길이, fps, 총 프레임 수에 대한 정보를 포함하는 비디오의 메타데이터입니다. 비디오에서 프레임을 샘플링하거나 타임스탬프를 계산하는 데 사용됩니다. 비디오를 수동으로 디코딩하여 처리하려는 경우를 제외하고는 메타데이터를 전달하지 마세요. - fps (
Annotated[int | float | None, None], kwargs) —do_sample_frames=True인 경우 초당 샘플링할 대상 프레임 수. - num_frames (
Annotated[int | None, None], kwargs) —do_sample_frames=True일 때 샘플링할 최대 프레임 수. - return_metadata (
bool, kwargs, 선택) — 비디오 메타데이터를 반환할지 여부를 지정합니다. 비디오 메타데이터는 비디오 길이, fps, 디코딩 백엔드 등에 대한 정보를 포함하는 객체입니다. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) —'pt'로 설정된 경우 스택된 텐서를 반환하고, 그렇지 않으면 텐서 목록을 반환합니다. - patch_size (
int, kwargs, 선택 사항) — 픽셀 단위의 각 이미지 패치 크기입니다. - max_soft_tokens (
int, kwargs, 선택) — 비디오 프레임당 최대 소프트(비전) 토큰 수. {70, 140, 280, 560, 1120} 중 하나여야 합니다. - pooling_kernel_size (
int, kwargs, 선택 사항) — 패치화 이후에 적용되는 공간 풀링 커널 크기. - add_timestamps (
bool, kwargs, 선택) — 비디오 플레이스홀더 확장 시 각 프레임 앞에mm:ss타임스탬프를 붙일지 여부. 이미 디코딩된 프레임에서는 타임스탬프를 추론할 수 없으므로, 유효한fps가 포함된VideoMetadata가 필요합니다. - max_frames (
int, kwargs, 선택) — 샘플링할 최대 프레임 수입니다. 설정된 경우, 샘플링된 인덱스는 예산에 맞게 균일하게 재샘플링됩니다. - overflow_strategy (
str, kwargs, optional) — 총 샘플링 프레임 수를 예산에 맞게 줄이기 위해 사용하는 전략입니다. “uniform” 또는 “truncate”로만 설정할 수 있습니다. FPS 기반 샘플링 이후에 적용되며, FPS 기반 샘플링이 꺼져 있거나 적용되지 않는 경우에도 단독으로 적용됩니다. - load_audio_from_video (
bool, kwargs, 선택) — 입력 비디오의 오디오 트랙을 로드할지 여부를 지정합니다.
반환값
~image_processing_base.BatchFeature
- data (
dict) — call 메서드가 반환하는 리스트/배열/텐서 딕셔너리(‘pixel_values’ 등). - tensor_type (
Union[None, str, TensorType], 선택 사항) — 초기화 시 PyTorch/Numpy 텐서에서 정수 목록을 변환하려면 여기에 tensor_type를 지정할 수 있습니다.
EmbeddingGemma2Processor
클래스 transformers.EmbeddingGemma2Processor
< source >( feature_extractorimage_processortokenizervideo_processorchat_template = Noneimage_seq_length: int = 280audio_seq_length: int = 750audio_ms_per_token: int = 40**kwargs )
매개변수
- feature_extractor (Gemma4AudioFeatureExtractor) — 피처 추출기는 필수 입력입니다.
- image_processor (Gemma4ImageProcessor) — 이미지 프로세서가 필수 입력값입니다.
- tokenizer (tokenizer_class) — 토크나이저는 필수 입력값입니다.
- video_processor (EmbeddingGemma2VideoProcessor) — video processor는 필수 입력값입니다.
- chat_template (str) — 채팅의 메시지 목록을 토큰화 가능한 문자열로 변환하는 Jinja 템플릿입니다.
- image_seq_length (int, 선택, 기본값 280) — 플레이스홀더 확장에 사용되는 이미지당 소프트 토큰 수입니다.
- audio_seq_length (int, optional, 기본값 750) — 오디오 세그먼트당 오디오 소프트 토큰의 최대 개수입니다. 동적 오디오 토큰 수가 계산될 때 상한으로 사용됩니다.
- audio_ms_per_token (int, optional, 기본값 40) —
출력 소프트 토큰당 오디오 밀리초 수입니다.
ceil(duration_ms / audio_ms_per_token)을 사용하여 오디오 플레이스홀더 토큰의 수를 동적으로 계산하는 데 사용됩니다. 기본값 40은 10ms 프레임에 대한 SSCP 컨볼루션의 4배 시간 축약에서 유래합니다.
EmbeddingGemma2Processor를 생성합니다. 이 프로세서는 feature extractor, image processor, tokenizer, video processor를 단일 프로세서로 묶어 제공합니다.
[EmbeddingGemma2Processor]는 [Gemma4AudioFeatureExtractor], [Gemma4ImageProcessor], [tokenizer_class], 그리고 [EmbeddingGemma2VideoProcessor]의 모든 기능을 제공합니다. 자세한 내용은 [~Gemma4AudioFeatureExtractor], [~Gemma4ImageProcessor], [~tokenizer_class], [~EmbeddingGemma2VideoProcessor]를 참고하세요.
__call__
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Nonetext: str | list[str] | list[list[str]] | None = Nonevideos: typing.Union[list['PIL.Image.Image'], numpy.ndarray, ForwardRef('torch.Tensor'), list[numpy.ndarray], list['torch.Tensor'], list[list['PIL.Image.Image']], list[list[numpy.ndarray]], list[list['torch.Tensor']], transformers.video_utils.URL, list[transformers.video_utils.URL], list[list[transformers.video_utils.URL]], transformers.video_utils.Path, list[transformers.video_utils.Path], list[list[transformers.video_utils.Path]], NoneType] = Noneaudio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], NoneType] = Noneaudio_from_video_indices: list[int] | None = None**kwargs: *<class 'transformers.processing_utils.ProcessingKwargs'> )
매개변수
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], 선택) — 전처리할 이미지입니다. 픽셀 값이 0에서 255 범위로 이루어진 단일 이미지 또는 배치 이미지를 기대합니다. 픽셀 값이 0에서 1 사이인 이미지를 전달하는 경우do_rescale=False로 설정하세요. - text (
Union[str, list[str], list[list[str]]], 선택 사항) — 인코딩할 시퀀스 또는 시퀀스 배치입니다. 각 시퀀스는 문자열 또는 문자열 목록(사전 토큰화된 문자열)일 수 있습니다. 사전 토큰화된 입력을 전달하는 경우, 배치 입력과의 혼동을 피하기 위해is_split_into_words=True를 설정하세요. - videos (
Union[list[PIL.Image.Image], numpy.ndarray, torch.Tensor, list[numpy.ndarray], list[torch.Tensor], list[list[PIL.Image.Image]], list[list[numpy.ndarray]], list[list[torch.Tensor]], ~video_utils.URL, list[~video_utils.URL], list[list[~video_utils.URL]], ~video_utils.Path, list[~video_utils.Path], list[list[~video_utils.Path]]], 선택) — 전처리할 비디오입니다. 픽셀 값이 0에서 255 범위를 가지는 단일 비디오 또는 비디오 배치(batch)를 기대합니다. 픽셀 값이 0에서 1 범위를 가지는 비디오를 전달하는 경우do_rescale=False로 설정하십시오. - audio (
Union[numpy.ndarray, torch.Tensor, collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence[torch.Tensor]], 선택 사항) — 준비할 오디오 또는 오디오 배치입니다. 각 오디오는 NumPy 배열 또는 PyTorch 텐서일 수 있습니다. NumPy 배열/PyTorch 텐서의 경우, 각 오디오의 shape은 (C, T)여야 하며, 여기서 C는 채널 수, T는 오디오의 샘플 길이입니다. - audio_from_video_indices (
list[int], 선택 사항) — 각 오디오 슬롯의 출처를 설명하는 리스트입니다.None-> 비디오 트랙과 관련이 없는 독립 오디오i-> videos[i]에서 추출된 오디오
- return_tensors (
str또는 TensorType, 선택 사항) — 설정된 경우, 특정 프레임워크의 텐서를 반환합니다. 허용되는 값은 다음과 같습니다:'pt': PyTorchtorch.Tensor객체를 반환합니다.'np': NumPynp.ndarray객체를 반환합니다.
- **kwargs (ProcessingKwargs, 선택) — 각 모달리티(텍스트, 이미지, 비디오, 오디오)에 대한 추가 처리 옵션입니다. 모델별 매개변수는 위에 나열되어 있으며, 지원되는 인수의 전체 목록은 TypedDict 클래스를 참조하세요.
EmbeddingGemma2PreTrainedModel
클래스 transformers.EmbeddingGemma2PreTrainedModel
< source >( config: PreTrainedConfig*inputs**kwargs )
매개변수
- config (PreTrainedConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
EmbeddingGemma2TextModel
class transformers.EmbeddingGemma2TextModel
< source >( config: EmbeddingGemma2TextConfig )
매개변수
- config (EmbeddingGemma2TextConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
EmbeddingGemma 2 텍스트 백본입니다. 최종 hidden states를 config.embedding_dim으로 축소하는 embedding_projection을 보유하므로, 복합 모델은 forward 오버라이드가 필요하지 않습니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutput or tuple(torch.Tensor)
매개변수
- input_ids (
torch.LongTensor형상이(batch_size, sequence_length), 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
- attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- position_ids (
torch.LongTensor의 shape(batch_size, sequence_length), , 선택 사항) — 위치 임베딩에서 각 입력 시퀀스 토큰의 위치 인덱스. 범위[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensor, shape(batch_size, sequence_length, hidden_size), 선택) —input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델 내부의 임베딩 조회 행렬보다input_ids인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다.
반환값
BaseModelOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 BaseModelOutput (return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(EmbeddingGemma2Config)과 입력에 따라 다양한 요소를 포함합니다.
EmbeddingGemma2TextModel의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size)) — 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.hidden_states (
tuple(torch.Tensor), 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
EmbeddingGemma2Model
class transformers.EmbeddingGemma2Model
< source >( config: EmbeddingGemma2Config )
매개변수
- config (EmbeddingGemma2Config) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
EmbeddingGemma 2 모델: 비전 백본, 오디오 백본, 텍스트 백본으로 구성되며, 최종 hidden states가 config.text_config.embedding_dim으로 투영됩니다. SentenceTransformers의 mean pooling 및 normalization으로 래핑되어 사용될 것을 의도하고 있습니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Nonepixel_values: typing.Optional[torch.Tensor] = Nonepixel_values_videos: typing.Optional[torch.Tensor] = Noneinput_features: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneinput_features_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneimage_position_ids: typing.Optional[torch.LongTensor] = Nonevideo_position_ids: typing.Optional[torch.LongTensor] = Nonenum_frames_per_video: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → EmbeddingGemma2ModelOutput or tuple(torch.Tensor)
매개변수
- input_ids (
torch.LongTensor형상이(batch_size, sequence_length), 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
- pixel_values (
torch.Tensor, shape(batch_size, num_channels, image_size, image_size), 선택 사항) — 입력 이미지에 해당하는 텐서입니다. 픽셀 값은 Gemma4ImageProcessor를 사용하여 얻을 수 있습니다. 자세한 내용은 Gemma4ImageProcessor.call()를 참조하세요 (EmbeddingGemma2Processor는 이미지 처리에 Gemma4ImageProcessor를 사용합니다). - pixel_values_videos (
torch.Tensor, shape(batch_size, num_frames, num_channels, frame_size, frame_size), 선택 사항) — 입력 비디오에 해당하는 텐서입니다. 비디오의 픽셀 값은 EmbeddingGemma2VideoProcessor를 사용하여 얻을 수 있습니다. 자세한 내용은 EmbeddingGemma2VideoProcessor.call()를 참조하세요 (EmbeddingGemma2Processor는 비디오 처리에 EmbeddingGemma2VideoProcessor를 사용합니다). - input_features (
torch.Tensor, shape(batch_size, sequence_length, feature_dim), 선택 사항) — 입력 오디오 특징에 해당하는 텐서입니다. 오디오 특징은 Gemma4AudioFeatureExtractor를 사용하여 얻을 수 있습니다. 자세한 내용은 Gemma4AudioFeatureExtractor.call()를 참조하세요 (EmbeddingGemma2Processor는 오디오 처리에 Gemma4AudioFeatureExtractor를 사용합니다). - attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- input_features_mask (
torch.Tensor, shape(num_images, seq_length)) — 입력 오디오의 어텐션 마스크입니다. - position_ids (
torch.LongTensor의 shape(batch_size, sequence_length), , 선택 사항) — 위치 임베딩에서 각 입력 시퀀스 토큰의 위치 인덱스. 범위[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensor, shape(batch_size, sequence_length, hidden_size), 선택) —input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델 내부의 임베딩 조회 행렬보다input_ids인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다. - image_position_ids (
torch.LongTensor, shape(batch_size, max_patches, 2), 선택 사항) — 이미지 프로세서에서 생성된 2D 패치 위치 좌표이며,(-1, -1)은 패딩을 나타냅니다. 위치 임베딩 계산에 사용되도록 비전 인코더로 전달됩니다. - video_position_ids (
torch.LongTensor, shape(total_num_frames, max_patches, 2), 선택 사항) — 비디오 프로세서에서 생성된 2D 패치 위치 좌표이며,(-1, -1)은 패딩을 나타냅니다. 위치 임베딩 계산에 사용되도록 비전 인코더로 전달됩니다. - num_frames_per_video (
torch.LongTensor, shape(num_videos,), 선택 사항) — 각 비디오에 속하는 프레임 수입니다. 모든 비디오의 프레임이 단일 축을 따라 연결되므로pixel_values_videos를 전달할 때 필수입니다.
반환값
EmbeddingGemma2ModelOutput 또는 tuple(torch.Tensor)
EmbeddingGemma2ModelOutput 또는 torch.Tensor의 튜플(return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(EmbeddingGemma2Config)과 입력에 따라 다양한 요소를 포함합니다.
EmbeddingGemma2Model의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size)) — 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.hidden_states (
tuple(torch.Tensor), 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
image_hidden_states (
torch.Tensor, 선택 사항) — 크기가(batch_size, num_images, sequence_length, hidden_size)인torch.Tensor입니다. 비전 인코더가 생성한 모델의 image_hidden_states이며, 마지막 hidden state를 투영한 후의 값입니다.audio_hidden_states (
torch.Tensor, 선택 사항) — 크기가(batch_size, num_images, sequence_length, hidden_size)인torch.Tensor입니다. 오디오 인코더가 생성한 모델의 audio_hidden_states이며, 마지막 hidden state를 투영한 후의 값입니다.
get_image_features
< source >( pixel_values: Tensorimage_position_ids: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)
매개변수
- pixel_values (
torch.Tensor, shape(batch_size, num_channels, image_size, image_size)) — 입력 이미지에 해당하는 텐서입니다. 픽셀 값은 Gemma4ImageProcessor를 사용하여 얻을 수 있습니다. 자세한 내용은 Gemma4ImageProcessor.call()를 참조하세요 (EmbeddingGemma2Processor는 이미지 처리에 Gemma4ImageProcessor를 사용합니다). - image_position_ids (
torch.LongTensor, shape(batch_size, max_patches, 2), 선택 사항) — 이미지 내에서 패치의 위치를 (x, y) 좌표로 나타낸 값입니다. 패딩 패치는 (-1, -1)로 표시됩니다.
반환값
BaseModelOutputWithPooling 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 BaseModelOutputWithPooling (return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(EmbeddingGemma2Config)과 입력에 따라 다양한 요소를 포함합니다.
비전 모델의 마지막 hidden state를 언어 모델 공간으로 투영합니다.
last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size)) — 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.pooler_output (
torch.Tensor, shape(batch_size, hidden_size)) — 보조 사전 학습 작업을 위해 사용되는 레이어들을 통해 추가 처리된 시퀀스의 첫 번째 토큰(분류 토큰)의 마지막 레이어 hidden-state입니다. 예를 들어 BERT 계열 모델의 경우, 선형 레이어와 tanh 활성화 함수를 통해 처리된 후의 분류 토큰을 반환합니다. 선형 레이어의 가중치는 사전 학습 동안 다음 문장 예측(분류) 목적 함수를 통해 학습됩니다.hidden_states (
tuple(torch.Tensor), 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
get_video_features
< source >( pixel_values_videos: Tensorvideo_position_ids: typing.Optional[torch.LongTensor] = Nonenum_frames_per_video: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)
매개변수
- pixel_values_videos (
torch.Tensor, shape(total_num_frames, max_patches, patch_pixels)) — 배치 내 모든 비디오의 프레임이 별도의 비디오 축으로 쌓이지 않고 프레임 축을 따라 연결되어, 서로 길이가 다른 비디오도 함께 배치할 수 있도록 합니다. - video_position_ids (
torch.LongTensor, shape(total_num_frames, max_patches, 2), 선택 사항) — 비디오 프로세서에서 생성된 2D 패치 위치 좌표이며,(-1, -1)은 패딩을 나타냅니다. 위치 임베딩 계산에 사용되도록 비전 인코더로 전달됩니다. - num_frames_per_video (
torch.LongTensor, shape(num_videos,)) — 각 비디오에 속하는 프레임 수입니다. 평탄화된(frame sequence) 프레임 시퀀스를 비디오별로 다시 분리하는 데 사용됩니다.
반환값
BaseModelOutputWithPooling 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 BaseModelOutputWithPooling (return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(EmbeddingGemma2Config)과 입력에 따라 다양한 요소를 포함합니다.
비전 인코더의 마지막 숨겨진 상태를 언어 모델 공간으로 투영합니다.
last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size)) — 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.pooler_output (
torch.Tensor, shape(batch_size, hidden_size)) — 보조 사전 학습 작업을 위해 사용되는 레이어들을 통해 추가 처리된 시퀀스의 첫 번째 토큰(분류 토큰)의 마지막 레이어 hidden-state입니다. 예를 들어 BERT 계열 모델의 경우, 선형 레이어와 tanh 활성화 함수를 통해 처리된 후의 분류 토큰을 반환합니다. 선형 레이어의 가중치는 사전 학습 동안 다음 문장 예측(분류) 목적 함수를 통해 학습됩니다.hidden_states (
tuple(torch.Tensor), 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
get_audio_features
< source >( input_features: Tensorinput_features_mask: Tensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → EmbeddingGemma2AudioModelOutput or tuple(torch.Tensor)
매개변수
- input_features (
torch.Tensor, shape(num_images, seq_length, num_features)) — 입력 오디오에 해당하는 텐서입니다. - input_features_mask (
torch.Tensor, shape(num_images, seq_length)) — 입력 오디오의 어텐션 마스크입니다.
반환값
EmbeddingGemma2AudioModelOutput 또는 tuple(torch.Tensor)
EmbeddingGemma2AudioModelOutput 또는 torch.Tensor의 튜플(return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(EmbeddingGemma2Config)과 입력에 따라 다양한 요소를 포함합니다.
오디오 인코더의 마지막 hidden state를 language model 공간으로 투영합니다.
last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size)) — 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.pooler_output (
torch.Tensor, shape(batch_size, hidden_size)) — 보조 사전 학습 작업을 위해 사용되는 레이어들을 통해 추가 처리된 시퀀스의 첫 번째 토큰(분류 토큰)의 마지막 레이어 hidden-state입니다. 예를 들어 BERT 계열 모델의 경우, 선형 레이어와 tanh 활성화 함수를 통해 처리된 후의 분류 토큰을 반환합니다. 선형 레이어의 가중치는 사전 학습 동안 다음 문장 예측(분류) 목적 함수를 통해 학습됩니다.hidden_states (
tuple(torch.Tensor), 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
attention_mask (
torch.BoolTensor, 선택 사항) —(batch_size, num_frames)모양의 torch.BoolTensor입니다. 유효한 위치는 True, 패딩은 False입니다.