Transformers documentation
ShieldGemma 2
Model ini dipublikasikan di HF papers pada 2025-04-01 dan disumbangkan ke Hugging Face Transformers pada 2025-03-20.
ShieldGemma 2
Ikhtisar
Model ShieldGemma 2 diusulkan dalam laporan teknis oleh Google. ShieldGemma 2, yang dibangun di atas Gemma 3, adalah model dengan 4 miliar (4B) parameter yang memeriksa keamanan gambar sintetis maupun alami terhadap kategori utama untuk membantu Anda membangun dataset dan model yang robust. Dengan penambahan ini ke dalam keluarga model Gemma, peneliti dan pengembang kini dapat dengan mudah meminimalkan risiko konten berbahaya dalam model mereka di berbagai area bahaya utama yang didefinisikan di bawah ini:
- Konten yang Tidak Bersifat Seksual Eksplisit: Gambar tidak boleh memuat konten yang menggambarkan tindakan seksual yang eksplisit atau grafis (misalnya, pornografi, ketelanjangan erotis, penggambaran pemerkosaan atau pelecehan seksual).
- Tidak Ada Konten Berbahaya: Gambar tidak boleh memuat konten yang memfasilitasi atau mendorong aktivitas yang dapat menyebabkan bahaya di dunia nyata (misalnya, pembuatan senjata api dan perangkat peledak, promosi terorisme, instruksi bunuh diri).
- Konten Kekerasan/Gore: Gambar tidak boleh memuat konten yang menggambarkan kekerasan yang mengejutkan, sensasional, atau berlebihan (misalnya, darah dan gore yang berlebihan, kekerasan yang tidak perlu terhadap hewan, cedera ekstrem, atau momen kematian).
Kami merekomendasikan penggunaan ShieldGemma 2 sebagai filter input untuk vision language models, atau sebagai filter output untuk sistem generasi gambar. Untuk melatih model keamanan gambar yang robust, kami mengkurasi dataset pelatihan berupa gambar alami dan sintetis, serta melakukan instruction-tuning pada Gemma 3 untuk menunjukkan kinerja yang kuat.
Model ini disumbangkan oleh Ryan Mullins.
Contoh Penggunaan
- ShieldGemma 2 menyediakan Processor yang menerima daftar
imagesdan daftar opsionalpoliciessebagai input, lalu membangun batch prompt sebagai hasil perkalian dari kedua daftar tersebut menggunakan chat template yang disediakan. - Anda dapat memperluas kebijakan bawaan ShieldGemma dengan argumen
custom_policiespada Processor. Menggunakan kunci yang sama dengan salah satu kebijakan bawaan akan menimpa kebijakan tersebut dengan definisi kustom Anda. - ShieldGemma 2 tidak mendukung fitur pemotongan gambar yang digunakan oleh Gemma 3.
Klasifikasi terhadap Kebijakan Bawaan
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)Klasifikasi terhadap Kebijakan Kustom
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
kelas 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'> )
Parameter
- images — Satu gambar atau daftar gambar yang akan disertakan dalam batch.
- text — Tidak didukung.
- videos — Tidak didukung.
- audio — Tidak didukung.
- kwargs — Kamus opsional berisi argumen kata kunci untuk mengonfigurasi prosesor. Nilai yang mungkin termasuk:
custom_policies: Definisi kebijakan tambahan yang melengkapiself.policy_definitionsyang diteruskan ke konstruktor. Perhatikan bahwacustom_policiesyang berbagi kunci denganself.policy_definitionsakan menimpa deskripsi kebijakanpolicies: (Opsional) daftar kunci dalam kamus gabunganself.policy_definitions | custom_policiesyang menjadi perhatian khusus untuk gambar yang diberikan. Jika kosong atau None, prompt akan dibuat untuk setiap kunci dalam kamus gabungan.
Membuat batch input dari gambar yang disediakan.
ShieldGemma dilatih untuk mengklasifikasikan konten gambar guna kepatuhan kebijakan menggunakan konstruksi prompt tertentu. Prosesor ini menghasilkan batch prompt semacam itu dari gambar yang diberikan dengan cara:
- Membuat daftar percakapan, satu untuk setiap pasangan
<image, policy>; - Mengonversi percakapan-percakapan ini menjadi teks menggunakan
self.apply_chat_template(); dan - Mengode percakapan dan gambar menggunakan teknik yang sama seperti
Gemma3Processor.
ShieldGemma2Config
kelas 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 )
Parameter
- text_config (
Union[dict, ~configuration_utils.PreTrainedConfig], opsional) — Objek config atau dictionary dari text backbone. - vision_config (
Union[dict, ~configuration_utils.PreTrainedConfig], opsional) — Objek config atau dictionary dari vision backbone. - mm_tokens_per_image (
int, opsional, default 256) — Jumlah token per embedding gambar. - boi_token_index (
int, opsional, defaultnya 255999) — Indeks token awal gambar untuk membungkus prompt gambar. - eoi_token_index (
int, opsional, defaultnya 256000) — Indeks token end-of-image untuk membungkus prompt gambar. - image_token_index (
int, opsional, default262144) — Indeks token gambar yang digunakan sebagai placeholder untuk gambar input. - initializer_range (
float, opsional, defaultnya0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot. - tie_word_embeddings (
bool, opsional) — Apakah akan mengikat (tie) word embeddings. Nilainya secara default mengikutitext_config.tie_word_embeddingsjika tidak disetel.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari Shieldgemma2Model. Kelas ini digunakan untuk membuat instans model Shieldgemma2 berdasarkan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari google/shieldgemma-2-4b-it
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
Contoh:
>>> 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
kelas transformers.ShieldGemma2ForImageClassification
< source >( config: ShieldGemma2Config )
Parameter
- config (ShieldGemma2Config) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya saja. Lihat metode from_pretrained() untuk memuat bobot model.
Model Shieldgemma2 dengan kepala klasifikasi gambar di atasnya, misalnya untuk ImageNet.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Nonepixel_values: typing.Optional[torch.FloatTensor] = 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.FloatTensor] = 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 )
Parameter
- input_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- pixel_values (
torch.FloatTensordengan bentuk(batch_size, num_channels, image_size, image_size), opsional) — Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakanimage_processor_class. Lihatimage_processor_class.__call__untuk detailnya (processor_classmenggunakanimage_processor_classuntuk memproses gambar). - attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- position_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opsional) — Hidden-states yang sudah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri daripast_key_valuesyang dikembalikan oleh model pada tahap decoding sebelumnya, ketikause_cache=Trueatauconfig.use_cache=True.Hanya instance Cache yang diizinkan sebagai input, lihat panduan kv cache kami. Jika tidak ada
past_key_valuesyang diteruskan, DynamicCache akan diinisialisasi secara default.Model akan menghasilkan format cache yang sama dengan yang diberikan sebagai input.
Jika
past_key_valuesdigunakan, pengguna diharapkan hanya memasukkaninput_idsyang belum diproses (yang tidak memiliki state past key value yang diberikan ke model ini) dengan bentuk(batch_size, unprocessed_length)alih-alih semuainput_idsdengan bentuk(batch_size, sequence_length). - token_type_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks token segmen untuk menunjukkan bagian pertama dan kedua dari input. Indeks dipilih dari[0, 1]:- 0 sesuai dengan token sentence A,
- 1 sesuai dengan token sentence B.
- inputs_embeds (
torch.FloatTensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - labels (
torch.LongTensordengan bentuk(batch_size,), opsional) — Label untuk menghitung loss klasifikasi/regresi gambar. Indeks harus berada dalam[0, ..., config.num_labels - 1]. Jikaconfig.num_labels == 1, loss regresi dihitung (Mean-Square loss). Jikaconfig.num_labels > 1, loss klasifikasi dihitung (Cross-Entropy). - use_cache (
bool, opsional) — Jika diset keTrue, state kunci-nilaipast_key_valuesakan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihatpast_key_values). - output_attentions (
bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihatattentionsdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - output_hidden_states (
bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihathidden_statesdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - return_dict (
bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa. - logits_to_keep (
Union[int, torch.Tensor], opsional, default0) — Jika berupaint, hitung logits untuklogits_to_keeptoken terakhir. Jika0, hitung logits untuk semuainput_ids(kasus khusus). Hanya logits token terakhir yang diperlukan untuk generasi, dan menghitungnya hanya untuk token tersebut dapat menghemat memori, yang menjadi cukup signifikan untuk urutan panjang atau ukuran kosakata besar. Jika berupatorch.Tensor, harus 1D yang sesuai dengan indeks yang akan dipertahankan pada dimensi panjang urutan. Ini berguna saat menggunakan format tensor terpadu (satu dimensi untuk batch dan panjang urutan).
Metode forward dari ShieldGemma2ForImageClassification menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.