Повысьте производительность генеративных языковых моделей с помощью подсказок самосогласованности на Amazon Bedrock | Веб-сервисы Amazon

Повысьте производительность генеративных языковых моделей с помощью подсказок самосогласованности на Amazon Bedrock | Веб-сервисы Amazon

Генеративные языковые модели оказались чрезвычайно эффективными при решении задач логической и аналитической обработки естественного языка (НЛП). Кроме того, использование быстрый инжиниринг может существенно повысить их производительность. Например, цепочка мыслей (CoT), как известно, улучшает способность модели решать сложные многоэтапные задачи. Чтобы дополнительно повысить точность выполнения задач, связанных с рассуждением, самосогласованность предложен подход подсказки, заменяющий жадное декодирование на стохастическое при генерации языка.

Коренная порода Амазонки — это полностью управляемый сервис, который предлагает выбор высокопроизводительных базовых моделей от ведущих компаний, занимающихся искусственным интеллектом, и Amazon через единый API, а также широкий набор возможностей для создания генеративный ИИ приложения с безопасностью, конфиденциальностью и ответственным искусственным интеллектом. С пакетный вывод API, вы можете использовать Amazon Bedrock для пакетного выполнения логических выводов с использованием базовых моделей и более эффективного получения ответов. В этом посте показано, как реализовать подсказки самосогласованности с помощью пакетного вывода в Amazon Bedrock, чтобы повысить производительность модели при выполнении арифметических задач и задач рассуждения с множественным выбором.

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

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

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

Различия между самосогласованностью и подсказками ЦТ.

Стратегии декодирования для генерации текста

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

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

Отбор проб вносит стохастичность в процесс декодирования путем случайного выбора каждого последующего токена на основе прогнозируемого распределения вероятностей. Эта случайность приводит к большей изменчивости результатов. Стохастическое декодирование оказывается более подходящим для охвата разнообразия потенциальных результатов и часто дает более творческие ответы. Более высокие значения температуры вызывают больше колебаний и повышают креативность реакции модели.

Техники подсказок: ЦТ и самосогласованность

Способность языковых моделей к рассуждению можно улучшить с помощью быстрого проектирования. В частности, было показано, что CoT вызвать рассуждения в сложных задачах НЛП. Один из способов реализации нулевой выстрел ЦТ осуществляется посредством быстрого дополнения инструкцией «думать шаг за шагом». Другой способ – представить модель на примерах промежуточных шагов рассуждения. подсказка из нескольких кадров мода. Оба сценария обычно используют жадное декодирование. CoT приводит к значительному увеличению производительности по сравнению с простыми инструкциями по арифметике, здравому смыслу и символическим рассуждениям.

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

  1. Подскажите языковую модель с примерами CoT, чтобы вызвать рассуждения.
  2. Замените жадное декодирование стратегией выборки, чтобы создать разнообразный набор путей рассуждения.
  3. Объедините результаты, чтобы найти наиболее последовательный ответ в наборе ответов.

Показано, что самосогласованность превосходит подсказки CoT в популярных тестах арифметики и здравого смысла. Ограничением подхода являются его большие вычислительные затраты.

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

Предпосылки

В этом пошаговом руководстве предполагаются следующие предварительные условия:

Управление доступом к моделям на Amazon Bedrock

Ориентировочная стоимость запуска кода, показанного в этом посте, составляет 100 долларов США, при условии, что вы запускаете подсказку самосогласованности один раз с 30 путями рассуждения, используя одно значение для выборки на основе температуры.

Набор данных для проверки возможностей арифметического мышления

GSM8K представляет собой набор данных математических задач начальной школы, собранных людьми, с высоким языковым разнообразием. Решение каждой задачи занимает от 2 до 8 шагов и требует выполнения последовательности элементарных вычислений с основными арифметическими действиями. Эти данные обычно используются для оценки возможностей многошагового арифметического рассуждения моделей генеративного языка. Поезд GSM8K включает 7,473 записи. Ниже приведен пример:

{"question": "Natalia sold clips to 48 of her friends in April, and then she sold half as many clips in May. How many clips did Natalia sell altogether in April and May?", "answer": "Natalia sold 48/2 = <<48/2=24>>24 clips in May.nNatalia sold 48+24 = <<48+24=72>>72 clips altogether in April and May.n#### 72"}

Настройте пакетный вывод с помощью Amazon Bedrock.

Пакетный вывод позволяет выполнять несколько вызовов вывода в Amazon Bedrock асинхронно и повышать производительность вывода модели в больших наборах данных. На момент написания этой статьи служба находится в предварительной версии и доступна только через API. Ссылаться на Запустить пакетный вывод для доступа к API пакетного вывода через специальные SDK.

После того как вы скачали и распаковали архив SDK Python в экземпляре блокнота SageMaker его можно установить, выполнив следующий код в ячейке блокнота Jupyter:

# Install preview SDK packages
!pip install -q $(ls ./bedrock-python-sdk-reinvent/botocore-*.whl | head -1)
!pip install -q $(ls ./bedrock-python-sdk-reinvent/boto3-*.whl | head -1)

Отформатируйте и загрузите входные данные в Amazon S3.

Входные данные для пакетного вывода должны быть подготовлены в формате JSONL с recordId и modelInput ключи. Последнее должно соответствовать полю тела модели, которая будет вызвана на Amazon Bedrock. В частности, некоторые поддерживаемые параметры вывода для Cohere Command Он temperature на случайность, max_tokens для длины вывода и num_generations для генерации нескольких ответов, все из которых передаются вместе с prompt as modelInput:

data = [
    {
        "recordId": "1",
        "modelInput": {
            "prompt": prompt,
            "temperature": temperature,
            "max_tokens": max_tokens,
            "num_generations": n,
        },
    },
    ...,
]

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

Наши эксперименты по арифметическому рассуждению проводятся в режиме нескольких шагов без настройки или тонкой настройки Cohere Command. Мы используем тот же набор из восьми малокадровых образцов из цепочки мыслей (Таблица 20) и самосогласованность (Таблица 17) бумаги. Подсказки создаются путем объединения примеров с каждым вопросом из набора поездов GSM8K.

Мы установили max_tokens к 512 и num_generations до 5, максимума, разрешенного Cohere Command. Для жадного декодирования мы устанавливаем temperature до 0 и для самосогласованности мы проводим три эксперимента при температурах 0.5, 0.7 и 1. Каждая настройка дает разные входные данные в соответствии с соответствующими значениями температуры. Данные форматируются как JSONL и хранятся в Amazon S3.

# Set up S3 client
session = boto3.Session()
s3 = session.client("s3")

# Create S3 bucket with unique name to store input/output data
suffix = str(uuid.uuid4())[:8]
bucket = f"bedrock-self-consistency-{suffix}"
s3.create_bucket(
    Bucket=bucket, CreateBucketConfiguration={"LocationConstraint": session.region_name}
)

# Process data and output to new lines as JSONL
input_key = f"gsm8k/T{temperature}/input.jsonl"
s3_data = ""
for row in data:
    s3_data += json.dumps(row) + "n"
s3.put_object(Body=s3_data, Bucket=bucket, Key=input_key)

Создавайте и запускайте пакетные задания вывода в Amazon Bedrock.

Для создания заданий пакетного вывода требуется клиент Amazon Bedrock. Мы указываем пути ввода и вывода S3 и даем каждому заданию вызова уникальное имя:

# Create Bedrock client							    
bedrock = boto3.client("bedrock")

# Input and output config						     
input_config = {"s3InputDataConfig": {"s3Uri": f"s3://{bucket}/{input_key}"}}
output_config = {"s3OutputDataConfig": {"s3Uri": f"s3://{bucket}/{output_key}"}}

# Create a unique job name
suffix = str(uuid.uuid4())[:8] 
job_name = f"command-batch-T{temperature}-{suffix}"

Вакансии создали передав роль IAM, идентификатор модели, имя задания и конфигурацию ввода/вывода в качестве параметров API Amazon Bedrock:

response = bedrock.create_model_invocation_job(
    roleArn=f"arn:aws:iam::{account_id}:role/BedrockBatchInferenceRole",
    modelId="cohere.command-text-v14",
    jobName=job_name,
    inputDataConfig=input_config,
    outputDataConfig=output_config,
)
job_arn = response["jobArn"]

Список, Мониторинги остановка пакетные задания вывода поддерживаются соответствующими вызовами API. При создании рабочие места сначала отображаются как Submitted, тогда как InProgressи, наконец, как Stopped, Failedили Completed.

# Get job details
job_details = bedrock.get_model_invocation_job(jobIdentifier=job_arn)

Если задания успешно выполнены, сгенерированный контент можно будет получить из Amazon S3, используя его уникальное местоположение вывода.

# Get the output file key
s3_prefix = f"s3://{bucket}/"
output_path = job_details["outputDataConfig"]["s3OutputDataConfig"]["s3Uri"].replace(
    s3_prefix, ""
)
output_folder = job_details["jobArn"].split("/")[1]
output_file = (
    f'{job_details["inputDataConfig"]["s3InputDataConfig"]["s3Uri"].split("/")[-1]}.out'
)
result_key = f"{output_path}{output_folder}/{output_file}"

# Get output data
obj = s3.get_object(Bucket=bucket, Key=result_key)
content = obj["Body"].read().decode("utf-8").strip().split("n")

# Show answer to the first question
print(json.loads(content[0])["modelOutput"]["generations"][0]["text"])

[Out]: 'Natalia sold 48 * 1/2 = 24 clips less in May. This means she sold 48 + 24 = 72 clips in April and May. The answer is 72.'

Самосогласованность повышает точность модели при выполнении арифметических задач.

Подсказки самосогласованности Cohere Command превосходят жадный базовый уровень CoT с точки зрения точности набора данных GSM8K. Для обеспечения самосогласованности мы выбрали 30 независимых путей рассуждения при трех разных температурах с topP и topK установить на свой значения по умолчанию. Окончательные решения суммируются путем выбора наиболее последовательного варианта путем большинства голосований. В случае равенства мы случайным образом выбираем один из ответов большинства. Мы вычисляем значения точности и стандартного отклонения, усредненные за 100 прогонов.

На следующем рисунке показана точность набора данных GSM8K от команды Cohere с подсказкой жадного CoT (синий) и самосогласованность при значениях температуры 0.5 (желтый), 0.7 (зеленый) и 1.0 (оранжевый) в зависимости от количества выборок. пути рассуждения.

Точность команды Cohere с использованием самосогласованности и подсказок CoT.

На предыдущем рисунке показано, что самосогласованность повышает арифметическую точность по сравнению с жадным CoT, когда количество выбранных путей не превышает трех. Производительность постоянно увеличивается с дальнейшим ходом рассуждений, что подтверждает важность внесения разнообразия в процесс генерации мыслей. Cohere Command решает набор вопросов GSM8K с точностью 51.7% при запросе CoT по сравнению с 68% при 30 самосогласованных путях рассуждения при T=1.0. Все три измеренных значения температуры дают схожие результаты, при этом более низкие температуры сравнительно более эффективны на менее выбранных трассах.

Практические соображения по эффективности и стоимости

Самосогласованность ограничивается увеличением времени ответа и затрат, связанных с созданием нескольких выходных данных для каждого запроса. В качестве практической иллюстрации: пакетный вывод для жадной генерации с помощью Cohere Command по 7,473 записям GSM8K завершился менее чем за 20 минут. Задание приняло 5.5 миллионов токенов на вход и сгенерировало 630,000 XNUMX токенов на выходе. В настоящее время Цены вывода Amazon BedrockОбщая сумма понесенных затрат составила около 9.50 долларов США.

Для обеспечения согласованности с командой Cohere мы используем параметр вывода. num_generations для создания нескольких завершений для каждого запроса. На момент написания этой статьи Amazon Bedrock допускает максимум пять поколений и три одновременных Submitted пакетные задания вывода. Работы переходят к InProgress status последовательно, поэтому выборка более чем пяти путей требует нескольких вызовов.

На следующем рисунке показано время выполнения команды Cohere в наборе данных GSM8K. Общее время выполнения показано по оси X, а время выполнения каждого выбранного пути рассуждения — по оси Y. Жадная генерация выполняется в кратчайшие сроки, но требует более высоких временных затрат на каждый выбранный путь.

Среды выполнения команды Cohere

Жадная генерация для всего набора GSM20K завершается менее чем за 8 минут и демонстрирует уникальный путь рассуждения. Самосогласование с пятью выборками требует примерно на 50% больше времени и стоит около 14.50 долларов США, но за это время дает пять путей (более 500%). Общее время выполнения и стоимость увеличиваются поэтапно с каждыми дополнительными пятью выбранными путями. Анализ затрат и выгод показывает, что 1–2 задания пакетного вывода с 5–10 выборочными путями являются рекомендуемой настройкой для практической реализации самосогласованности. Это позволяет повысить производительность модели, сохраняя при этом затраты и задержки.

Самосогласованность повышает производительность модели за пределами арифметических рассуждений.

Ключевой вопрос для доказательства пригодности подсказок самосогласованности заключается в том, будет ли этот метод успешным в дальнейших задачах НЛП и языковых моделях. В качестве дополнения к варианту использования, связанному с Amazon, мы проводим небольшой анализ примеров вопросов из Сертификация AWS Solutions Architect Associate. Это экзамен с несколькими вариантами ответов по технологиям и сервисам AWS, требующий знаний предметной области и умения рассуждать и выбирать среди нескольких вариантов.

Мы готовим набор данных из САА-C01 и САА-C03 примеры экзаменационных вопросов. Из 20 доступных вопросов мы используем первые 4 в качестве примеров из нескольких вопросов и предлагаем модели ответить на оставшиеся 16. На этот раз мы проводим логический вывод с помощью модели AI21 Labs Jurassic-2 Mid и генерируем максимум 10 путей рассуждения в температура 0.7. Результаты показывают, что самосогласованность повышает производительность: хотя жадный CoT дает 11 правильных ответов, самосогласованность дает успех еще на 2.

В следующей таблице показаны результаты точности для 5 и 10 выбранных путей, усредненные за 100 запусков.

. Жадное декодирование T = 0.7
# выбранных путей: 5 68.6 74.1 ± 0.7
# выбранных путей: 10 68.6 78.9 ± 0.3

В следующей таблице мы представляем два экзаменационных вопроса, на которые жадный CoT дает неправильные ответы, хотя самосогласованность достигается, в каждом случае выделяя правильные (зеленые) или неправильные (красные) следы рассуждений, которые привели модель к выдаче правильных или неправильных ответов. Хотя не каждый выбранный путь, созданный самосогласованностью, является правильным, большинство сходится к истинному ответу по мере увеличения количества выбранных путей. Мы видим, что 5–10 путей обычно достаточно, чтобы улучшить результаты по сравнению с жадными результатами, при этом отдача с точки зрения эффективности превышает эти значения.

Question

Веб-приложение позволяет клиентам загружать заказы в корзину S3. Результирующие события Amazon S3 запускают функцию Lambda, которая вставляет сообщение в очередь SQS. Один экземпляр EC2 считывает сообщения из очереди, обрабатывает их и сохраняет в таблице DynamoDB, секционированной по уникальному идентификатору заказа. Ожидается, что в следующем месяце трафик увеличится в 10 раз, и архитектор решений проверяет архитектуру на предмет возможных проблем с масштабированием.

Какой компонент С наибольшей вероятностью потребует перестройки архитектуры, чтобы иметь возможность масштабироваться для размещения нового трафика?

А. Лямбда-функция
Б. Очередь SQS
C. Экземпляр EC2
D. Таблица DynamoDB

Приложение, работающее на AWS, использует для своей базы данных кластер БД Amazon Aurora в нескольких зонах доступности. Оценивая показатели производительности, архитектор решений обнаружил, что операции чтения из базы данных приводят к увеличению количества операций ввода-вывода и увеличению задержки запросов на запись в базу данных.

Что должен сделать архитектор решений, чтобы отделить запросы на чтение от запросов на запись?

А. Включите кэширование чтения в базе данных Aurora.
Б. Обновите приложение для чтения из резервного экземпляра в нескольких зонах доступности.
C. Создайте реплику Aurora и измените приложение для использования соответствующих конечных точек.
D. Создайте вторую базу данных Aurora и свяжите ее с основной базой данных в качестве реплики чтения.

Правильный ответ C – Один экземпляр EC2 не масштабируется и представляет собой единую точку отказа в архитектуре. Гораздо лучшим решением было бы разместить экземпляры EC2 в группе автоматического масштабирования в двух зонах доступности, считывающих сообщения из очереди. Остальные ответы — это все управляемые службы, которые можно настроить для масштабирования или которые будут масштабироваться автоматически. C – Реплики Aurora позволяют разгрузить трафик чтения. Реплики Aurora используют то же базовое хранилище, что и основная база данных, поэтому время задержки обычно очень мало. Реплики Aurora имеют собственные конечные точки, поэтому приложение необходимо настроить для направления трафика чтения на новые конечные точки.
Жадное декодирование Масштабирование экземпляра EC2 напрямую может оказаться невозможным, так как может быть невозможно изменить размер экземпляра. Масштабирования функции Lambda может быть недостаточно., поскольку функции Lambda имеют ограничение на выделение памяти в 6 ГБ. Масштабирования очереди SQS может быть недостаточно., поскольку SQS имеет ограничение в 10,000 XNUMX сообщений. Таблицы DynamoDB можно масштабировать, предоставив больше единиц емкости. Правильный ответ - Д. Изменение приложения для чтения из резервного экземпляра в нескольких зонах доступности. (вариант Б) – лучший подход. Резервный экземпляр асинхронно реплицируется из основного экземпляра, поэтому операции чтения не будут мешать операциям записи. Включение кэширования сквозного чтения (вариант А) или создание реплики Aurora (вариант C) не решит проблему конфликтов ввода-вывода. Создание второй базы данных Aurora и связывание ее в качестве реплики чтения (вариант D) также не решит проблему конфликтов ввода-вывода. Правильный ответ - Б.
Пример пути № 1 Масштабирование экземпляра EC2 в 10 раз по сравнению с его текущим размером может оказаться невозможным ни с точки зрения стоимости, ни с точки зрения производительности. Для этого потребуется более крупный экземпляр, который может быть дорогостоящим. Более экономичным подходом может быть использование группы меньших экземпляров (например, Auto Scaling Group) для распределения нагрузки. В этом случае экземпляр EC2, скорее всего, потребуется перепроектировать. Правильный ответ - С. Изменение приложения для использования соответствующих конечных точек не является практическим решением, поскольку потребует внесения изменений в код приложения. Правильный ответ — C: Создайте реплику Aurora и измените приложение, чтобы оно использовало соответствующие конечные точки.
Пример пути № 2 Масштабирование одного экземпляра EC2 сложнее и проблематичнее, чем масштабирование других компонентов службы. Amazon SQS, Lambda и DynamoDB могут масштабироваться автоматически. справиться с возросшей нагрузкой. Правильный ответ - С.

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

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

Убирать

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

Соображения

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

  • Ограничение доступа к API и базам данных для предотвращения несанкционированного использования.
  • Соблюдение лучших практик безопасности AWS в отношении доступа к ролям IAM и групп безопасности.
  • Проверка и очистка вводимых пользователем данных для предотвращения атак с быстрым внедрением.
  • Мониторинг и регистрация запущенных процессов для обеспечения возможности тестирования и аудита.

Заключение

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

Благодаря пакетному выводу Amazon Bedrock языковая модель Cohere Command генерирует самосогласованные ответы на ряд арифметических задач. Точность повышается с 51.7% при жадном декодировании до 68% при самосогласованной выборке по 30 путям рассуждения при T=1.0. Выборка пяти путей уже повышает точность на 7.5 процентных пунктов. Этот подход можно перенести на другие языковые модели и задачи рассуждения, о чем свидетельствуют результаты модели AI21 Labs Jurassic-2 Mid на сертификационном экзамене AWS. В наборе вопросов небольшого размера самосогласованность с пятью выбранными путями повышает точность на 5 процентных пунктов по сравнению с жадным CoT.

Мы рекомендуем вам реализовать подсказки самосогласованности для повышения производительности ваших собственных приложений с помощью генеративных языковых моделей. Узнать больше о Когерентная команда и AI21 Labs Юрский период модели доступны на Amazon Bedrock. Дополнительные сведения о пакетном выводе см. Запустить пакетный вывод.

Благодарности

Автор благодарит технических рецензентов Амина Таджгардуна и Патрика МакСвини за полезные отзывы.


Об авторе

Повысьте производительность генеративных языковых моделей с помощью подсказок самосогласованности на Amazon Bedrock | Веб-сервисы Amazon PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Люсия Сантамария — старший научный сотрудник Университета машинного обучения Amazon, где она занимается повышением уровня компетентности в области машинного обучения во всей компании посредством практического обучения. Лусия имеет докторскую степень по астрофизике и страстно желает демократизировать доступ к техническим знаниям и инструментам.

Отметка времени:

Больше от Машинное обучение AWS