/ Модель

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

Контекст
32 768 токенов
Параметры
7,1 млрд
Размер весов
14,1 ГБ
Лицензия
Apache 2.0
Архитектура
qwen2 · dense
Библиотека
sentence-transformers
Опубликована
7 июн 2024

Qwen2-7B-Instruct-embed-base

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

Модель на основе Qwen2 с удалённым языковым выходным слоем предназначена для получения текстовых эмбеддингов и сравнения сходства предложений.

5 671скачиваний за 30 дней5лайковвеса обновлены10 июн 2024

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ssmits/Qwen2-7B-Instruct-embed-base — модель эмбеддингов на основе Qwen2, представленная автором репозитория ssmits. Это плотная Transformer-модель класса Qwen2Model с 7,1 млрд параметров; у неё удалён слой lm_head, поэтому она предназначена для получения векторных представлений текста. Модель распространяется в формате safetensors и использует библиотеку sentence-transformers.

Её можно применять для извлечения признаков, сравнения сходства предложений и классификации текста. Контекст составляет до 32 768 токенов; в карточке указан английский язык, а серия Qwen2 описана как адаптированная к нескольким естественным языкам и языкам программирования. Лицензия — Apache-2.0.

Автор предупреждает, что модель не показывает высокой эффективности без дополнительного дообучения, и отмечает потребление более 24 ГБ видеопамяти в собственных тестах. Для получения эмбеддингов требуется выбрать подходящую операцию pooling поверх контекстных представлений.

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

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

Ограничения

Автор предупреждает, что без дополнительного дообучения качество эмбеддингов невысокое; для инференса в его тестах требовалось более 24 ГБ видеопамяти. Для получения векторов нужно подобрать операцию pooling.

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

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

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

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

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

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

Открыть на Hugging Face

Qwen2-7B-Instruct-embed-base

Model Details

Qwen2 is a language model series including decoder language models of different model sizes. For each size, we release the base language model and the aligned chat model. It is based on the Transformer architecture with SwiGLU activation, attention QKV bias, group query attention, etc. Additionally, we have an improved tokenizer adaptive to multiple natural languages and codes.

Requirements

The code of Qwen2 has been in the latest Hugging face transformers and we advise you to install transformers>=4.37.0, or you might encounter the following error:

KeyError: 'qwen2'

Usage

The 'lm_head' layer of this model has been removed, which means it can be used for embeddings. It will not perform greatly, as it needs to be further fine-tuned, as shown by intfloat/e5-mistral-7b-instruct.

Inference

from sentence_transformers import SentenceTransformer
import torch

# 1. Load a pretrained Sentence Transformer model
model = SentenceTransformer("ssmits/Qwen2-7B-embed-base") # device = "cpu" when <= 24 GB VRAM

# The sentences to encode
sentences = [
    "The weather is lovely today.",
    "It's so sunny outside!",
    "He drove to the stadium.",
]

# 2. Calculate embeddings by calling model.encode()
embeddings = model.encode(sentences)
print(embeddings.shape)
# (3, 3584)

# 3. Calculate the embedding similarities
# Assuming embeddings is a numpy array, convert it to a torch tensor
embeddings_tensor = torch.tensor(embeddings)

# Using torch to compute cosine similarity matrix
similarities = torch.nn.functional.cosine_similarity(embeddings_tensor.unsqueeze(0), embeddings_tensor.unsqueeze(1), dim=2)

print(similarities)
# tensor([[1.0000, 0.8608, 0.6609],
#         [0.8608, 1.0000, 0.7046],
#         [0.6609, 0.7046, 1.0000]])

Note: In my tests it utilizes more than 24GB (RTX 4090), so an A100 or A6000 would be required for inference.

Inference (HuggingFace Transformers)

Without sentence-transformers, you can use the model like this: First, you pass your input through the transformer model, then you have to apply the right pooling-operation on-top of the contextualized word embeddings.

from transformers import AutoTokenizer, AutoModel
import torch

#Mean Pooling - Take attention mask into account for correct averaging
def mean_pooling(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)

# Sentences we want sentence embeddings for
sentences = ['This is an example sentence', 'Each sentence is converted']

# Load model from HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('ssmits/Qwen2-7B-Instruct-embed-base')
model = AutoModel.from_pretrained('ssmits/Qwen2-7B-Instruct-embed-base') # device = "cpu" when <= 24 GB VRAM

# Tokenize sentences
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')

# Compute token embeddings
with torch.no_grad():
    model_output = model(**encoded_input)

# Perform pooling. In this case, mean pooling.
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])

print("Sentence embeddings:")
print(sentence_embeddings)

How to enable Multi-GPU

from transformers import AutoModel
from torch.nn import DataParallel

model = AutoModel.from_pretrained("ssmits/Qwen2-7B-Instruct-embed-base")
for module_key, module in model._modules.items():
    model._modules[module_key] = DataParallel(module)

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

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

GPU в ailist

Универсальный рантайм · sentence-transformers

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

Подбираем GPU…

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

0 моделей