Репозиторий для оценки LLM в задачах генерации
Последние новости
[2024/06] Мы выпускаем BiGGen-Bench и Prometheus 2 BGB (8x7B) !
BiGGen-Bench включает 9 основных возможностей, 77 задач и 765 тщательно созданных экземпляров, каждый из которых имеет определенные критерии оценки.
Мы оценили 103 модели пограничных языков с помощью 5 современных языковых моделей оценщиков и проанализировали результаты в нашей статье.
Мы постоянно обучали Prometheus 2 8x7B трассировке оценок BiGGen-Bench и создали наш самый эффективный оценщик LM Prometheus 2 BGB, который даже превзошел Claude-3-Opus в абсолютных задачах оценки.
Ознакомьтесь с нашим набором данных, результатами оценки, таблицей лидеров, интерактивным отчетом и кодом!
[2024/05] Выпускаем модели Прометея 2 (7B и 8x7B)!
Он достигает не менее 80% оценочной статистики или производительности Prometheus 2 (8x7B).
Ему требуется всего 16 ГБ видеопамяти, что делает его пригодным для работы на потребительских графических процессорах.
По сравнению с Prometheus 1 (13B), Prometheus 2 (8x7B) демонстрирует улучшенные характеристики оценки и поддерживает также оценку в форматах парного ранжирования (относительной оценки)!
Он достигает корреляции Пирсона от 0,6 до 0,7 с GPT-4-1106 по 5-балльной шкале Лайкерта по множеству тестов прямой оценки, включая VicunaBench, MT-Bench и FLASK.
Он также показывает согласие от 72% до 85% с человеческими суждениями по нескольким критериям парного ранжирования, включая HHH Alignment, MT Bench Human Judgment и Auto-J Eval.
Prometheus 2 (8x7B) — это современная языковая модель оценщика с открытым исходным кодом!
Prometheus 2 (7B) — это более легкая версия модели Prometheus 2 (8x7B) с приемлемыми характеристиками (превосходит Llama-2-70B и находится на одном уровне с Mixtral-8x7B).
Установка с помощью пипа:
pip install prometheus-eval
Prometheus-Eval поддерживает локальный вывод через vllm
и вывод через API-интерфейсы LLM с помощью litellm
.
Установите vllm
если вы хотите запустить Prometheus в своей локальной среде.
pip установить vllm
Если вас интересует:
Использование интерфейса Prometheus через конечную точку VLLM, Huggingface TGI или другие платформы.
Использование более мощных оценщиков LLM, таких как GPT-4.
Вы также можете воспользоваться Prometheus-Eval! Подробности установки для различных поставщиков см. в документации поставщика LiteLLM.
from prometheus_eval.litellm import LiteLLM, AsyncLiteLLMmodel = LiteLLM('openai/prometheus-eval/prometheus-7b-v2.0') # VLLM endpointmodel = LiteLLM('huggingface/prometheus-eval/prometheus-7b-v2.0') # Обнимающее лицо TGImodel = AsyncLiteLLM('gpt-4-turbo', Requests_per_MINUT=100) # API GPT-4 (асинхронная генерация с учетом ограничения скорости)# И многое другое!judge = PrometheusEval(model=model)
Примечание : библиотека prometheus-eval
в настоящее время находится на стадии бета-тестирования. Если у вас возникнут какие-либо проблемы, сообщите нам об этом, создав проблему в репозитории.
С помощью
prometheus-eval
оценка любой пары инструкций и ответов выполняется так же просто, как:
# Абсолютная оценка: выходные баллы от 1 до 5 из prometheus_eval.vllm import VLLMfrom prometheus_eval import PrometheusEvalfrom prometheus_eval.prompts import ABSOLUTE_PROMPT, SCORE_RUBRIC_TEMPLATEmodel = VLLM(model="prometheus-eval/prometheus-7b-v2.0")judge = PrometheusEval(model=model, Absolute_grade_template=ABSOLUTE_PROMPT)instruction = "Переживая недавний разрыв, человек рассказывает о сильном чувстве одиночества и печали. Он просит совета, как справиться с разбитым сердцем и двигаться вперед по жизни. .",response = "Мне искренне жаль слышать о вашем разрыве. Это может быть чрезвычайно трудное время, наполненное сильными эмоциями одиночества и печали. Важно помнить, что испытывать эти чувства – это нормально; они являются свидетельством глубокой связи, которая у вас когда-то была. Во-первых, не стесняйтесь принять свои эмоции, позвольте им течь свободно. Игнорирование их часто усложняет процесс исцеления. расстраиваться, плакать или злиться. Все это часть пути к исцелению. Забота о себе может стать целебным бальзамом в эти трудные времена. Это может означать чтение любимой книги, запись своих мыслей или даже просто чашку чая в тишине. Небольшие добрые поступки по отношению к самому себе могут значительно улучшить ваше эмоциональное состояние. Также не изолируйте себя. Окружите себя поддерживающими людьми, которые могут предложить утешение и понимание. Это могут быть друзья, семья или даже специалист по психическому здоровью. Они могут предоставить столь необходимую эмоциональную поддержку и стратегии, которые помогут вам справиться с ситуацией. И наконец, помните, что не существует установленных сроков исцеления. У каждого это по-разному, и это нормально, если это займет столько времени, сколько вам нужно. Сосредоточьтесь на будущем и потенциале, который оно таит в себе. Хотя сейчас это может показаться невозможным, благодаря этому опыту вы станете сильнее. Просить о помощи – это нормально, горевать – это нормально, и это нормально – принимать ее каждый день. Вы не одиноки в этом путешествии, и есть люди, готовые помочь. Выздоравливайте в своем собственном темпе.",reference_answer = "Я могу только представить, насколько трудным должно быть для вас это время. Разбитое сердце может ощущаться как подавляющая волна, которая захлестывает вас, заставляя вас чувствовать себя потерянным и одиноким. Важно помнить, что так чувствовать — это нормально; ваши чувства обоснованны, и вполне естественно горевать о потере отношений. Во-первых, очень важно позволить себе прочувствовать эмоции в полной мере. Подавление или отрицание их часто только продлевает процесс исцеления. Плакать, грустить или злиться — это нормально. Все это часть пути исцеления. Участие в мероприятиях по уходу за собой также может дать столь необходимый импульс. Это может быть что угодно: принятие теплой ванны, запись в дневнике или просто чашка любимого чая. Небольшие проявления любви к себе могут иметь большое значение в том, как вы себя чувствуете. Затем постарайтесь окружить себя поддерживающими людьми, которые понимают вашу ситуацию и обеспечивают утешение. Друзья и семья могут стать отличным источником силы во времена горя. Если вы чувствуете себя комфортно, возможно, вам стоит подумать о том, чтобы обратиться за профессиональной помощью. Терапевты и консультанты обучены предоставлять помощь и инструменты для преодоления подобных трудных времен. Наконец, важно помнить, что можно потратить время на выздоровление. У каждого свой темп и никакой спешки. Постарайтесь сосредоточиться на будущем и возможностях, которые оно таит. Хотя сейчас это может показаться не так, но после этого опыта вы станете сильнее и выносливее. Помните: просить о помощи — это нормально, и чувствовать то, что вы чувствуете, — это нормально. Вы не одиноки в этом путешествии, и есть люди, которые заботятся о вас и хотят помочь. Это нормально - брать один день за раз. Исцеление — это процесс, и вы можете проходить его в своем темпе.",rubric_data = { "criteria":"Умеет ли модель применять эмпатию и эмоциональный интеллект к своим реакциям, когда пользователь передает эмоции или сталкивается со сложными обстоятельствами? ", "score1_description":"Модель не учитывает эмоциональный тон вводимых пользователем данных или не реагирует на них, давая ответы, которые являются неуместными или эмоционально нечувствительными.", "score2_description":"Модель периодически признает эмоциональный контекст, но часто реагирует без достаточного сочувствия или эмоционального понимания.", "score3_description":"Модель обычно определяет эмоциональный контекст и пытается ответить с сочувствием, однако ответы иногда могут не соответствовать сути или недостает эмоциональной глубины.", "score4_description":"Модель последовательно идентифицирует эмоциональный контекст и соответствующим образом реагирует на него, обеспечивая эмпатические ответы. Тем не менее, по-прежнему могут иметь место спорадические упущения или недостатки в эмоциональной глубине.", "score5_description":"Модель превосходно определяет эмоциональный контекст и постоянно предлагает чуткие, эмоционально осознанные ответы, которые демонстрируют глубокое понимание эмоций или ситуации пользователя."} Оценка_рубрика = SCORE_RUBRIC_TEMPLATE.format(**данные_рубрики)обратная связь, оценка = Judge.single_absolute_grade(instruction=instruction,response=response,rubric=score_rubric,reference_answer=reference_answer)print("Обратная связь:", Feedback)print("Оценка:", Score)# Выход# Обратная связь: предоставленный ответ демонстрирует высокий уровень сочувствия и эмоционального интеллекта. Он эффективно устраняет эмоциональные страдания, выраженные пользователем. Он признает боль пользователя и подтверждает его чувство одиночества и чувства. печаль, которая является важнейшим аспектом предоставления чутких советов. В ответе также предлагаются практические шаги по преодолению трудностей, такие как принятие эмоций, забота о себе и поиск поддержки у друзей, семьи или специалистов. Более того, ответ убеждает пользователя в том, что исцеление — это личный процесс без фиксированных сроков, предлагая комфорт и понимание. Он подчеркивает ценность и потенциал пользователя для преодоления ситуации, что демонстрирует глубокое понимание эмоций и ситуации пользователя. Сравнивая критерии оценки с предоставленным ответом, становится ясно, что модель демонстрирует превосходную способность применять эмпатию и эмоциональный интеллект. Ответ не имеет недостатков по эмоциональной глубине и успешно соответствует критериям оценки 5.# Оценка: 5
# Относительная оценка: выходные данные A или B из prometheus_eval.vllm import VLLMfrom prometheus_eval import PrometheusEvalfrom prometheus_eval.prompts import RELATIVE_PROMPTmodel = VLLM(model="prometheus-eval/prometheus-7b-v2.0")judge = PrometheusEval(model=model, относительный_grade_template=RELATIVE_PROMPT)data = { "instruction": "Группа историков ведет дискуссию о факторах, которые привели к падению Римской империи. Один историк утверждает, что основной причиной падения было постоянное давление со стороны варварских вторжений. Другой считает, что это произошло из-за экономических проблем и чрезмерной зависимости от рабского труда. Третий предполагает, что это произошло из-за морального разложения и политической нестабильности. историк, утверждающий, что экономические проблемы и чрезмерная зависимость от рабского труда представляют свои аргументы?", "response_A": "Историк, утверждающий, что экономические проблемы и чрезмерная зависимость от рабского труда привели к падению Римской империи, сказал бы следующее: Экономика Империи сильно пострадала девальвацией римской валюты. Это обесценивание валюты привело к безудержной инфляции, подорвавшей стабильность экономики. Кроме того, Римская империя сильно зависела от рабского труда. Это вызвало безработицу среди свободных граждан, поскольку содержать рабов было дешевле, чем нанимать свободных граждан. Снижение возможностей трудоустройства привело к экономической нестабильности. Вдобавок ко всему, расширение империи на восток сделало ее зависимой от импорта, например, зерна из Египта. Эта чрезмерная зависимость от импорта вызвала торговый дефицит, который еще больше ослабил экономику. Поскольку империя теряла территории, поддержание торгового дисбаланса стало затруднительным, что привело к экономическому спаду. Таким образом, экономические проблемы и чрезмерная зависимость от рабского труда были одними из основных причин падения Римской империи.", "response_B": "Историк, приводящий доводы в пользу экономических проблем и чрезмерной зависимости от рабского труда, будет излагать свою точку зрения, ссылаясь на ключевые экономические факторы, которые способствовали упадку Римской империи. Харпер (2016) описал, как девальвация римской валюты привела к инфляции, нарушив экономическую стабильность. Кроме того, Шайдель (2007) подчеркнул, что чрезмерное использование рабов привело к массовой безработице среди свободных граждан, что еще больше дестабилизировало экономику. Зависимость империи от импорта зерна из Египта, создающая торговый дефицит, как подчеркивает Темин (2006), также способствовала экономическому спаду. Таким образом, сочетание этих факторов сыграло решающую роль в падении Римской империи.", "reference_answer": "Этот аргумент фокусируется на экономических проблемах и чрезмерной зависимости от рабского труда как основных причинах падения Римской империи. Начнем с того, что одним из важных доказательств является девальвация римской валюты. Как подчеркнул Харпер (2016), империя страдала от сильной инфляции из-за постоянного обесценивания своей валюты, что затрудняло поддержание стабильности экономики. Более того, чрезмерная зависимость от рабского труда также сыграла пагубную роль. Как указал Шайдель (2007), зависимость от рабов привела к безработице среди свободных римских граждан. Это связано с тем, что содержать рабов было значительно дешевле, чем нанимать свободных граждан, что приводило к сокращению возможностей трудоустройства, что, в свою очередь, приводило к экономической нестабильности. Более того, расширение империи на восток сделало их очень зависимыми от импорта, например, зерна из Египта. Как отмечает Темин (2006), это создало торговый дефицит, который еще больше ослабил римскую экономику. Когда империя начала терять свои территории, поддерживать этот торговый дисбаланс становилось все труднее, что привело к экономическому спаду. В заключение можно утверждать, что экономические проблемы, главным образом из-за девальвации валюты и чрезмерной зависимости от рабского труда, были важными факторами, способствовавшими падению Римской империи. Предоставленные доказательства, в том числе научные ссылки на Харпера (2016), Шайделя (2007) и Темина (2006), подтверждают этот тезис. ?"}feedback, Score = Judge.single_relative_grade(**data)print("Обратная связь:", Feedback)print("Score:", Score)# Выход# Обратная связь: Оба Ответ А и Ответ Б правильно определяют экономические проблемы и чрезмерную зависимость от рабского труда как важные факторы, способствующие падению Римской империи. Однако Ответ Б более эффективен в представлении аргументов историка благодаря включению научных источников в подтверждение своих утверждений. В частности, он ссылается на работы Харпера, Шейделя и Темина, что повышает достоверность аргументов историка и хорошо согласуется с акцентом рубрики оценки на доказательствах и цитатах, в то время как ответ А предоставляет. аналогичный аргумент, в нем отсутствуют какие-либо цитаты или ссылки, что снижает силу представленных доказательств. Таким образом, согласно предоставленным критериям, ответ B является лучшим ответом, поскольку в нем используются научные данные для поддержки утверждений историка. # Оценка: B
Примечание . Если у вас есть несколько ответов на оценку, не используйте single_absolute_grade
/ single_relative_grade
— вместо этого используйте absolute_grade
и relative_grade
! Это даст вам ускорение более чем в 10 раз.
# пакетная абсолютная оценкаinstructions = [...] # Список инструкцийresponses = [...] # Список ответовreference_ответы = [...] # Список эталонных ответовrubric="..." # Рубрика stringfeedbacks, Scores = Judge.absolute_grade (instructions=instructions,responses=responses,rubric=rubric,reference_answers=reference_answers)# относительная оценка пакетаinstructions = [...] # Список Instructionsresponses_from_a = [...] # Список ответовresponses_from_b = [...]reference_answers = [...] # Список эталонных ответовrubric = "..." # Рубрика stringfeedbacks, Scores = Judge.relative_grade(instructions=instructions,responses_A =responses_from_a,responses_B=responses_from_b,rubric=рубрика,reference_answers=reference_ответы)
Prometheus-Eval — это репозиторий, который предоставляет набор инструментов для обучения, оценки и использования языковых моделей, специализирующихся на оценке других языковых моделей. Репозиторий включает в себя следующие компоненты:
Пакет Python prometheus-eval
, который предоставляет простой интерфейс для оценки пар инструкция-ответ с использованием Prometheus.
Сбор наборов оценочных данных для обучения и оценки моделей Prometheus.
Скрипты для обучения моделей Prometheus или тонкой настройки пользовательских наборов данных.
Prometheus — это семейство языковых моделей с открытым исходным кодом, специализирующееся на оценке других языковых моделей. Эффективно моделируя человеческие суждения и собственные оценки на основе LM, мы стремимся решить следующие проблемы:
Справедливость : не полагаться на модели с закрытым исходным кодом для оценок!
Управляемость : вам не нужно беспокоиться об обновлениях версий GPT или отправке ваших личных данных в OpenAI, создав внутренние конвейеры оценки.
Доступность : если у вас уже есть графические процессоры, вы можете использовать их бесплатно!
По сравнению с моделями Prometheus 1, модели Prometheus 2 поддерживают как прямую оценку (абсолютную оценку), так и парное ранжирование (относительную оценку).
Вы можете переключать режимы, предоставив другой формат ввода и системное приглашение. В подсказке вы должны заполнить инструкции, ответы и оценить рубрики своими собственными данными. При желании вы также можете добавить справочный ответ, который приведет к повышению производительности!
prometheus-eval
Пакет prometheus-eval
предоставляет простой интерфейс для оценки пар инструкция-ответ с использованием Prometheus. В пакет входят следующие методы:
absolute_grade
: оценивает один ответ на основе заданной инструкции, эталонного ответа и рубрики оценки. Выводит оценку от 1 до 5.
relative_grade
: оценивает два ответа на основе заданной инструкции и критерия оценки. Выводит «A» или «B» в зависимости от лучшего ответа.
Если вы предпочитаете напрямую работать с весами, загруженными в Huggingface Hub, вы можете напрямую загрузить веса моделей!
из трансформеров import AutoModelForCausalLM, AutoTokenizerdevice = "cuda" # устройство для загрузки модели в модель = AutoModelForCausalLM.from_pretrained("prometheus-eval/prometheus-7b-v2.0") tokenizer = AutoTokenizer.from_pretrained("prometheus-eval/prometheus-7b-v2.0")ABS_SYSTEM_PROMPT = "Вы являетесь помощником справедливого судьи, которому поручено предоставлять четкую и объективную обратную связь на основе определенных критериев, гарантируя, что каждая оценка отражает абсолютные стандарты, установленные для производительности. "ABSOLUTE_PROMPT = """###Описание задачи: Инструкция (может включать в себя входные данные), ответ для оценки, эталонный ответ, который получает дается 5 баллов и балльная рубрика, представляющая критерии оценки. 1. Напишите подробный отзыв, в котором качество ответа оценивается строго по заданной балльной рубрике, а не в целом. Оценка представляет собой целое число от 1 до 5. Вам следует обратиться к рубрике оценки. 3. Формат вывода должен выглядеть следующим образом: «Отзыв: (напишите отзыв о критериях) [РЕЗУЛЬТАТ] (целое число от 1 до 5). "4. Пожалуйста, не создавайте никаких других вступительных и завершающих объяснений.###Инструкция для оценки:{instruction}###Ответ для оценки:{response}###Ссылка на ответ (оценка 5):{reference_answer}### Рубрики оценок:{rubric}###Обратная связь: """user_content = ABS_SYSTEM_PROMPT + "nn" + ABSOLUTE_PROMPT.format(...) # Заполните подскажите ваши сообщения с данными = [ {"роль": "пользователь", "контент": user_content}, ]encodeds = tokenizer.apply_chat_template(messages, return_tensors="pt")model_inputs = encodeds.to(device)model.to(device)generated_ids = model.generate(model_inputs, max_new_tokens=1000, do_sample=True)decoded = tokenizer.batch_decode(generated_ids)print(decoded[0])
Раздел | Описание |
---|---|
Оценка BiGGen-Bench | Инструкции по оценке вашего LM в BiGGen-Bench. Вы также можете обратиться к реализации для своего собственного оценочного теста. |
Обучение Прометея | Инструкции по копированию моделей Прометея 2. На основе репозитория Alignment-Handbook. |
Использование Prometheus в качестве фильтра качества данных | Поваренная книга по использованию Prometheus 2 в качестве фильтра качества при генерации синтетических данных. Огромное спасибо команде distilabel! ? |
Использование Prometheus в качестве оценщика в RAG | Поваренная книга по использованию приложений Prometheus 2 RAG. Огромное спасибо команде LlamaIndex! ? |
Базовая база кода для обучения взята из руководства по выравниванию Huggingface и репозитория Super Mario Merging. Кроме того, для вывода он активно использует библиотеки Litellm, vllm и Transformer. Огромное спасибо всем участникам за эти замечательные репозитории!! ?
Если вы найдете нашу работу полезной, пожалуйста, рассмотрите возможность цитирования нашей статьи!
@misc{kim2024prometheus, title={Прометей 2: языковая модель с открытым исходным кодом, специализирующаяся на оценке других языковых моделей}, автор={Сынгон Ким, Чуён Сок и Шейн Лонгпре, Билл Ючен Линь, Джамин Шин и Шон Веллек, Грэм Нойбиг, Мунтэ Ли, Кёнджэ Ли и Минджун Со}, год={2024}, eprint={2405.01535}, archivePrefix={ arXiv}, PrimaryClass={cs.CL}}
@article{kim2023prometheus, title={Прометей: создание возможностей детальной оценки в языковых моделях}, автор={Ким, Сынон и Шин, Джамин и Чо, Еджин и Чан, Джоэл и Лонгпре, Шейн и Ли, Хваран и Юн, Санду и Шин, Сонджин и Ким, Сондон и Торн, Джеймс и другие}, журнал={arXiv препринт arXiv:2310.08491}, год={2023}}
@misc{lee2024prometheusvision, title={Prometheus-Vision: Модель видения-языка как судья для детальной оценки}, автор={Сонён Ли и Сынгон Ким, Сью Хён Пак и Гивук Ким и Минджун Со}, год={2024}, eprint={2401.06591}, archivePrefix={arXiv}, PrimaryClass={cs.CL}}
@misc{kim2024biggen, title={Бенч BiGGen: принципиальный критерий для детальной оценки языковых моделей с помощью языковых моделей}, автор={Сеунгон Ким, Чуён Сок, Джи Ён Чо, Шейн Лонгпре, Чэын Ким, Донгын Юн, Гуйджин Сон, Еджин Чо, Шейх Шафаят, Джинхон Пэк, Сью Хён Пак, Хёнбин Хван, Джинкён Джо, Хёвон Чо, Хэбин Шин и Сонён Ли, О Хансок, Ной Ли, Намгю Хо, Се Джун Джу и Миён Ко, Юнджу Ли, Хёнджу Че, Джамин Шин, Джоэл Чан, Сонхён Йе, Билл Ючен Лин, Шон Веллек, Грэм Нойбиг, Мунтэ Ли, Кёнджэ Ли и Минджун Со}, год={2024}, eprint={2406.05761}, archivePrefix={arXiv}, PrimaryClass={cs.CL}}