Transformers documentation
ShieldGemma 2
Bu model, 2025-04-01 tarihinde HF papers'ta yayımlandı ve 2025-03-20 tarihinde Hugging Face Transformers'a katkıda bulunuldu.
ShieldGemma 2
Genel Bakış
ShieldGemma 2 modeli, Google tarafından hazırlanan bir teknik raporda tanıtılmıştır. Gemma 3 üzerine inşa edilen ShieldGemma 2, 4 milyar (4B) parametreli bir modeldir; sentetik ve doğal görsellerin güvenliğini ana kategorilere göre kontrol ederek sağlam veri setleri ve modeller oluşturmanıza yardımcı olur. Gemma model ailesine bu eklemeyi yapan Google, araştırmacıların ve geliştiricilerin aşağıda tanımlanan ana zarar alanlarında modellerindeki zararlı içerik riskini kolayca en aza indirmesini sağlar:
- Cinsel açıdan açık içerik yok: Görsel, açık veya detaylı cinsel eylemleri (ör. pornografi, erotik çıplaklık, tecavüz veya cinsel saldırı tasvirleri) betimleyen içerikler içermemelidir.
- Tehlikeli İçerik Yok: Görsel, gerçek dünyada zarar verebilecek faaliyetleri kolaylaştıran veya teşvik eden içerikler (ör. ateşli silah ve patlayıcı cihaz yapımı, terörizmin propagandası, intihar talimatları) içermemelidir.
- Şiddet/Kanlı İçerik Yok: Görsel, şok edici, abartılı veya gereksiz şiddet tasvir eden içerikler içermemelidir (ör. aşırı kan ve ceset, hayvanlara karşı gereksiz şiddet, aşırı yaralanma veya ölüm anı).
Görsel dil modellerinde girdi filtresi olarak veya görüntü üretim sistemlerinde çıktı filtresi olarak ShieldGemma 2 kullanmanızı öneririz. Sağlam bir görüntü güvenliği modeli eğitmek için doğal ve sentetik görüntülerden oluşan eğitim veri kümeleri derledik ve güçlü bir performans sergilemek üzere Gemma 3'ü talimatla ayarladık.
Bu model Ryan Mullins tarafından katkıda bulunmuştur.
Kullanım Örneği
- ShieldGemma 2, girdi olarak
imageslistesini ve isteğe bağlıpolicieslistesini kabul eden bir Processor sağlar ve bu iki listenin çarpımı olarak, sağlanan sohbet şablonunu kullanarak bir istem partisi oluşturur. - ShieldGemma’nın yerleşik politikalarını, Processor’a
custom_policiesargümanını kullanarak genişletebilirsiniz. Yerleşik politikalardan birinin anahtarını kullanmak, o politikayı özel tanımınızla değiştirir. - ShieldGemma 2, Gemma 3 tarafından kullanılan görüntü kırpma özelliklerini desteklemez.
Yerleşik Politiklere Karşı Sınıflandırma
import requests
from PIL import Image
from transformers import AutoProcessor, ShieldGemma2ForImageClassification
model_id = "google/shieldgemma-2-4b-it"
model = ShieldGemma2ForImageClassification.from_pretrained(model_id, device_map="auto")
processor = AutoProcessor.from_pretrained(model_id)
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg"
image = Image.open(requests.get(url, stream=True).raw)
inputs = processor(images=[image], return_tensors="pt").to(model.device)
output = model(**inputs)
print(output.probabilities)Özel Politikalar Karşısında Sınıflandırma
import requests
from PIL import Image
from transformers import AutoProcessor, ShieldGemma2ForImageClassification
model_id = "google/shieldgemma-2-4b-it"
model = ShieldGemma2ForImageClassification.from_pretrained(model_id, device_map="auto")
processor = AutoProcessor.from_pretrained(model_id)
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg"
image = Image.open(requests.get(url, stream=True).raw)
custom_policies = {
"key_a": "description_a",
"key_b": "description_b",
}
inputs = processor(
images=[image],
custom_policies=custom_policies,
policies=["dangerous", "key_a", "key_b"],
return_tensors="pt",
).to(model.device)
output = model(**inputs)
print(output.probabilities)ShieldGemma2Processor
sınıf transformers.ShieldGemma2Processor
< source >( image_processortokenizerchat_template = Noneimage_seq_length = 256policy_definitions = None**kwargs )
__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 = None**kwargs: *<class 'transformers.models.shieldgemma2.processing_shieldgemma2.ShieldGemma2ProcessorKwargs'> )
Parametreler
- images — Partiye dahil edilecek tek bir görüntü veya görüntü listesi.
- text — Desteklenmiyor.
- videos — Desteklenmiyor.
- audio — Desteklenmiyor.
- kwargs — İşleyiciyi yapılandırmak için isteğe bağlı bir anahtar kelime argümanı sözlüğü. Olası değerler şunları içerir:
custom_policies: Yapıcıya geçirilenself.policy_definitions'i genişleten ek politika tanımları.custom_policies'in,self.policy_definitionsile aynı anahtarı paylaşanları, politika tanımını geçersiz kılar.policies: (İsteğe bağlı) sağlanan görüntüler için özel ilgi gösterilen,self.policy_definitions | custom_policiesbirleşik sözlüğündeki anahtarların listesi. Boş veya None ise, birleşik sözlükteki her anahtar için istemler oluşturulur.
Sağlanan görüntülerden bir girdi grubu oluşturur.
ShieldGemma, belirli bir istem yapısı kullanarak politika uyumluluğu için görsel içeriği sınıflandırmak üzere eğitilmiştir. Bu işlemci, sağlanan görsellerden bu tür istemlerin bir toplu kümesini şu şekilde oluşturur:
- Her
<image, policy>çifti için bir tane olmak üzere konuşmalar listesi oluşturma; - Bu konuşmaları
self.apply_chat_template()kullanarak metne dönüştürülür; ve - Konuşmaları ve görüntüleri
Gemma3Processorile aynı teknikleri kullanarak kodlama.
ShieldGemma2Config
sınıf transformers.ShieldGemma2Config
< 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: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonevision_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonemm_tokens_per_image: int = 256boi_token_index: int = 255999eoi_token_index: int = 256000image_token_index: int = 262144initializer_range: float = 0.02tie_word_embeddings: bool = False )
Parametreler
- text_config (
Union[dict, ~configuration_utils.PreTrainedConfig], isteğe bağlı) — Metin omurgasının yapılandırma nesnesi veya sözlüğü. - vision_config (
Union[dict, ~configuration_utils.PreTrainedConfig], isteğe bağlı) — Görüntü omurgasının yapılandırma nesnesi veya sözlüğü. - mm_tokens_per_image (
int, isteğe bağlı, varsayılan 256) — Görsel gömme başına token sayısı. - boi_token_index (
int, isteğe bağlı, varsayılan 255999) — Görsel istemi sarmak için kullanılan başlangıç-görsel (begin-of-image) belirteç dizini. - eoi_token_index (
int, isteğe bağlı, varsayılan 256000) — Görsel istemi sarmak için kullanılan görsel sonu (end-of-image) token indeksi. - image_token_index (
int, isteğe bağlı, varsayılan262144) — Girdi görselleri için yer tutucu olarak kullanılan görsel jeton indeksi. - initializer_range (
float, isteğe bağlı, varsayılan0.02) — Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması. - tie_word_embeddings (
bool, isteğe bağlı) — Kelime gömme (embedding) bağlamasının yapılıp yapılmayacağını belirtir. Ayarlanmazsa,text_config.tie_word_embeddingsdeğeri kullanılır.
Bu, bir Shieldgemma2Model yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Shieldgemma2 modelinin örneklenmesinde, model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneklendiğinde, google/shieldgemma-2-4b-it 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 ShieldGemma2ForConditionalGeneration, ShieldGemma2Config, SiglipVisionConfig, ShieldGemma2TextConfig
>>> # Initializing a Siglip-like vision config
>>> vision_config = SiglipVisionConfig()
>>> # Initializing a ShieldGemma2 Text config
>>> text_config = ShieldGemma2TextConfig()
>>> # Initializing a ShieldGemma2 gemma-3-4b style configuration
>>> configuration = ShieldGemma2Config(vision_config, text_config)
>>> # Initializing a model from the gemma-3-4b style configuration
>>> model = ShieldGemma2TextConfig(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configShieldGemma2ForImageClassification
sınıf transformers.ShieldGemma2ForImageClassification
< source >( config: ShieldGemma2Config )
Parametreler
- config (ShieldGemma2Config) — 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.
Örneğin ImageNet için üstünde bir görüntü sınıflandırma başlığı bulunan Shieldgemma2 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] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs )
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ğerleriimage_processor_classkullanılarak elde edilebilir. Ayrıntılar içinimage_processor_class.__call__bölümüne bakın (processor_class, görüntü işleme içinimage_processor_classkullanır). - 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. - token_type_ids (
torch.LongTensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdilerin ilk ve ikinci bölümlerini belirtmek için segment token dizinleri. Dizinler[0, 1]:- 0, sentence A belirteci ile eşleşir,
- 1, sentence B belirteçlerine karşılık gelir.
- 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. - labels (
torch.LongTensor, şekli(batch_size,), isteğe bağlı) — Görüntü sınıflandırma/geri dönüşüm kaybını hesaplamak için etiketler. Endeksler[0, ..., config.num_labels - 1]aralığında olmalıdır.config.num_labels == 1ise bir geri dönüşüm kaybı (Ortalama Kare kaybı) hesaplanır,config.num_labels > 1ise bir sınıflandırma kaybı (Çapraz Entropi) 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). - output_attentions (
bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakiattentionsbölümüne bakın. - output_hidden_states (
bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakihidden_statesbölümüne bakın. - return_dict (
bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi? - 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.
ShieldGemma2ForImageClassification 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.