/ Модель

Характеристики

Контекст
512 токенов
Параметры
137 млн
Архитектура
bert · dense
Опубликована
22 авг 2023

bert-base-1024-biencoder-64M-pairs

ЭмбеддингиТекст → embedding10 профессий

Дву-башенная BERT-модель создаёт 768-мерные эмбеддинги предложений и абзацев для семантического поиска и кластеризации.

128скачиваний за 30 дней0лайковвеса обновлены29 авг 2023

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Эмбеддинги» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Модель shreyansh26/bert-base-1024-biencoder-64M-pairs — двубашенный энкодер предложений на архитектуре BERT, основанный на предварительно обученной MosaicML BERT. Она преобразует предложения и абзацы в плотные векторы размерностью 768 для семантического поиска и кластеризации. В README указана обработка последовательностей длиной до 1024 токенов; метаданные модели указывают 136,7 млн параметров и контекст 512 токенов.

Модель предназначена для поиска семантически близких текстов, извлечения документов и пассажей, а также сравнения и группировки предложений. В метаданных отмечен английский язык, а среди датасетов для обучения и оценки перечислены MS MARCO, SNLI, MultiNLI и другие наборы для поиска и текстового сходства. Репозиторий содержит веса PyTorch; для использования предлагаются Transformers и специализированная реализация Mosaic BERT.

Лицензия в предоставленных данных не указана. Между README и метаданными есть расхождение по длине контекста: README сообщает 1024 токена, метаданные — 512; фактический рабочий предел следует проверять по конфигурации и токенизатору модели.

Сценарии применения

  • семантический поиск по документам и пассажам
  • поиск похожих предложений
  • кластеризация текстов по смыслу
  • ранжирование кандидатов по сходству с запросом
  • извлечение релевантных фрагментов для RAG

Ограничения

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

Для каких профессий подходит10

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

bert-base-1024-biencoder-64M-pairs

A long context biencoder based on MosaicML's BERT pretrained on 1024 sequence length. This model maps sentences & paragraphs to a 768 dimensional dense vector space and can be used for tasks like clustering or semantic search.

Usage

Download the model and related scripts

git clone https://huggingface.co/shreyansh26/bert-base-1024-biencoder-64M-pairs

Inference

import torch
from torch import nn
from transformers import AutoModelForMaskedLM, AutoTokenizer, pipeline, AutoModel
from mosaic_bert import BertModel

# pip install triton==2.0.0.dev20221202 --no-deps if using Pytorch 2.0

class AutoModelForSentenceEmbedding(nn.Module):
    def __init__(self, model, tokenizer, normalize=True):
        super(AutoModelForSentenceEmbedding, self).__init__()

        self.model = model.to("cuda")
        self.normalize = normalize
        self.tokenizer = tokenizer

    def forward(self, **kwargs):
        model_output = self.model(**kwargs)
        embeddings = self.mean_pooling(model_output, kwargs['attention_mask'])
        if self.normalize:
            embeddings = torch.nn.functional.normalize(embeddings, p=2, dim=1)

        return embeddings

    def mean_pooling(self, model_output, attention_mask):
        token_embeddings = model_output[0]  # First element of model_output contains all token embeddings
        input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
        return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)

model = AutoModel.from_pretrained("<path-to-model>", trust_remote_code=True).to("cuda")
model = AutoModelForSentenceEmbedding(model, tokenizer)
tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')

sentences = ["This is an example sentence", "Each sentence is converted"]

encoded_input = tokenizer(sentences, padding=True, truncation=True, max_length=1024, return_tensors='pt').to("cuda")
embeddings = model(**encoded_input)

print(embeddings)
print(embeddings.shape)

Other details

Training

This model has been trained on 64M randomly sampled pairs of sentences/paragraphs from the same training set that Sentence Transformers models use. Details of the training set here.

The training (along with hyperparameters), inference and data loading scripts can all be found in this Github repository.

Evaluations

We ran the model on a few retrieval based benchmarks (CQADupstackEnglishRetrieval, DBPedia, MSMARCO, QuoraRetrieval) and the results are here.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Можно запустить

Подбираем GPU…

Класс архитектуры
BertForMaskedLM
Ревизия весов
af24c8f

0 моделей