Skip to content

avidale/encodechka

Repository files navigation

encodechka

encodechka-eval

Этот репозиторий - развитие подхода к оценке моделей из поста Маленький и быстрый BERT для русского языка, эволюционировавшего в Рейтинг русскоязычных энкодеров предложений. Идея в том, чтобы понять, как хорошо разные модели превращают короткие тексты в осмысленные векторы.

Похожие проекты:

  • RussianSuperGLUE: фокус на дообучаемых моделях
  • MOROCCO: RussianSuperGLUE + оценка производительности, трудновоспроизводим
  • RuSentEval: более академические/лингвистические задачи
  • Статья от Вышки Popov et al, 2019: первая научная статья на эту тему, но маловато моделей и задач
  • SentEvalRu и deepPavlovEval: два хороших, но давно не обновлявшихся бенчмарка.
  • ruMTEB (пост, код MTEB) - русскоязычная часть MTEB. С недавнего времени там есть 23 разнообразных задачи (включая поиск и переранжирование, которых нет в Encodechka), но, кажется, там нет замеров быстродействия. Если последнее вам не критично, рекомендуется использовать ruMTEB вместо Encodechka.

Пример запуска метрик – в блокноте evaluation example.

Блокнот для воспроизведения лидерборда: v2021, v2023.

Лидерборд на HuggingFace Space.

Лидерборд

Ранжирование моделей в по среднему качеству и производительности. Подсвечены Парето-оптимальные модели по каждому из критериев.

model CPU GPU size Mean S Mean S+W dim
deepvk/USER-bge-m3 523.4 22.5 1371.1 0.799 0.709 1024
BAAI/bge-m3 523.4 22.5 2166.0 0.787 0.696 1024
intfloat/multilingual-e5-large-instruct 501.5 25.71 2136.0 0.784 0.684 1024
intfloat/multilingual-e5-large 506.8 30.8 2135.9389 0.78 0.686 1024
deepvk/USER-base 33.1 12.2 473.2402 0.772 0.688 768
sentence-transformers/paraphrase-multilingual-mpnet-base-v2 20.5 19.9 1081.8485 0.762 768
intfloat/multilingual-e5-base 130.61 14.39 1061.0 0.761 0.669 768
sergeyzh/rubert-tiny-turbo 5.5 3.3 111.4 0.749 0.667 312
intfloat/multilingual-e5-small 40.86 12.09 449.0 0.742 0.645 384
symanto/sn-xlm-roberta-base-snli-mnli-anli-xnli 20.2 16.5 1081.8474 0.739 768
cointegrated/LaBSE-en-ru 133.4 15.3 489.6621 0.739 0.668 768
sentence-transformers/LaBSE 135.1 13.3 1796.5078 0.739 0.667 768
MUSE-3 200.1 30.7 303.0 0.736 512
text-embedding-ada-002 ? 0.734 1536
sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 18.2 14.9 479.2547 0.734 384
sentence-transformers/distiluse-base-multilingual-cased-v1 11.8 8.0 517.7452 0.722 512
SONAR ? ? 3060.0 0.721 1024
facebook/nllb-200-distilled-600M 252.3 15.9 1577.4828 0.709 0.64 1024
sentence-transformers/distiluse-base-multilingual-cased-v2 11.2 9.2 517.7453 0.708 512
cointegrated/rubert-tiny2 5.5 3.3 111.3823 0.704 0.638 312
ai-forever/sbert_large_mt_nlu_ru 504.5 29.7 1628.6539 0.703 0.626 1024
laser 192.5 13.5 200.0 0.699 1024
laser2 163.4 8.6 175.0 0.694 1024
ai-forever/sbert_large_nlu_ru 497.7 29.9 1628.6539 0.688 0.626 1024
clips/mfaq 18.1 18.2 1081.8576 0.687 768
cointegrated/rut5-base-paraphraser 137.0 15.6 412.0015 0.685 0.634 768
DeepPavlov/rubert-base-cased-sentence 128.4 13.2 678.5215 0.678 0.612 768
DeepPavlov/distilrubert-base-cased-conversational 64.2 10.4 514.002 0.676 0.624 768
DeepPavlov/distilrubert-tiny-cased-conversational 21.2 3.3 405.8292 0.67 0.616 768
cointegrated/rut5-base-multitask 136.9 12.7 412.0015 0.668 0.623 768
ai-forever/ruRoberta-large 512.3 25.5 1355.7162 0.666 0.609 1024
DeepPavlov/rubert-base-cased-conversational 127.5 16.3 678.5215 0.653 0.606 768
deepvk/deberta-v1-base 128.6 19.0 473.2402 0.653 0.591 768
cointegrated/rubert-tiny 7.5 5.9 44.97 0.645 0.575 312
ai-forever/FRED-T5-large 479.4 23.3 1372.9988 0.639 0.551 1024
inkoziev/sbert_synonymy 6.9 4.2 111.3823 0.637 0.566 312
numind/NuNER-multilingual-v0.1 186.9 10 678.0 0.633 0.572 768
cointegrated/rubert-tiny-toxicity 10 5.5 47.2 0.621 0.553 312
ft_geowac_full 0.3 1910.0 0.617 0.55 300
bert-base-multilingual-cased 141.4 13.7 678.5215 0.614 0.565 768
ai-forever/ruT5-large 489.6 20.2 1277.7571 0.61 0.578 1024
cointegrated/rut5-small 37.6 8.6 111.3162 0.602 0.564 512
ft_geowac_21mb 1.2 21.0 0.597 0.531 300
inkoziev/sbert_pq 7.4 4.2 111.3823 0.596 0.526 312
ai-forever/ruT5-base 126.3 12.8 418.2325 0.571 0.544 768
hashing_1000_char 0.5 1.0 0.557 0.464 1000
cointegrated/rut5-base 127.8 15.5 412.0014 0.554 0.53 768
hashing_300_char 0.8 1.0 0.529 0.433 300
hashing_1000 0.2 1.0 0.513 0.416 1000
hashing_300 0.3 1.0 0.491 0.397 300

Ранжирование моделей по задачам. Подсвечены наилучшие модели по каждой из задач.

model STS PI NLI SA TI IA IC ICX NE1 NE2
deepvk/USER-bge-m3 0.87 0.76 0.58 0.82 0.97 0.79 0.81 0.78 0.28 0.43
BAAI/bge-m3 0.86 0.75 0.51 0.82 0.97 0.79 0.81 0.78 0.24 0.42
intfloat/multilingual-e5-large-instruct 0.86 0.74 0.47 0.81 0.98 0.8 0.82 0.77 0.21 0.35
intfloat/multilingual-e5-large 0.86 0.73 0.47 0.81 0.98 0.8 0.82 0.77 0.24 0.37
deepvk/USER-base 0.85 0.74 0.48 0.81 0.99 0.81 0.8 0.7 0.29 0.41
sentence-transformers/paraphrase-multilingual-mpnet-base-v2 0.85 0.66 0.54 0.79 0.95 0.78 0.79 0.74
intfloat/multilingual-e5-base 0.83 0.7 0.46 0.8 0.96 0.78 0.8 0.74 0.23 0.38
sergeyzh/rubert-tiny-turbo 0.83 0.72 0.48 0.79 0.95 0.76 0.78 0.68 0.30 0.37
intfloat/multilingual-e5-small 0.82 0.71 0.46 0.76 0.96 0.76 0.78 0.69 0.23 0.27
symanto/sn-xlm-roberta-base-snli-mnli-anli-xnli 0.76 0.6 0.86 0.76 0.91 0.72 0.71 0.6
cointegrated/LaBSE-en-ru 0.79 0.66 0.43 0.76 0.95 0.77 0.79 0.77 0.35 0.42
sentence-transformers/LaBSE 0.79 0.66 0.43 0.76 0.95 0.77 0.79 0.76 0.35 0.41
MUSE-3 0.81 0.61 0.42 0.77 0.96 0.79 0.77 0.75
text-embedding-ada-002 0.78 0.66 0.44 0.77 0.96 0.77 0.75 0.73
sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 0.84 0.62 0.5 0.76 0.92 0.74 0.77 0.72
sentence-transformers/distiluse-base-multilingual-cased-v1 0.8 0.6 0.43 0.75 0.94 0.76 0.76 0.74
SONAR 0.71 0.58 0.41 0.77 0.98 0.79 0.78 0.74
facebook/nllb-200-distilled-600M 0.71 0.54 0.41 0.76 0.95 0.76 0.8 0.75 0.31 0.42
sentence-transformers/distiluse-base-multilingual-cased-v2 0.79 0.55 0.42 0.75 0.91 0.75 0.76 0.73
cointegrated/rubert-tiny2 0.75 0.65 0.42 0.74 0.94 0.75 0.76 0.64 0.36 0.39
ai-forever/sbert_large_mt_nlu_ru 0.78 0.65 0.4 0.8 0.98 0.8 0.76 0.45 0.3 0.34
laser 0.75 0.6 0.41 0.73 0.96 0.72 0.72 0.7
laser2 0.74 0.6 0.41 0.73 0.95 0.72 0.72 0.69
ai-forever/sbert_large_nlu_ru 0.68 0.62 0.39 0.78 0.98 0.8 0.78 0.48 0.36 0.4
clips/mfaq 0.63 0.59 0.35 0.79 0.95 0.74 0.76 0.69
cointegrated/rut5-base-paraphraser 0.65 0.53 0.4 0.78 0.95 0.75 0.75 0.67 0.45 0.41
DeepPavlov/rubert-base-cased-sentence 0.74 0.66 0.49 0.75 0.92 0.75 0.72 0.39 0.36 0.34
DeepPavlov/distilrubert-base-cased-conversational 0.7 0.56 0.39 0.76 0.98 0.78 0.76 0.48 0.4 0.43
DeepPavlov/distilrubert-tiny-cased-conversational 0.7 0.55 0.4 0.74 0.98 0.78 0.76 0.45 0.35 0.44
cointegrated/rut5-base-multitask 0.65 0.54 0.38 0.76 0.95 0.75 0.72 0.59 0.47 0.41
ai-forever/ruRoberta-large 0.7 0.6 0.35 0.78 0.98 0.8 0.78 0.32 0.3 0.46
DeepPavlov/rubert-base-cased-conversational 0.68 0.52 0.38 0.73 0.98 0.78 0.75 0.42 0.41 0.43
deepvk/deberta-v1-base 0.68 0.54 0.38 0.76 0.98 0.8 0.78 0.29 0.29 0.4
cointegrated/rubert-tiny 0.66 0.53 0.4 0.71 0.89 0.68 0.7 0.58 0.24 0.34
ai-forever/FRED-T5-large 0.62 0.44 0.37 0.78 0.98 0.81 0.67 0.45 0.25 0.15
inkoziev/sbert_synonymy 0.69 0.49 0.41 0.71 0.91 0.72 0.69 0.47 0.32 0.24
numind/NuNER-multilingual-v0.1 0.67 0.53 0.4 0.71 0.89 0.72 0.7 0.46 0.32 0.34
cointegrated/rubert-tiny-toxicity 0.57 0.44 0.37 0.68 1.0 0.78 0.7 0.43 0.24 0.32
ft_geowac_full 0.69 0.53 0.37 0.72 0.97 0.76 0.66 0.26 0.22 0.34
bert-base-multilingual-cased 0.66 0.53 0.37 0.7 0.89 0.7 0.69 0.38 0.36 0.38
ai-forever/ruT5-large 0.51 0.39 0.35 0.77 0.97 0.79 0.72 0.38 0.46 0.44
cointegrated/rut5-small 0.61 0.53 0.34 0.73 0.92 0.71 0.7 0.27 0.44 0.38
ft_geowac_21mb 0.68 0.52 0.36 0.72 0.96 0.74 0.65 0.15 0.21 0.32
inkoziev/sbert_pq 0.57 0.41 0.38 0.7 0.92 0.69 0.68 0.43 0.26 0.24
ai-forever/ruT5-base 0.5 0.28 0.34 0.73 0.97 0.76 0.7 0.29 0.45 0.41
hashing_1000_char 0.7 0.53 0.4 0.7 0.84 0.59 0.63 0.05 0.05 0.14
cointegrated/rut5-base 0.44 0.28 0.33 0.74 0.92 0.75 0.58 0.39 0.48 0.39
hashing_300_char 0.69 0.51 0.39 0.67 0.75 0.57 0.61 0.04 0.03 0.08
hashing_1000 0.63 0.49 0.39 0.66 0.77 0.55 0.57 0.05 0.02 0.04
hashing_300 0.61 0.48 0.4 0.64 0.71 0.54 0.5 0.05 0.02 0.02

Задачи

  • Semantic text similarity (STS) на основе переведённого датасета STS-B;
  • Paraphrase identification (PI) на основе датасета paraphraser.ru;
  • Natural language inference (NLI) на датасете XNLI;
  • Sentiment analysis (SA) на данных SentiRuEval2016.
  • Toxicity identification (TI) на датасете токсичных комментариев из OKMLCup;
  • Inappropriateness identification (IA) на датасете Сколтеха;
  • Intent classification (IC) и её кросс-язычная версия ICX на датасете NLU-evaluation-data, который я автоматически перевёл на русский. В IC классификатор обучается на русских данных, а в ICX – на английских, а тестируется в обоих случаях на русских.
  • Распознавание именованных сущностей на датасетах factRuEval-2016 (NE1) и RuDReC (NE2). Эти две задачи требуют получать эмбеддинги отдельных токенов, а не целых предложений; поэтому там участвуют не все модели.

Changelog

  • Август 2023 - обновил рейтинг:
    • поправив ошибку в вычислении mean token embeddings
    • добавил несколько моделей, включая нового лидера - intfloat/multilingual-e5-large
    • по просьбам трудящихся, добавил text-embedding-ada-002 (размер и производительность указаны от балды)
  • Лето 2022 - опубликовал первый рейтинг

Цитирование

Если вы упоминаете бенчмарк в научной работе, можете сослаться на мой пост на Хабре следующим образом (bibtex):

@misc{dale_encodechka, 
   author = "Dale, David",
   title  = "Рейтинг русскоязычных энкодеров предложений", 
   editor = "habr.com", 
   url    = "https://habr.com/ru/articles/669674/", 
   month  = {June},
   year   = {2022},   
   note = {[Online; posted 12-June-2022]},
}