Crea una solución de moderación de contenido basada en IA generativa en Amazon SageMaker JumpStart
Crea una solución de moderación de contenido en Amazon SageMaker JumpStart
La moderación de contenido juega un papel fundamental en el mantenimiento de la seguridad en línea y en el respeto de los valores y estándares de sitios web y plataformas de redes sociales. Su importancia se destaca por la protección que ofrece a los usuarios contra la exposición a contenido inapropiado, salvaguardando su bienestar en los espacios digitales. Por ejemplo, en la industria publicitaria, la moderación de contenido sirve para proteger a las marcas de asociaciones desfavorables, contribuyendo así a elevar la marca y aumentar los ingresos. Los anunciantes priorizan la alineación de su marca con contenido apropiado para mantener su reputación y evitar publicidad negativa. La moderación de contenido también adquiere una importancia crítica en los sectores financiero y de la salud, donde cumple múltiples funciones. Juega un papel importante en la identificación y protección de información personal identificable y de salud confidencial (PII, PHI). Al cumplir con estándares y prácticas internas y cumplir con regulaciones externas, la moderación de contenido mejora la seguridad digital para los usuarios. De esta manera, evita la difusión inadvertida de datos confidenciales en plataformas públicas, garantizando la preservación de la privacidad del usuario y la seguridad de los datos.
En esta publicación, presentamos un método novedoso para realizar la moderación de contenido en datos de imágenes con pre-entrenamiento multimodal y un modelo de lenguaje grande (LLM). Con el pre-entrenamiento multimodal, podemos consultar directamente el contenido de la imagen en función de un conjunto de preguntas de interés y el modelo será capaz de responder a estas preguntas. Esto permite a los usuarios chatear con la imagen para confirmar si contiene algún contenido inapropiado que viole las políticas de la organización. Utilizamos la potente capacidad de generación de los LLM para generar la decisión final, incluyendo etiquetas seguras/no seguras y el tipo de categoría. Además, mediante el diseño de una indicación, podemos hacer que un LLM genere el formato de salida definido, como el formato JSON. La plantilla de indicación diseñada permite al LLM determinar si la imagen viola la política de moderación, identificar la categoría de la violación, explicar por qué y proporcionar la salida en un formato JSON estructurado.
Utilizamos BLIP-2 como el método de pre-entrenamiento multimodal. BLIP-2 es uno de los modelos más avanzados en pre-entrenamiento multimodal y supera a la mayoría de los métodos existentes en preguntas y respuestas visuales, subtitulado de imágenes y recuperación de texto de imágenes. Para nuestro LLM, utilizamos Llama 2, el LLM de código abierto de próxima generación, que supera a los modelos de lenguaje de código abierto existentes en numerosas pruebas, incluyendo razonamiento, codificación, competencia y pruebas de conocimiento. El siguiente diagrama ilustra los componentes de la solución.
Desafíos en la moderación de contenido
Los métodos tradicionales de moderación de contenido, como la moderación basada en humanos, no pueden mantenerse al día con el creciente volumen de contenido generado por los usuarios (UGC, por sus siglas en inglés). A medida que aumenta el volumen de UGC, los moderadores humanos pueden sentirse abrumados y luchar para moderar el contenido de manera efectiva. Esto resulta en una mala experiencia del usuario, altos costos de moderación y riesgo para la marca. La moderación basada en humanos también es propensa a errores, lo que puede resultar en una moderación inconsistente y decisiones sesgadas. Para abordar estos desafíos, la moderación de contenido impulsada por el aprendizaje automático (ML, por sus siglas en inglés) ha surgido como una solución. Los algoritmos de ML pueden analizar grandes volúmenes de UGC e identificar contenido que viola las políticas de la organización. Los modelos de ML pueden ser entrenados para reconocer patrones e identificar contenido problemático, como discurso de odio, correo no deseado y material inapropiado. Según el estudio “Proteja a sus usuarios, marca y presupuesto con la moderación de contenido impulsada por IA”, la moderación de contenido impulsada por ML puede ayudar a las organizaciones a recuperar hasta el 95% del tiempo que sus equipos dedican a moderar contenido de forma manual. Esto permite a las organizaciones enfocar sus recursos en tareas más estratégicas, como la construcción de comunidades y la creación de contenido. Además, la moderación de contenido impulsada por ML puede reducir los costos de moderación porque es más eficiente que la moderación basada en humanos.
- MLOps Monitoreo y Gestión de Desviaciones
- Simplificando el Análisis de Series Temporales para Científicos de ...
- Saturno Un nuevo enfoque para entrenar modelos de lenguaje grandes ...
A pesar de las ventajas de la moderación de contenido impulsada por ML, aún existe espacio para mejorar. La efectividad de los algoritmos de ML depende en gran medida de la calidad de los datos en los que se entrenan. Cuando los modelos se entrenan utilizando datos sesgados o incompletos, pueden tomar decisiones erróneas de moderación, exponiendo a las organizaciones a riesgos para la marca y posibles responsabilidades legales. La adopción de enfoques basados en ML para la moderación de contenido plantea varios desafíos que requieren una cuidadosa consideración. Estos desafíos incluyen:
- Adquisición de datos etiquetados: esto puede ser un proceso costoso, especialmente para tareas complejas de moderación de contenido que requieren entrenar a etiquetadores. Este costo puede dificultar la obtención de conjuntos de datos lo suficientemente grandes como para entrenar un modelo de ML supervisado con facilidad. Además, la precisión del modelo depende en gran medida de la calidad de los datos de entrenamiento, y los datos sesgados o incompletos pueden resultar en decisiones de moderación inexactas, lo que conlleva riesgos para la marca y responsabilidades legales.
- Generalización del modelo: esto es fundamental para adoptar enfoques basados en ML. Un modelo entrenado en un conjunto de datos puede no generalizar bien a otro conjunto de datos, especialmente si los conjuntos de datos tienen distribuciones diferentes. Por lo tanto, es esencial asegurarse de que el modelo se entrene en un conjunto de datos diverso y representativo para garantizar que se generalice bien a nuevos datos.
- Eficiencia operativa: este es otro desafío al utilizar enfoques basados en ML convencionales para la moderación de contenido. Agregar constantemente nuevas etiquetas y volver a entrenar el modelo cuando se agregan nuevas clases puede llevar tiempo y ser costoso. Además, es esencial asegurarse de que el modelo se actualice regularmente para mantenerse al día con los cambios en el contenido que se está moderando.
- Explicabilidad: los usuarios finales pueden percibir la plataforma como sesgada o injusta si el contenido se marca o se elimina sin justificación, lo que resulta en una mala experiencia del usuario. De manera similar, la falta de explicaciones claras puede hacer que el proceso de moderación de contenido sea ineficiente, lento y costoso para los moderadores.
- Naturaleza adversarial: la naturaleza adversarial de la moderación de contenido basada en imágenes presenta un desafío único para los enfoques basados en ML convencionales. Los actores maliciosos pueden intentar evadir los mecanismos de moderación de contenido modificando el contenido de diversas formas, como utilizando sinónimos de imágenes o incrustando su contenido real dentro de un cuerpo más grande de contenido no ofensivo. Esto requiere un monitoreo y actualización constantes del modelo para detectar y responder a tácticas adversariales.
Razonamiento multimodal con BLIP-2
Los modelos de aprendizaje automático multimodales se refieren a modelos que pueden manejar e integrar datos de múltiples fuentes o modalidades, como imágenes, texto, audio, video y otras formas de datos estructurados o no estructurados. Uno de los modelos multimodales populares es el modelo de lenguaje visual como BLIP-2, que combina visión por computadora y procesamiento del lenguaje natural (NLP) para comprender y generar información visual y textual. Estos modelos permiten a las computadoras interpretar el significado de imágenes y texto de manera similar a la comprensión humana. Los modelos de visión y lenguaje pueden abordar una variedad de tareas, incluyendo descripción de imágenes, recuperación de texto de imágenes, respuesta a preguntas visuales y más. Por ejemplo, un modelo de descripción de imágenes puede generar una descripción en lenguaje natural de una imagen, y un modelo de recuperación de texto de imágenes puede buscar imágenes en función de una consulta de texto. Los modelos de respuesta a preguntas visuales pueden responder preguntas en lenguaje natural sobre imágenes, y los chatbots multimodales pueden utilizar entradas visuales y textuales para generar respuestas. En términos de moderación de contenido, puedes utilizar esta capacidad para realizar consultas contra una lista de preguntas.
BLIP-2 contiene tres componentes. El primer componente es un codificador de imágenes congelado, ViT-L/14 de CLIP, que toma datos de imágenes como entrada. El segundo componente es un LLM congelado, FlanT5, que produce texto. El tercer componente es un módulo entrenable llamado Q-Former, un transformer liviano que conecta el codificador de imágenes congelado con el LLM congelado. Q-Former utiliza vectores de consulta aprendibles para extraer características visuales del codificador de imágenes congelado y alimenta la característica visual más útil al LLM para producir el texto deseado.
El proceso de pre-entrenamiento consta de dos etapas. En la primera etapa, se realiza el aprendizaje de representación de visión y lenguaje para enseñar a Q-Former a aprender la representación visual más relevante para el texto. En la segunda etapa, se realiza el aprendizaje generativo de visión a lenguaje conectando la salida de Q-Former a un LLM congelado y entrenando a Q-Former para producir representaciones visuales que puedan ser interpretadas por el LLM.
BLIP-2 logra un rendimiento de vanguardia en diversas tareas de visión y lenguaje a pesar de tener significativamente menos parámetros entrenables que los métodos existentes. El modelo también demuestra capacidades emergentes de generación de imágenes a texto sin necesidad de entrenamiento previo que pueden seguir instrucciones en lenguaje natural. La siguiente ilustración está modificada del artículo de investigación original.
Descripción general de la solución
El siguiente diagrama ilustra la arquitectura de la solución.
En las siguientes secciones, mostraremos cómo implementar BLIP-2 en un punto de enlace de Amazon SageMaker y cómo usar BLIP-2 y un LLM para moderación de contenido.
Requisitos previos
Necesitas una cuenta de AWS con un rol de Identity and Access Management (IAM) con permisos para gestionar los recursos creados como parte de la solución. Para más detalles, consulta Cómo crear una cuenta independiente de AWS.
Si es la primera vez que trabajas con Amazon SageMaker Studio, primero debes crear un dominio de SageMaker. Además, es posible que debas solicitar un aumento en la cuota de servicio para las instancias de alojamiento de SageMaker correspondientes. Para el modelo BLIP-2, usamos una instancia de alojamiento de SageMaker ml.g5.2xlarge
. Para el modelo Llama 2 13B, usamos una instancia de alojamiento de SageMaker ml.g5.12xlarge
.
Implementar BLIP-2 en un punto de enlace de SageMaker
Puedes alojar un LLM en SageMaker utilizando el contenedor de Inferencia de Modelos Grandes (LMI) que está optimizado para alojar modelos grandes utilizando DJLServing. DJLServing es una solución de servicio de modelos universal de alto rendimiento impulsada por la Deep Java Library (DJL) que es agnóstica del lenguaje de programación. Para obtener más información sobre DJL y DJLServing, consulta Cómo implementar modelos grandes en Amazon SageMaker utilizando DJLServing e inferencia de modelo paralelo DeepSpeed. Con la ayuda del contenedor LMI de SageMaker, el modelo BLIP-2 se puede implementar fácilmente con la biblioteca Hugging Face y alojarse en SageMaker. Puedes ejecutar blip2-sagemaker.ipynb
para este paso.
Para preparar la imagen y el archivo de modelo de Docker, debes obtener la imagen de Docker de DJLServing, empaquetar el script de inferencia y los archivos de configuración como un archivo model.tar.gz
, y subirlo a un bucket de Amazon Simple Storage Service (Amazon S3). Puedes consultar el script de inferencia y el archivo de configuración para obtener más detalles.
inference_image_uri = image_uris.retrieve(
framework="djl-deepspeed", region=sess.boto_session.region_name, version="0.22.1"
)
! tar czvf model.tar.gz blip2/
s3_code_artifact = sess.upload_data("model.tar.gz", bucket, s3_code_prefix)
Cuando la imagen de Docker y los archivos relacionados con la inferencia estén listos, crea el modelo, la configuración para el punto de enlace y el punto de enlace:
from sagemaker.utils import name_from_base
blip_model_version = "blip2-flan-t5-xl"
model_name = name_from_base(blip_model_version)
model = Model(
image_uri=inference_image_uri,
model_data=s3_code_artifact,
role=role,
name=model_name,
)
model.deploy(
initial_instance_count=1,
instance_type="ml.g5.2xlarge",
endpoint_name=model_name
)
Cuando el estado del punto de enlace esté en servicio, puedes invocar el punto de enlace para la generación de subtítulos de imagen y la tarea de generación de texto a partir de imágenes sin entrenamiento. Para la tarea de generación de subtítulos de imagen, solo necesitas pasar una imagen al punto de enlace:
import base64
import json
from PIL import Image
smr_client = boto3.client("sagemaker-runtime")
def encode_image(img_file):
with open(img_file, "rb") as image_file:
img_str = base64.b64encode(image_file.read())
base64_string = img_str.decode("latin1")
return base64_string
def run_inference(endpoint_name, inputs):
response = smr_client.invoke_endpoint(
EndpointName=endpoint_name, Body=json.dumps(inputs)
)
print(response["Body"].read())
test_image = "carcrash-ai.jpeg"
base64_string = encode_image(test_image)
inputs = {"image": base64_string}
run_inference(endpoint_name, inputs)
Para la tarea de generación de texto a partir de imágenes sin entrenamiento, además de la imagen de entrada, debes definir la pregunta como una indicación:
base64_string = encode_image(test_image)
inputs = {"prompt": "Pregunta: ¿qué sucedió en esta foto? Respuesta:", "image": base64_string}
run_inference(endpoint_name, inputs)
Utilizar BLIP-2 y LLM para la moderación de contenido
En esta etapa, puedes realizar consultas sobre la imagen proporcionada y recuperar información oculta. Con LLM, organizas las consultas y recuperas información para generar el resultado en formato JSON. Puedes dividir esta tarea en las siguientes dos sub tareas:
- Extraer información de la imagen con el modelo BLIP-2.
- Generar el resultado final y la explicación con LLM.
Extraer información de la imagen con el modelo BLIP-2
Para recuperar suficiente información útil oculta de la imagen proporcionada, debes definir las consultas. Debido a que cada consulta invocará el punto de enlace una vez, muchas consultas pueden llevar a un tiempo de procesamiento más largo. Por lo tanto, sugerimos que las consultas sean de alta calidad y cubran todas las políticas, pero sin duplicados. En nuestro código de muestra, definimos las consultas de la siguiente manera:
check_list = [
"¿Esta foto contiene una persona completamente desnuda?",
"¿Esta foto contiene una persona en topless?",
"¿Esta foto contiene un arma?",
"¿Esta foto contiene información de contacto?",
"¿Esta foto contiene a alguien fumando?",
"¿Esta foto contiene sangre?",
"¿Hay personas peleando en esta foto?",
"¿Esta foto contiene palabras de acoso?"
]
Con las consultas anteriores, invoca el punto de enlace de BLIP-2 para recuperar la información con el siguiente código:
test_image = "./surf_swimwear.png"
raw_image = Image.open(test_image).convert('RGB')
base64_string = encode_image(test_image)
conversations = """"""
for question in check_list:
inputs = {"prompt": f"Pregunta: {question}? Respuesta:", "image": base64_string}
response = run_inference(endpoint_name, inputs)
conversations += f"""
Pregunta: {question}
Respuesta: {response}.
"""
Además de la información recuperada mediante consultas, puede obtener información con la tarea de descripción de imágenes invocando el punto de conexión sin el campo prompt
en la carga útil:
inputs = {"image": base64_string}
response = smr_client.invoke_endpoint(
EndpointName=endpoint_name, Body=json.dumps(inputs)
)
image_caption = response["Body"].read().decode('utf-8')
Puede combinar el contenido de las consultas y respuestas con la descripción de la imagen y utilizar esta información recuperada para la tarea posterior, descrita en la siguiente sección.
Generar el resultado final y la explicación con el LLM
Los modelos de lenguaje grandes (LLM) como Llama 2 pueden generar resultados de alta calidad con la plantilla de consigna adecuada. Mediante Amazon SageMaker JumpStart, los profesionales de ML pueden elegir entre una amplia selección de modelos base disponibles públicamente. Con solo unos clics en SageMaker Studio, ahora puede descubrir e implementar Llama 2.
Los resultados finales dependen de un LLM con una plantilla de consigna específica. Dicha consigna consta de: la política de moderación basada en categorías de moderación inapropiada u ofensiva; información de imagen extraída de BLIP-2; la plantilla de pregunta para el LLM preguntando si la foto contiene contenido inseguro y solicitando su categoría y motivo si es insegura; e instrucciones para generar los resultados en formato JSON. La plantilla de consigna diseñada permite que el LLM determine si la imagen viola la política de moderación, identificar la categoría de la violación, explicar por qué y proporcionar la salida en un formato JSON estructurado.
El código fuente principal es el siguiente:
prompt_template = f"""
A continuación se muestra la política de moderación de nuestra empresa, basada en la política de moderación, recopilamos información de imagen de la imagen cargada por el usuario. Responda la pregunta con formato JSON.
###### política de moderación ######
{moderation_policy}
###### Información de la imagen ######
{conversations}
###### Pregunta ######
En base a la siguiente política de moderación y preguntas y respuestas, dígame si la foto contiene contenido inseguro, también indique su categoría y motivo si es insegura. Responda la pregunta con el siguiente formato y solo ponga la explicación en el campo de motivo:
"""
prompt_template += """
{
"flag": "xxx",
"category": "xxx",
"reason": "the reason is ..."
}
"""
dialog = [
{"role": "user", "content": prompt_template}
]
Puede personalizar la consigna según su propio caso de uso. Consulte el cuaderno para obtener más detalles. Cuando la consigna esté lista, puede invocar el punto de conexión del LLM para generar resultados:
endpoint_name = "jumpstart-dft-meta-textgeneration-llama-2-70b-f"
def query_endpoint(payload):
client = boto3.client("sagemaker-runtime")
response = client.invoke_endpoint(
EndpointName=endpoint_name,
ContentType="application/json",
Body=json.dumps(payload),
CustomAttributes="accept_eula=true",
)
response = response["Body"].read().decode("utf8")
response = json.loads(response)
return response
payload = {
"inputs": [dialog],
"parameters": {"max_new_tokens": 256, "top_p": 0.9, "temperature": 0.5}
}
result = query_endpoint(payload)[0]
Parte de la salida generada es la siguiente:
> Asistente: {
"flag": "inseguro",
"category": "Sugestivo",
"reason": "La foto contiene a una persona sin camiseta, lo cual se considera contenido sugestivo."
}
Explicación:
La foto contiene a una persona sin camiseta, lo cual viola la regla número 2 de la política de moderación, que establece que el contenido sugestivo incluye "Ropa de baño o ropa interior femenina, Ropa de baño o ropa interior masculina, Desnudos parciales, Hombres con el torso desnudo, Ropa reveladora y Situaciones sexuales". Por lo tanto, la foto se considera insegura y se clasifica como Sugestivo.
De vez en cuando, Llama 2 adjunta una explicación adicional además de la respuesta del asistente. Puede utilizar el código de análisis para extraer datos JSON de los resultados generados originales:
answer = result['generation']['content'].split('}')[0]+'}'
json.loads(answer)
Ventajas de los enfoques generativos
Las secciones anteriores mostraron cómo implementar la parte principal de la inferencia del modelo. En esta sección, cubrimos varios aspectos de los enfoques generativos, incluyendo comparaciones con los enfoques convencionales y perspectivas.
La siguiente tabla compara cada enfoque.
. | Enfoque Generativo | Enfoque de Clasificación |
Adquisición de datos etiquetados | Modelo pre-entrenado en un gran número de imágenes, inferencia sin etiquetas | Requiere datos de todos los tipos de categorías |
Generalización del modelo | Modelo pre-entrenado con varios tipos de imágenes | Requiere un gran volumen de datos relacionados con moderación de contenido para mejorar la generalización del modelo |
Eficiencia operativa | Capacidades de inferencia sin etiquetas | Requiere entrenar el modelo para reconocer diferentes patrones y volver a entrenar cuando se agregan etiquetas |
Explicabilidad | Razonamiento como salida de texto, gran experiencia de usuario | Difícil de lograr razonamiento, difícil de explicar e interpretar |
Naturaleza adversarial | Robusto | Retraining de alta frecuencia |
Posibles casos de uso del razonamiento multimodal más allá de la moderación de contenido
Los modelos BLIP-2 se pueden aplicar para diversos propósitos, con o sin ajuste fino, que incluyen lo siguiente:
- Descripción de imágenes – Esto pide al modelo que genere una descripción de texto para el contenido visual de la imagen. Como se ilustra en la siguiente imagen de ejemplo (izquierda), podemos tener “un hombre está parado en la playa con una tabla de surf” como descripción de la imagen.
- Respuesta a preguntas visuales – Como muestra la imagen de ejemplo en el medio, podemos preguntar “¿Es contenido relacionado con comercio?” y tenemos “sí” como respuesta. Además, BLIP-2 admite la conversación de varias rondas y genera la siguiente pregunta: “¿Por qué crees eso?” Basado en la pista visual y las capacidades de LLM, BLIP-2 produce “es un letrero de Amazon”.
- Recuperación de texto de imágenes – Dada la pregunta “Texto en la imagen”, podemos extraer el texto de la imagen “es lunes pero sigue sonriendo”, como se muestra en la imagen a la derecha.
Las siguientes imágenes muestran ejemplos para demostrar la capacidad de conversión de imágenes a texto sin entrenamiento previo del razonamiento de conocimiento visual.
Como podemos ver en los diversos ejemplos anteriores, los modelos multimodales abren nuevas oportunidades para resolver problemas complejos que los modelos unimodales tradicionales tendrían dificultades para abordar.
Limpieza
Para evitar incurrir en cargos futuros, elimine los recursos creados como parte de esta publicación. Puede hacer esto siguiendo las instrucciones en la sección de limpieza del cuaderno, o eliminando los puntos de conexión creados a través de la consola de SageMaker y los recursos almacenados en el bucket de S3.
Conclusión
En esta publicación, discutimos la importancia de la moderación de contenido en el mundo digital y destacamos sus desafíos. Propusimos un nuevo método para ayudar a mejorar la moderación de contenido con datos de imagen y realizar respuestas a preguntas sobre las imágenes para extraer automáticamente información útil. También proporcionamos una discusión adicional sobre las ventajas de utilizar un enfoque basado en IA generativa en comparación con el enfoque tradicional basado en clasificación. Por último, ilustramos los posibles casos de uso de modelos de lenguaje visual más allá de la moderación de contenido.
Te animamos a aprender más explorando SageMaker y construyendo una solución utilizando la solución de multimodalidad proporcionada en esta publicación y un conjunto de datos relevante para tu negocio.