Создайте генеративное решение для модерации контента на основе искусственного интеллекта с использованием Amazon SageMaker JumpStart

Создайте генеративное решение для модерации контента с помощью Amazon SageMaker JumpStart

Модерация контента играет ключевую роль в поддержании онлайн-безопасности и соблюдении ценностей и стандартов веб-сайтов и социальных медиа-платформ. Ее значимость подчеркивается тем, что она защищает пользователей от нежелательного контента, обеспечивая их благополучие в цифровых пространствах. Например, в рекламной индустрии модерация контента служит для защиты брендов от нежелательных ассоциаций, тем самым способствуя повышению репутации и росту доходов. Рекламодатели приоритетно стремятся к соответствию своего бренда соответствующему контенту, чтобы сохранить свою репутацию и избежать негативной публичности. Модерация контента также играет критическую роль в финансовом и здравоохранительном секторах, где она выполняет несколько функций. Она имеет важное значение для идентификации и защиты конфиденциальной личной и здравоохранительной информации (PII, PHI). Соблюдая внутренние стандарты и правила и соответствуя внешним регуляциям, модерация контента повышает цифровую безопасность для пользователей. Таким образом, предотвращает случайное распространение конфиденциальных данных на общедоступных платформах, обеспечивая сохранение конфиденциальности пользователей и безопасность данных.

В этом посте мы представляем новый метод модерации контента на основе изображений с мультимодальным предварительным обучением и большой языковой моделью (LLM). С помощью мультимодального предварительного обучения мы можем напрямую задавать вопросы об интересующем нас содержимом изображения, и модель сможет на них отвечать. Это позволяет пользователям общаться с изображением, чтобы убедиться, содержит ли оно неподходящий контент, нарушающий политику организации. Мы используем мощные возможности генерации LLM для генерации окончательного решения, включая безопасные/небезопасные метки и тип категории. Кроме того, разработав шаблон запроса, мы можем заставить LLM генерировать определенный формат вывода, такой как JSON. Разработанный шаблон запроса позволяет LLM определить, нарушает ли изображение политику модерации, определить категорию нарушения, объяснить причину и предоставить вывод в структурированном формате JSON.

Мы используем BLIP-2 в качестве метода мультимодального предварительного обучения. BLIP-2 является одной из передовых моделей в области мультимодального предварительного обучения и превосходит большинство существующих методов в области ответов на визуальные вопросы, описания изображений и поиска текста по изображениям. Для нашей LLM мы используем Llama 2, следующее поколение открытой LLM, которая превосходит существующие открытые языковые модели по многим показателям, включая рассуждение, программирование, уровень владения и знания. На следующей диаграмме показаны компоненты решения.

Проблемы модерации контента

Традиционные методы модерации контента, такие как модерация, основанная на людях, не могут справиться с растущим объемом пользовательского контента (UGC). По мере увеличения объема UGC, модераторы могут быть перегружены и испытывать трудности с эффективной модерацией контента. Это приводит к плохому пользовательскому опыту, высоким затратам на модерацию и рискам для бренда. Модерация, основанная на людях, также подвержена ошибкам, что может привести к несогласованной модерации и предвзятым решениям. Для решения этих проблем модерации контента, основанной на машинном обучении (ML), было предложено несколько решений. Модели ML могут анализировать большие объемы UGC и идентифицировать контент, нарушающий политику организации. Модели ML могут быть обучены распознавать шаблоны и идентифицировать проблемный контент, такой как ненавистная речь, спам и неподходящий материал. Согласно исследованию “Защитите ваших пользователей, бренд и бюджет с помощью модерации контента на основе искусственного интеллекта”, модерация контента, основанная на ML, может помочь организациям вернуть до 95% времени, которое их команды тратят на ручную модерацию контента. Это позволяет организациям сосредоточить свои ресурсы на более стратегических задачах, таких как развитие сообщества и создание контента. Модерация контента, основанная на ML, также может снизить затраты на модерацию, поскольку она более эффективна, чем модерация, основанная на людях.

Несмотря на преимущества модерации контента, основанной на ML, у нее все еще есть пространство для дальнейшего улучшения. Эффективность алгоритмов ML в значительной степени зависит от качества данных, на которых они обучаются. Если модели обучаются на субъективных или неполных данных, они могут принимать ошибочные решения по модерации, подвергая организации риску для бренда и возможным правовым обязательствам. Применение ML-подходов для модерации контента приводит к ряду проблем, которые требуют тщательного рассмотрения. Эти проблемы включают:

  • Получение помеченных данных – Это может быть дорогостоящим процессом, особенно для сложных задач модерации контента, требующих обучения разметчиков. Эта стоимость может затруднить сбор достаточно больших наборов данных для обучения модели ML с легкостью. Кроме того, точность модели в значительной степени зависит от качества обучающих данных, и субъективные или неполные данные могут привести к неточным решениям по модерации, что приводит к риску для бренда и юридическим обязательствам.
  • Обобщение модели – Это критически важно для применения подходов, основанных на ML. Модель, обученная на одном наборе данных, может плохо обобщаться на другой набор данных, особенно если наборы данных имеют различные распределения. Поэтому необходимо обеспечить, чтобы модель была обучена на разнообразном и представительном наборе данных, чтобы гарантировать ее хорошую обобщающую способность для новых данных.
  • Операционная эффективность – Это еще одна проблема при использовании традиционных подходов, основанных на ML, для модерации контента. Постоянное добавление новых меток и повторное обучение модели при добавлении новых классов может быть затратным и занимать много времени. Кроме того, необходимо обеспечить регулярное обновление модели, чтобы она соответствовала изменениям в модерируемом контенте.
  • Объяснимость – Пользователи могут считать платформу предвзятой или несправедливой, если контент помечается или удаляется без объяснения, что приводит к плохому пользовательскому опыту. Аналогично, отсутствие четких объяснений может сделать процесс модерации контента неэффективным, затратным и времязатратным для модераторов.
  • Адверсарная природа – Адверсарная природа модерации контента на основе изображений представляет уникальную проблему для традиционных подходов, основанных на ML. Злоумышленники могут пытаться обойти механизмы модерации контента

    Мульти-модальное рассуждение с BLIP-2

    Модели мульти-модального машинного обучения относятся к моделям, которые могут обрабатывать и интегрировать данные из разных источников или модальностей, таких как изображения, текст, аудио, видео и другие формы структурированных или неструктурированных данных. Одной из популярных моделей мульти-модальности является модель визуально-языкового восприятия, такая как BLIP-2, которая сочетает в себе компьютерное зрение и обработку естественного языка (NLP) для понимания и генерации как визуальной, так и текстовой информации. Эти модели позволяют компьютерам интерпретировать значение изображений и текста таким образом, чтобы имитировать человеческое понимание. Модели визуально-языкового восприятия могут решать различные задачи, включая генерацию описания изображения, поиск изображений по текстовому запросу, ответы на вопросы на естественном языке и многое другое. Например, модель генерации описания изображения может создавать естественноязыковое описание изображения, а модель поиска изображений по тексту может искать изображения на основе текстового запроса. Модели визуально-языкового вопросно-ответного восприятия могут отвечать на вопросы на естественном языке о изображениях, а мульти-модальные чат-боты могут использовать визуальные и текстовые входные данные для генерации ответов. В контексте модерации контента вы можете использовать эту возможность для запроса к списку вопросов.

    BLIP-2 состоит из трех частей. Первая компонента – это замороженный кодировщик изображений, ViT-L/14 из CLIP, который принимает входные данные изображения. Вторая компонента – это замороженная модель языкового моделирования, FlanT5, которая выводит текст. Третья компонента – это обучаемый модуль, называемый Q-Former, легковесный трансформер, который соединяет замороженный кодировщик изображений с замороженной моделью языкового моделирования. Q-Former использует обучаемые векторы запросов для извлечения визуальных признаков из замороженного кодировщика изображений и передает наиболее полезный визуальный признак модели языкового моделирования для вывода нужного текста.

    Процесс предварительного обучения состоит из двух этапов. На первом этапе проводится обучение представления визуально-языкового восприятия, чтобы обучить Q-Former извлекать наиболее релевантное визуальное представление для текста. На втором этапе проводится обучение генерации изображений в тексте путем соединения вывода Q-Former с замороженной моделью языкового моделирования и обучения Q-Former выводить визуальные представления, которые могут быть интерпретированы моделью языкового моделирования.

    BLIP-2 достигает передовых результатов в различных задачах визуально-языкового восприятия, несмотря на значительно меньшее количество обучаемых параметров по сравнению с существующими методами. Модель также демонстрирует возникающие возможности генерации изображений в тексте без обучения, которые могут следовать естественноязыковым инструкциям. Следующая иллюстрация изменена по сравнению с оригинальной научной статьей.

    Обзор решения

    Следующая диаграмма иллюстрирует архитектуру решения.

    В следующих разделах мы покажем, как развернуть BLIP-2 на конечную точку Amazon SageMaker и использовать BLIP-2 и модель языкового моделирования для модерации контента.

    Предварительные требования

    Вам понадобится учетная запись AWS с ролью идентификации и управления доступом AWS (IAM) с правами на управление ресурсами, созданными в рамках решения. Для получения подробной информации см. Создание автономной учетной записи AWS.

    Если вы впервые работаете с Amazon SageMaker Studio, вам сначала нужно создать домен SageMaker. Кроме того, вам может потребоваться запросить увеличение квоты обслуживаемых экземпляров SageMaker. Для модели BLIP-2 мы используем обслуживаемый экземпляр SageMaker ml.g5.2xlarge. Для модели Llama 2 13B мы используем обслуживаемый экземпляр SageMaker ml.g5.12xlarge.

    Развертывание BLIP-2 на конечную точку SageMaker

    Вы можете разместить модель языкового моделирования на SageMaker с использованием контейнера Large Model Inference (LMI), который оптимизирован для размещения больших моделей с использованием DJLServing. DJLServing – это высокопроизводительное универсальное решение для обслуживания моделей, работающих на Deep Java Library (DJL) и не зависящее от языка программирования. Чтобы узнать больше о DJL и DJLServing, см. Развертывание больших моделей на Amazon SageMaker с использованием DJLServing и параллельного вывода моделей DeepSpeed. С помощью контейнера SageMaker LMI модель BLIP-2 может быть легко реализована с использованием библиотеки Hugging Face и размещена на SageMaker. Вы можете запустить блокнот blip2-sagemaker.ipynb для выполнения этого шага.

    Для подготовки образа Docker и файлов модели вам необходимо получить образ Docker DJLServing, упаковать скрипт вывода и файлы конфигурации в архив model.tar.gz и загрузить его в бакет Amazon Simple Storage Service (Amazon S3). Дополнительные сведения можно найти в скрипте вывода и файле конфигурации.

    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)

    Когда образ Docker и связанные с выводом файлы готовы, вы создаете модель, конфигурацию для конечной точки и саму конечную точку:

    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
    )

    Когда состояние конечной точки становится «в работе», вы можете вызвать конечную точку для генерации подписей к изображениям и задачи нулевого переключения отображения в язык. Для задачи подписей к изображениям вам просто нужно передать изображение в конечную точку:

    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)

    Для задачи нулевого переключения отображения в язык вам, помимо входного изображения, нужно определить вопрос в качестве подсказки:

    base64_string = encode_image(test_image)
    inputs = {"prompt": "Вопрос: что произошло на этом фото? Ответ:", "image": base64_string}
    run_inference(endpoint_name, inputs)

    Использование BLIP-2 и LLM для модерации контента

    На этом этапе вы можете выполнять запросы к данному изображению и извлекать скрытую информацию. С помощью LLM вы организуете запросы и извлекаете информацию для генерации результата в формате JSON. Эту задачу можно условно разделить на две подзадачи:

    1. Извлечение информации из изображения с помощью модели BLIP-2.
    2. Генерация окончательного результата и объяснения с помощью LLM.

    Извлечение информации из изображения с помощью модели BLIP-2

    Чтобы извлечь достаточно полезной скрытой информации из заданного изображения, вам необходимо определить запросы. Поскольку каждый запрос вызывает конечную точку один раз, множество запросов приведет к увеличению времени обработки. Поэтому мы предлагаем делать запросы высокого качества, охватывающие все политики, но без дублирования. В нашем примере мы определяем запросы следующим образом:

    check_list = [
    "Содержит ли это фото полностью обнаженного человека?",
    "Содержит ли это фото обнаженного человека без верхней одежды?",
    "Содержит ли это фото оружие?",
    "Содержит ли это фото контактную информацию?",
    "Содержит ли это фото курильщика?",
    "Содержит ли это фото кровь?",
    "Имеются ли на этом фото люди, сражающиеся?",
    "Содержит ли это фото слова, вызывающие досаду?"
    ]

    С помощью предыдущих запросов вызовите конечную точку BLIP-2 для извлечения информации с помощью следующего кода:

    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"Вопрос: {question}? Ответ:", "image": base64_string}
        response = run_inference(endpoint_name, inputs)
        conversations += f"""
    Вопрос: {question}
    Ответ: {response}.
    """

    Помимо информации, полученной с помощью запросов, вы можете получить информацию с помощью задачи подписи изображения, вызвав конечную точку без поля prompt в теле запроса:

    inputs = {"image": base64_string}
    response = smr_client.invoke_endpoint(
    EndpointName=endpoint_name, Body=json.dumps(inputs)
    )
    image_caption = response["Body"].read().decode('utf-8')

    Вы можете объединить содержимое запросов и ответов с подписью изображения и использовать эту полученную информацию для последующей задачи, описанной в следующем разделе.

    Создание окончательного результата и объяснения с LLM

    Большие языковые модели (LLM), такие как Llama 2, могут генерировать результаты высокого качества с правильным шаблоном запроса. С помощью Amazon SageMaker JumpStart, специалисты по машинному обучению могут выбирать из широкого выбора публично доступных основных моделей. Всего за несколько кликов в SageMaker Studio вы можете открыть и развернуть Llama 2.

    Окончательные результаты зависят от LLM с определенным шаблоном запроса. Такой запрос состоит из: политики модерации на основе категорий неприемлемого или оскорбительного контента; информации об изображении, полученной из BLIP-2; шаблона вопроса к LLM с вопросом, содержит ли фотография небезопасный контент и запрашивает его категорию и причину, если это небезопасно; а также инструкции по выводу результатов в формате JSON. Созданный шаблон запроса позволяет LLM определить, нарушает ли изображение политику модерации, определить категорию нарушения, объяснить причину и предоставить результат в структурированном формате JSON.

    Основной исходный код выглядит следующим образом:

    prompt_template = f"""
    Вот политика модерации нашей компании, основанная на политике модерации, мы собираем информацию об изображении, загруженном пользователем. Пожалуйста, ответьте на вопрос в формате json. 
            
    ###### политика модерации ######
    {moderation_policy}
            
    ###### информация об изображении ######
    {conversations}
            
    ###### Вопрос ######
    На основе следующей политики модерации и вопроса ответьте, содержит ли фотография небезопасный контент, а также укажите его категорию и причину в случае его небезопасности. Пожалуйста, ответьте на вопрос в следующем формате и в поле причины укажите только объяснение:  
    """
    
    prompt_template += """
    {
        "flag": "xxx",
        "category": "xxx",
        "reason": "the reason is ..."
    }
    """
    
    dialog = [
        {"role": "user", "content": prompt_template}
    ]

    Вы можете настроить запрос на основе своего собственного случая использования. Дополнительные сведения смотрите в записной книжке. Когда запрос готов, вы можете вызвать конечную точку LLM для генерации результатов:

    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]

    Часть сгенерированного вывода выглядит следующим образом:

    > Assistant:  {
        "flag": "unsafe",
        "category": "Suggestive",
        "reason": "The photo contains a topless person, which is considered suggestive content."
    }
    
    Объяснение:
    Фотография содержит обнаженного человека, что нарушает правило номер 2 политики модерации, которое гласит, что непристойный контент включает "женское плавательное или нижнее белье, мужское плавательное или нижнее белье, частичное обнажение, обнаженный мужчина, провокационная одежда и сексуальные ситуации". Поэтому фотография считается небезопасной и относится к категории "Подозрительное".

    Иногда Llama 2 добавляет дополнительное объяснение, помимо ответа от помощника. Вы можете использовать код разбора для извлечения данных JSON из оригинальных сгенерированных результатов:

    answer = result['generation']['content'].split('}')[0]+'}'
    json.loads(answer)

    Преимущества генеративных подходов

    В предыдущих разделах было показано, как реализовать основную часть вывода модели. В этом разделе мы рассмотрим различные аспекты генеративных подходов, включая сравнение с традиционными подходами и перспективы.

    В следующей таблице сравниваются каждый подход.

    . Генеративный подход Подход классификации
    Получение размеченных данных Предварительно обученная модель на большом количестве изображений, нулевая классификация Требуется данные всех типов категорий
    Обобщение модели Предварительно обученная модель с различными типами изображений Требуется большой объем данных, связанных с модерацией контента, для улучшения обобщения модели
    Эффективность работы Возможности нулевой классификации Требуется обучение модели для распознавания различных шаблонов и повторное обучение при добавлении меток
    Объяснимость Обоснование в виде текстового вывода, отличный пользовательский опыт Трудно достичь обоснования, сложно объяснить и интерпретировать
    Адверсарная природа Устойчивость Частая повторная тренировка

    Потенциальные применения мультимодального рассуждения за пределами модерации контента

    Модели BLIP-2 могут использоваться для разных целей с или без настройки, включая следующее:

    • Описание изображений – Это позволяет модели генерировать текстовое описание визуального содержимого изображения. Как показано на следующем примере изображения (слева), мы можем получить описание “мужчина стоит на пляже с серфингом”.
    • Визуальный ответ на вопросы – Как показано на примере изображения посередине, мы можем задать вопрос “Связано ли это с коммерческим контентом?” и получить ответ “да”. Кроме того, BLIP-2 поддерживает многораундовые диалоги и генерирует следующий вопрос: “Почему вы так думаете?” Исходя из визуальных подсказок и возможностей LLM, BLIP-2 выводит ответ “это знак для Amazon”.
    • Поиск текста на изображении – При заданном вопросе “Текст на изображении” мы можем извлечь текст с изображения “сегодня понедельник, но улыбайся”, как показано на изображении справа.

    Следующие изображения демонстрируют примеры, иллюстрирующие возможность перевода изображений в текст с использованием мультимодального рассуждения.

    Как видно из приведенных выше примеров, модели мультимодальности открывают новые возможности для решения сложных проблем, с которыми традиционные модели с одним модальным входом могут испытывать трудности.

    Очистка

    Чтобы избежать дальнейших расходов, удалите созданные ресурсы, которые были частью этого сообщения. Вы можете сделать это, следуя инструкциям в разделе очистки записной книжки, или удалить созданные конечные точки через консоль SageMaker и ресурсы, хранящиеся в S3-ведре.

    Заключение

    В этом сообщении мы обсудили важность модерации контента в цифровом мире и выделили ее проблемы. Мы предложили новый метод для улучшения модерации контента с помощью изображений и проведения вопросно-ответного анализа на основе изображений для автоматического извлечения полезной информации. Мы также провели дальнейшее обсуждение преимуществ использования подхода на основе генеративной искусственной интеллекта по сравнению с традиционным классификационным подходом. Наконец, мы иллюстрировали потенциальные применения моделей визуального языка за пределами модерации контента.

    Мы призываем вас узнать больше, изучив SageMaker и создавая решение с использованием предоставленного в этом сообщении мультимодального подхода и набора данных, соответствующего вашему бизнесу.