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

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

Список функций
- Поддержка многозадачной оценкиСодержит 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 и выполнить оценку модели или расширение функции.
© заявление об авторских правах
Авторское право на статью Круг обмена ИИ Пожалуйста, не воспроизводите без разрешения.
Похожие статьи
Нет комментариев...