MTEB: бенчмаркинг для оценки эффективности моделей встраивания текста

Общее введение

MTEB (Massive Text Embedding Benchmark) - это проект с открытым исходным кодом, разработанный командой embeddings-benchmark и размещенный на GitHub, целью которого является всесторонняя оценка производительности моделей встраивания текста. Он охватывает 8 основных типов задач, включая классификацию, кластеризацию, поиск и т. д., объединяет 58 наборов данных, поддерживает 112 языков и на данный момент является одним из наиболее полных бенчмарков для встраивания текста. mteb выявляет различия в производительности различных моделей в различных задачах путем тестирования 33 типов моделей и помогает разработчикам выбрать модель встраивания, подходящую для конкретных приложений. Проект предоставляет открытый исходный код, чтобы пользователи могли свободно проводить тесты или представлять новые модели в публичной таблице лидеров, что широко применимо в исследованиях НЛП, разработке моделей и промышленных сценариях применения.

MTEB:评估文本嵌入模型性能的基准测试

Accessed at: https://huggingface.co/spaces/mteb/leaderboard

MTEB:评估文本嵌入模型性能的基准测试

 

Список функций

  • Поддержка многозадачной оценкиСодержит 8 задач встраивания, таких как семантическое сходство текстов (STS), поиск, кластеризация и т.д., охватывающих широкий спектр сценариев применения.
  • Многоязычные наборы данных: Поддержка 112 языков, обеспечивающая возможность тестирования мультиязычных моделей, что подходит для разработки глобализированных приложений.
  • Рейтинг производительности модели: Встроенные публичные таблицы лидеров, показывающие результаты тестов 33 моделей для удобства сравнения и выбора.
  • Индивидуальное тестирование моделей: Позволяет пользователям импортировать пользовательские встроенные модели с небольшим количеством кода для запуска оценки.
  • Функциональность встраивания кэша: Поддержка встроенного кэширования результатов для оптимизации эффективности повторных тестов при проведении масштабных экспериментов.
  • Гибкая настройка параметров: Обеспечение конфигурации параметров кодирования, таких как регулировка размера партии, для повышения гибкости тестирования.
  • Поддержка открытых источников: Полный исходный код открыт для пользователей, чтобы они могли изменять или расширять функциональность в соответствии со своими потребностями.
  • Расширяемость сообщества: Поддержка пользователей в представлении новых задач, наборов данных или моделей для обогащения тестирования на постоянной основе.

 

Использование помощи

Процесс установки

MTEB - это инструмент на основе Python, для развертывания и запуска которого требуется определенная среда программирования. Ниже описаны подробные шаги по установке:

1. Подготовка окружающей среды

  • операционная системаПоддерживаются Windows, MacOS и Linux.
  • Версия Python: требует Python 3.10 или выше, доступ к которому можно получить через python --version Проверьте.
  • Инструменты Git: Используется для получения исходного кода с GitHub, рекомендуется установить его заранее.

2. Клонирование кодовой базы

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

git clone https://github.com/embeddings-benchmark/mteb.git
cd mteb

Это позволит загрузить проект локально и войти в каталог проекта.

3. Установка зависимостей

MTEB требует поддержки некоторых библиотек Python, и во избежание конфликтов рекомендуется создать виртуальную среду перед установкой зависимостей:

python -m venv venv
source venv/bin/activate  # Linux/MacOS
venv\Scripts\activate     # Windows

Затем установите основные зависимости:

pip install -r requirements.txt

Чтобы запустить интерфейс таблицы лидеров, вам также необходимо установить Gradio:

pip install mteb[gradio]

4. Проверка установки

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

mteb --available_tasks

Если вы вернетесь к списку задач, конфигурация среды будет завершена.

Использование

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

Функция 1: Выполнение заранее созданных задач для оценки существующих моделей

MTEB поддерживает прямое тестирование существующих моделей (например, модели SentenceTransformer). Например, оценка производительности модели "average_word_embeddings_komninos" на задаче Banking77Classification:

mteb -m average_word_embeddings_komninos -t Banking77Classification --output_folder results/average_word_embeddings_komninos --verbosity 3
  • -m Указывает имя модели.
  • -t Укажите имя задания.
  • --output_folder Укажите путь, по которому сохраняются результаты.
  • --verbosity 3 Отображение подробного журнала.

Результаты сохраняются в указанной папке, содержащей оценки за каждое задание.

Функция 2: тестирование пользовательских моделей

Если вы хотите протестировать свою собственную модель, просто реализуйте простой интерфейс. В качестве примера возьмем SentenceTransformer:

from mteb import MTEB
from sentence_transformers import SentenceTransformer
# 加载模型
model = SentenceTransformer("average_word_embeddings_komninos")
# 定义评估任务
evaluation = MTEB(tasks=["Banking77Classification"])
# 运行评估
evaluation.run(model, output_folder="results")

После выполнения результаты сохраняются в папке "Результаты".

Особенность 3: встраивание кэша для оптимизации эффективности

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

from mteb.models.cache_wrapper import CachedEmbeddingWrapper
# 包装模型以启用缓存
model_with_cache = CachedEmbeddingWrapper(model, cache_path="cache_embeddings")
evaluation.run(model_with_cache)

Файл кэша хранится в указанном пути по имени задачи.

Функция 4: Просмотр таблицы лидеров

Чтобы увидеть текущие рейтинги моделей, посетите официальную таблицу лидеров или разверните ее на месте:

git clone https://github.com/embeddings-benchmark/leaderboard.git
cd leaderboard
pip install -r requirements.txt
python app.py

Доступ в браузере http://localhost:7860Вы можете просматривать таблицы лидеров в режиме реального времени.

Функция 5: Добавление новых задач

Пользователи могут расширять MTEB, наследуя класс задачи, например, добавляя задачу повторного ранжирования:

from mteb.abstasks.AbsTaskReranking import AbsTaskReranking
class CustomReranking(AbsTaskReranking):
    @property
def description(self):
return {
"name": "CustomReranking",
"description": "自定义重排序任务",
"type": "Reranking",
"eval_splits": ["test"],
"eval_langs": ["en"],
"main_score": "map"
}
evaluation = MTEB(tasks=[CustomReranking()])
evaluation.run(model)

навык работы

  • Поддержка нескольких графических процессоров: Для задач поиска можно использовать ускорение на нескольких GPU:
pip install git+https://github.com/NouamaneTazi/beir@nouamane/better-multi-gpu
torchrun --nproc_per_node=2 scripts/retrieval_multigpu.py
  • выбранное подмножество: Оценивается только подмножество конкретных задач:
evaluation.run(model, eval_subsets=["Banking77Classification"])
  • Настройка размера партии: Оптимизация скорости кодирования:
evaluation.run(model, encode_kwargs={"batch_size": 32})

Выполнив вышеописанные действия, пользователи смогут легко приступить к работе с MTEB и выполнить оценку модели или расширение функции.

© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...