Transformers documentation
ShieldGemma 2
Este modelo se publicó en HF papers el 2025-04-01 y se contribuyó a Hugging Face Transformers el 2025-03-20.
ShieldGemma 2
Resumen
El modelo ShieldGemma 2 se propuso en un informe técnico de Google. ShieldGemma 2, construido sobre Gemma 3, es un modelo de 4 mil millones (4B) de parámetros que verifica la seguridad de imágenes tanto sintéticas como naturales frente a categorías clave para ayudarte a construir conjuntos de datos y modelos robustos. Con esta adición a la familia de modelos Gemma, los investigadores y desarrolladores ahora pueden minimizar fácilmente el riesgo de contenido dañino en sus modelos en las principales áreas de daño, definidas a continuación:
- Contenido sexualmente explícito: La imagen no debe contener contenido que represente actos sexuales explícitos o gráficos (p. ej., pornografía, desnudez erótica, representaciones de violación o agresión sexual).
- Contenido no peligroso: La imagen no debe contener contenido que facilite o anime actividades que puedan causar daños en el mundo real (p. ej., fabricación de armas de fuego y dispositivos explosivos, promoción del terrorismo, instrucciones para el suicidio).
- Contenido sin violencia/sangriento: La imagen no debe contener contenido que represente violencia impactante, sensacionalista o gratuita (p. ej., sangre y vísceras excesivas, violencia gratuita contra animales, lesiones extremas o momento de la muerte).
Recomendamos usar ShieldGemma 2 como filtro de entrada para modelos de visión y lenguaje, o como filtro de salida de sistemas de generación de imágenes. Para entrenar un modelo de seguridad de imágenes robusto, curamos conjuntos de datos de entrenamiento de imágenes naturales y sintéticas y ajustamos Gemma 3 con instrucciones para demostrar un rendimiento sólido.
Este modelo fue aportado por Ryan Mullins.
Ejemplo de uso
- ShieldGemma 2 proporciona un Processor que acepta una lista de
imagesy una lista opcional depoliciescomo entrada, y construye un lote de prompts como el producto de estas dos listas utilizando la plantilla de chat proporcionada. - Puede extender las políticas integradas de ShieldGemma con el argumento
custom_policiesdel Processor. Si utiliza la misma clave que una de las políticas integradas, esa política se sobrescribirá con su definición personalizada. - ShieldGemma 2 no admite las funciones de recorte de imágenes utilizadas por Gemma 3.
Clasificación frente a políticas integradas
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)Clasificación frente a políticas personalizadas
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
clase 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'> )
Parámetros
- images — Una sola imagen o una lista de imágenes para incluir en el lote.
- text — No compatible.
- videos — No compatible.
- audio — No compatible.
- kwargs — Un diccionario opcional de argumentos de palabra clave para configurar el procesador. Los valores posibles incluyen:
custom_policies: Definiciones de política adicionales que complementan lasself.policy_definitionspasadas al constructor. Tenga en cuenta que lascustom_policiesque comparten una clave conself.policy_definitionsreemplazarán la descripción de la política.policies: (Opcional) una lista de claves del diccionario conjuntoself.policy_definitions | custom_policiesde interés específico para las imágenes proporcionadas. Si está vacío o es None, se generarán prompts para cada clave del diccionario conjunto.
Genera un lote de entradas a partir de las imágenes proporcionadas.
ShieldGemma se entrenó para clasificar el contenido de imágenes en función del cumplimiento de políticas, utilizando una construcción de prompt específica. Este procesador genera un lote de estos prompts a partir de las imágenes proporcionadas mediante:
- Crear una lista de conversaciones, una para cada par
<image, policy>; - Convertir estas conversaciones a texto usando
self.apply_chat_template(); y - Codificación de las conversaciones y las imágenes utilizando las mismas técnicas que
Gemma3Processor.
ShieldGemma2Config
clase 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 )
Parámetros
- text_config (
Union[dict, ~configuration_utils.PreTrainedConfig], opcional) — El objeto de configuración o el diccionario del backbone de texto. - vision_config (
Union[dict, ~configuration_utils.PreTrainedConfig], opcional) — El objeto de configuración o el diccionario del backbone de visión. - mm_tokens_per_image (
int, opcional, valor predeterminado 256) — El número de tokens por incrustación de imagen. - boi_token_index (
int, opcional, valor predeterminado 255999) — El índice del token de inicio de imagen para envolver el prompt de imagen. - eoi_token_index (
int, opcional, valor predeterminado 256000) — El índice del token de fin de imagen para envolver el prompt de imagen. - image_token_index (
int, opcional, valor predeterminado262144) — El índice del token de imagen utilizado como marcador de posición para las imágenes de entrada. - initializer_range (
float, opcional, valor predeterminado0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos. - tie_word_embeddings (
bool, opcional) — Si se deben vincular las incrustaciones de palabras. Si no se establece, el valor predeterminado es el detext_config.tie_word_embeddings.
Esta es la clase de configuración para almacenar la configuración de un Shieldgemma2Model. Se utiliza para instanciar un modelo Shieldgemma2 según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de google/shieldgemma-2-4b-it
Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.
Ejemplo:
>>> 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
clase transformers.ShieldGemma2ForImageClassification
< source >( config: ShieldGemma2Config )
Parámetros
- config (ShieldGemma2Config) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
El modelo Shieldgemma2 con una cabeza de clasificación de imágenes en la parte superior, por ejemplo, para ImageNet.
Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).
Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.
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 )
Parámetros
- input_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada.Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.
- pixel_values (
torch.FloatTensorde forma(batch_size, num_channels, image_size, image_size), opcional) — Los tensores correspondientes a las imágenes de entrada. Los valores de píxeles se pueden obtener utilizandoimage_processor_class. Consulteimage_processor_class.__call__para más detalles (processor_classutilizaimage_processor_classpara procesar las imágenes). - attention_mask (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en[0, 1]:- 1 para los tokens que no están enmascarados,
- 0 para los tokens que están enmascarados.
- position_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices de las posiciones de los tokens de cada secuencia de entrada en los embeddings de posición. Seleccionados en el rango[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opcional) — Estados ocultos precalculados (claves y valores en los bloques de autoatención y en los bloques de atención cruzada) que se pueden usar para acelerar la decodificación secuencial. Esto generalmente consiste en lapast_key_valuesdevuelta por el modelo en una etapa anterior de la decodificación, cuandouse_cache=Trueoconfig.use_cache=True.Solo se permite una instancia de Cache como entrada, consulte nuestra guía de caché kv. Si no se pasan
past_key_values, DynamicCache se inicializará de forma predeterminada.El modelo generará el mismo formato de caché que se proporciona como entrada.
Si se utilizan
past_key_values, se espera que el usuario introduzca únicamente losinput_idsno procesados (aquellos que no tienen sus estados de clave y valor pasados proporcionados a este modelo) con forma(batch_size, unprocessed_length)en lugar de todos losinput_idscon forma(batch_size, sequence_length). - token_type_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices de tokens de segmento para indicar las primeras y segundas partes de las entradas. Los índices se seleccionan en[0, 1]:- 0 corresponde a un token de sentence A,
- 1 corresponde a un token de sentence B.
- inputs_embeds (
torch.FloatTensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices deinput_idsen los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo. - labels (
torch.LongTensorde forma(batch_size,), opcional) — Etiquetas para calcular la pérdida de clasificación/regresión de imágenes. Los índices deben estar en[0, ..., config.num_labels - 1]. Siconfig.num_labels == 1se calcula una pérdida de regresión (pérdida de error cuadrático medio), siconfig.num_labels > 1se calcula una pérdida de clasificación (entropía cruzada). - use_cache (
bool, opcional) — Si se establece enTrue, se devuelven los estados de clave-valor depast_key_valuesy pueden usarse para acelerar la decodificación (verpast_key_values). - output_attentions (
bool, opcional) — Indica si se deben devolver los tensores de atención de todas las capas de atención. Consulteattentionsen los tensores devueltos para obtener más detalles. - output_hidden_states (
bool, opcional) — Indica si se deben devolver los estados ocultos de todas las capas. Consultehidden_statesen los tensores devueltos para obtener más detalles. - return_dict (
bool, opcional) — Indica si se debe devolver un ModelOutput en lugar de una tupla simple. - logits_to_keep (
Union[int, torch.Tensor], opcional, valor predeterminado0) — Si es unint, calcula los logits para los últimoslogits_to_keeptokens. Si es0, calcula los logits para todos losinput_ids(caso especial). Solo se necesitan los logits del último token para la generación, y calcularlos solo para ese token puede ahorrar memoria, lo cual se vuelve bastante significativo para secuencias largas o un tamaño de vocabulario grande. Si es untorch.Tensor, debe ser de 1D y corresponder a los índices a conservar en la dimensión de longitud de secuencia. Esto es útil al usar el formato de tensor empaquetado (una sola dimensión para el lote y la longitud de secuencia).
El método forward de ShieldGemma2ForImageClassification sobrescribe el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.