Оцените крупные языковые модели на качество и ответственность

Оцените великолепные языковые модели на качество и ответственность

Риски, связанные с генеративным искусственным интеллектом, широко освещены. Токсичность, предвзятость, утечка личной информации и галлюцинации негативно влияют на репутацию организации и нарушают доверие клиентов. Исследования показывают, что риски предвзятости и токсичности переходят от предварительно обученных базовых моделей (FM) к задаче ориентированным генеративным AI-сервисам, а настройка FM для конкретных задач на инкрементальных наборах данных вносит новые и, возможно, более значительные риски. Обнаружение и управление этими рисками, в соответствии с постоянно развивающимися рекомендациями и правилами, такими как ISO 42001 и EU AI Act, представляет собой сложную задачу. Клиенты должны покидать свою среду разработки, чтобы использовать академические инструменты и площадки для сопоставления, что требует высокоспециализированных знаний. Большое количество метрик усложняет фильтрацию только тех, которые действительно применимы к их случаю использования. Этот утомительный процесс повторяется часто, поскольку выходят новые модели, а уже существующие модели дорабатываются.

Amazon SageMaker Clarify теперь предоставляет клиентам AWS оценку базовой модели (FM), набор функций, предназначенных для оценки и сравнения качества модели и метрик ответственности для любого LLM, в течение нескольких минут. Оценка FM предоставляет практические рекомендации на основе стандартных научных исследований, которые могут быть расширены для поддержки конкретных случаев использования клиента. Предоставляются проверяемые показатели оценки для задачи генерации текста, суммирования, классификации и ответа на вопросы, включая сценарии ответов, определенные клиентом, и алгоритмы. Отчеты исчерпывающим образом подводят итоги каждой оценки в понятной для человека форме, с помощью объяснений на естественном языке, визуализаций и примеров, фокусируя аннотаторов и специалистов по обработке данных на том, где можно оптимизировать их LLM и принимать обоснованные решения. Кроме того, это интегрируется с рабочими процессами машинного обучения и операции (MLOps) в Amazon SageMaker для автоматизации и масштабирования жизненного цикла ML.

Что такое FMEval?

С оценкой FM мы представляем FMEval, библиотеку оценки LLM с открытым исходным кодом, разработанную для обеспечения научных сотрудников и инженеров по машинному обучению возможностью оценивать LLM по качеству и ответственности при выборе или адаптации LLM для определенных случаев использования. FMEval позволяет выполнять оценку как модели LLM, так и сервиса генеративного искусственного интеллекта в целом. FMEval помогает в измерении таких характеристик оценки, как точность, устойчивость, предвзятость, токсичность и фактические знания для любого LLM. Вы можете использовать FMEval для оценки LLM, размещенных на AWS, таких как Amazon Bedrock, Jumpstart, а также других моделей SageMaker. Вы также можете использовать его для оценки LLM, размещенных на сторонних платформах для создания моделей, таких как ChatGPT, HuggingFace и LangChain. Эта опция позволяет клиентам объединить всю логику оценки LLM в одном месте, а не раскидывать инвестиции в оценку по разным платформам.

Как начать? Вы можете использовать FMEval непосредственно там, где выполняются ваши рабочие нагрузки, в качестве пакета Python или через репозиторий с открытым исходным кодом, который доступен на GitHub для обеспечения прозрачности и вклада в ответственное сообщество по искусственному интеллекту. FMEval не делает явных рекомендаций, а предоставляет данные и отчеты, понятные для клиентов AWS, чтобы они могли принимать решения. FMEval позволяет вам загружать собственные наборы данных и алгоритмы для запросов. Основная функция оценки evaluate() может быть расширена. Вы можете загрузить набор данных с запросом, выбрать и загрузить функцию оценки и запустить задание оценки. Результаты предоставляются в нескольких форматах, что помогает вам рассмотреть, проанализировать и операционализировать высокорисковые элементы и принять обоснованное решение о правильном LLM для вашего случая использования.

Поддерживаемые алгоритмы

FMEval предлагает 12 встроенных оценок, охватывающих 4 разные задачи. Поскольку возможное количество оценок составляет сотни, а ландшафт оценки все еще расширяется, FMEval основывается на последних научных открытиях и наиболее популярных открытых оценках. Мы изучили существующие открытые каркасы оценки и разработали API оценки FMEval с возможностью расширения. Предложенный набор оценок не предназначен для охвата каждого аспекта использования LLM, а предлагает популярные оценки из коробки и позволяет добавлять новые.

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

Задача Измерение оценки
Открытое поколение Стандартное фиксирование
. Токсичность
. Фактические знания
. Семантическая надежность
Суммирование текста Точность
. Токсичность
. Семантическая надежность
Вопросно-ответное (ВО) Точность
. Токсичность
. Семантическая надежность
Классификация Точность
. Семантическая надежность

Для каждой оценки FMEval предоставляет встроенные наборы данных, которые отбираются из академических и открытых сообществ, чтобы помочь вам начать работу. Клиенты будут использовать встроенные наборы данных для измерения базовых моделей и изучения оценки ваших собственных (BYO) наборов данных, созданных специально для конкретного случая использования генеративного ИИ.

В следующем разделе мы углубляемся в различные оценки:

  1. Точность: Оценка производительности модели по разным задачам с использованием специфических оценочных метрик для каждой задачи, таких как суммирование, вопросно-ответное (ВО) и классификация.
    1. Суммирование – Состоит из трех метрик: (1) оценки ROUGE-N (класс отзыва и основанная на степени соответствия F-замера, которая вычисляет N-граммное совпадение слов между эталоном и кратким изложением модели. Метрики нечувствительны к регистру и значения находятся в диапазоне от 0 (нет совпадения) до 1 (идеальное совпадение); (2) оценки METEOR (похожа на ROUGE, но включает стемминг и синонимическое совпадение с помощью списков синонимов, например, “дождь” → “моросящий дождь”); (3) оценки BERTScore (вторая ML-модель семейства BERT для вычисления вложений предложений и сравнения их косинусной схожестью. Этот показатель может учитывать дополнительную лингвистическую гибкость по сравнению с оценками ROUGE и METEOR, поскольку семантически сходные предложения могут находиться ближе друг к другу).
    2. ВО – Оценивает, насколько хорошо модель работает как в “закрытой книге”, так и в “открытой книге”. В “открытой книге” модель получает ссылку на текст, содержащую ответ (задача модели – извлечь правильный ответ из текста). В “закрытой книге” модель не получает никакой дополнительной информации, но использует свои собственные знания для ответа на вопрос. Мы используем такие наборы данных, как BoolQ, NaturalQuestions, and TriviaQA. В этом измерении отчетливо представлены три основные метрики: точное совпадение, частичное совпадение и F1 по словам, оцениваемые путем сравнения предсказанных моделью ответов с данными правильного ответа. Все три показателя суммируются для всего набора данных. Обобщенный показатель представляет собой число от 0 (наихудшее) до 1 (наилучшее)

      Использование библиотеки FMEval для оценки

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

      • Data config : Объект конфигурации данных указывает на расположение вашего набора данных, независимо от того, является ли он локальным или находится в пути S3. Кроме того, конфигурация данных содержит поля, такие как model_input, target_output и model_output. В зависимости от алгоритма оценки, используемого вами, эти поля могут различаться. Например, для оценки Фактического Знания требуется входная модель и целевой вывод, чтобы алгоритм оценки мог быть правильно выполнен. При необходимости вы также можете заранее заполнить вывод модели и не беспокоиться о настройке объекта Model Runner, так как вывод уже был завершен.
      • Model runner : Модельный исполнитель (Model Runner) – это FM, который вы разместили и с помощью которого будет производиться вывод. С пакетом FMEval модельный хостинг является агностическим, но есть несколько встроенных модельных исполнителей. Например, предоставлены классы JumpStart, Amazon Bedrock и SageMaker Endpoint Model Runner. Здесь вы можете предоставить метаданные для этой информации о модельном хостинге, а также формат/шаблон ввода, который ожидает ваша конкретная модель. В случае, если ваш набор данных уже содержит вывод модели, вам не нужно настраивать Model Runner. Если ваш Model Runner не предоставляется нативно FMEval, вы можете наследовать базовый класс Model Runner и переопределить метод predict с вашей пользовательской логикой.
      • Алгоритм оценки : Для полного списка алгоритмов оценки, доступных в FMEval, смотрите Узнайте о модельных оценках. Для вашего алгоритма оценки вы можете предоставить свою Data Config и Model Runner или только свою Data Config в случае, если ваш набор данных уже содержит вывод модели. С каждым алгоритмом оценки у вас есть два метода: evaluate_sample и evaluate. С помощью evaluate_sample вы можете оценить одну точку данных при условии, что вывод модели уже предоставлен. Для выполнения оценочной работы вы можете использовать вашу полную Data Config, которую вы предоставили. Если имеются значения вывода модели, то оценочная задача будет выполняться по всему набору данных и применяться алгоритм. В случае отсутствия вывода модели, Model Runner будет выполнять вывод для каждого примера, а затем будет применен алгоритм оценки. Вы также можете использовать пользовательский алгоритм оценки, аналогично пользовательскому Model Runner, наследуя базовый класс Evaluation Algorithm и переопределять методы evaluate_sample и evaluate с требуемой логикой для вашего алгоритма.

      Конфигурация данных

      Для вашей Data Config вы можете указать расположение вашего набора данных или использовать один из предоставленных FMEval наборов данных. В этом примере мы используем встроенный набор данных tiny, который поставляется с вопросами и целевыми ответами. В этом случае нет заранее определенного вывода модели, поэтому мы также определяем Model Runner для выполнения вывода на вход модели.

      from fmeval.data_loaders.data_config import DataConfigconfig = DataConfig(    dataset_name="tiny_dataset",    dataset_uri="tiny_dataset.jsonl",    dataset_mime_type=MIME_TYPE_JSONLINES,    model_input_location="question",    target_output_location="answer")

      JumpStart модельный исполнитель

      В случае использования SageMaker JumpStart для хостинга вашей FM, вы можете дополнительно указать существующее имя конечной точки или идентификатор модели JumpStart. При указании идентификатора модели FMEval создаст эту конечную точку для выполнения вывода. Главное здесь – определить шаблон содержимого, который может варьироваться в зависимости от вашей FM, поэтому важно настроить это content_template, чтобы отразить формат ввода, который ожидает ваша FM. Кроме того, вам также необходимо настроить разбор вывода в формате JMESPath для правильного понимания FMEval.

      from fmeval.model_runners.sm_jumpstart_model_runner import JumpStartModelRunnermodel_id, model_version, = (    "huggingface-llm-falcon-7b-instruct-bf16",    "*",)js_model_runner = JumpStartModelRunner(    endpoint_name=endpoint_name,    model_id=model_id,    model_version=model_version,    output='[0].generated_text',    content_template='{"inputs": $prompt, "parameters": {"do_sample": true, "top_p": 0.9, "temperature": 0.8, "max_new_tokens": 1024}}',)

      Bedrock модельный исполнитель

      Настройка исполнителя модели Bedrock очень похожа на исполнителя модели JumpStart. В случае Bedrock нет конечной точки, поэтому вы просто указываете идентификатор модели.

      model_id = 'anthropic.claude-v2'bedrock_model_runner = BedrockModelRunner(    model_id=model_id,    output='completion',    content_template='{"prompt": $prompt, "max_tokens_to_sample": 500}')

      Пользовательский исполнитель модели

      В некоторых случаях вам может понадобиться собственный исполнитель модели. Например, если у вас есть модель из HuggingFace Hub или модель OpenAI, вы можете унаследовать базовый класс исполнителя модели и определить собственный метод прогнозирования. Этот метод прогнозирования выполняется исполнителем модели, поэтому здесь вы определяете собственный пользовательский код. Например, в случае использования GPT 3.5 Turbo с Open AI вы можете создать собственного исполнителя модели, как показано в следующем коде:

      class ChatGPTModelRunner(ModelRunner):    url = "https://api.openai.com/v1/chat/completions"    def __init__(self, model_config: ChatGPTModelConfig):        self.config = model_config    def predict(self, prompt: str) -> Tuple[Optional[str], Optional[float]]:        payload = json.dumps({            "model": "gpt-3.5-turbo",            "messages": [                 {                     "role": "user",                     "content": prompt                 }            ],            "temperature": self.config.temperature,            "top_p": self.config.top_p,            "n": 1,            "stream": False,            "max_tokens": self.config.max_tokens,            "presence_penalty": 0,            "frequency_penalty": 0        })        headers = {             'Content-Type': 'application/json',             'Accept': 'application/json',             'Authorization': self.config.api_key        }        response = requests.request("POST", self.url, headers=headers, data=payload)        return json.loads(response.text)["choices"][0]["message"]["content"], None

      Оценка

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

      from fmeval.fmeval import get_eval_algorithmfrom fmeval.eval_algorithms.factual_knowledge import FactualKnowledgeConfig# Оценка фактических знанийeval_algorithm_config = FactualKnowledgeConfig("<OR>")eval_algo = get_eval_algorithm("factual_knowledge")(eval_algorithm_config)

      Вы можете запустить два метода оценки: evaluate_sample и evaluate. Evaluate_sample может быть запущен, когда у вас уже есть вывод модели на отдельной точке данных, аналогичной следующему образцу кода:

      # Оцените свой пользовательский примерmodel_output = model_runner.predict("Лондон - это столица?")[0]print(model_output)eval_algo.evaluate_sample(target_output="Великобритания<OR>Англия<OR>Соединенное Королевство", model_output=model_output)

      Когда вы выполняете оценку для всего набора данных, вы можете запустить метод evaluate, в котором вы передаете исполнителя модели, конфигурацию данных и шаблон промпта. Шаблон промпта – это место, где вы можете настраивать и формировать свой промпт для тестирования различных шаблонов по своему усмотрению. Этот шаблон промпта вставляется в значение $prompt в нашем параметре Content_Template, определенном в исполнителе модели.

      eval_outputs = eval_algo.evaluate(model=model, dataset_config=dataset_config, prompt_template="$feature", save=True)

      Для получения дополнительной информации и примеров end-to-end обратитесь к репозиторию.

      Заключение

      Оценка FM позволяет клиентам доверять, что выбранная ими LLM является правильной для их использования и что она будет работать ответственно. Это расширяемый фреймворк ответственного искусственного интеллекта, нативно интегрированный в Amazon SageMaker, который повышает прозрачность языковых моделей, облегчая оценку и коммуникацию рисков на протяжении жизненного цикла МО. Это важный шаг в повышении доверия и использования LLM в AWS.

      Дополнительную информацию об оценках FM вы можете найти в документации по продукту, а также просмотреть дополнительные примеры ноутбуков, доступные в нашем репозитории GitHub. Вы также можете исследовать способы операционализации оценки LLM в масштабе, описанные в этой публикации в блоге.