/ Модель

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

Контекст
8 192 токена
Параметры
434 млн
Лицензия
MIT
Архитектура
new · dense
Опубликована
25 сен 2024

dunzhang-stella_en_400M_v5

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

Текстовая модель Marqo Stella v2 создаёт эмбеддинги и оценивает сходство предложений для семантического поиска и сопоставления текстов.

43скачиваний за 30 дней10лайковвеса обновлены25 ноя 2024

Бенчмарки

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

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

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

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

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

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

Marqo Stella v2 — модель для получения текстовых эмбеддингов и оценки сходства между предложениями. В карточке она описана как близкая к исходной Dunzhang Stella 400M, но с объединённым Matryoshka-слоем: он позволяет получать эмбеддинги меньшей размерности с меньшими вычислительными затратами, сохраняя метрики релевантности. Модель содержит 433,9 млн параметров, поддерживает контекст до 8192 токенов и распространяется в форматах PyTorch и Safetensors.

Модель подходит для семантического поиска, сопоставления запросов с документами и поиска похожих текстов. В метаданных указан pipeline sentence-similarity, а среди возможностей — embeddings. Лицензия — MIT. README не уточняет поддерживаемые языки или специализированные области применения.

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

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

Ограничения

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

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

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

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

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

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

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

Открыть на Hugging Face

Marqo Stella v2

This model is similar to the original Dunzhang stella 400m model, with a fused matryoshka layer. The hierarchical structuring from a Matryoshka Layer reduces the computational overhead for generating embeddings, while leaving relevance metrics unchanged.

Transformers

import os
import torch
from transformers import AutoModel, AutoTokenizer, AutoConfig
from sklearn.preprocessing import normalize

query_prompt = "Instruct: Given a web search query, retrieve relevant passages that answer the query.\nQuery: "
queries = [
    "What are some ways to reduce stress?",
    "What are the benefits of drinking green tea?",
]
queries = [query_prompt + query for query in queries]
# docs do not need any prompts
docs = [
    "There are many effective ways to reduce stress. Some common techniques include deep breathing, meditation, and physical activity. Engaging in hobbies, spending time in nature, and connecting with loved ones can also help alleviate stress. Additionally, setting boundaries, practicing self-care, and learning to say no can prevent stress from building up.",
    "Green tea has been consumed for centuries and is known for its potential health benefits. It contains antioxidants that may help protect the body against damage caused by free radicals. Regular consumption of green tea has been associated with improved heart health, enhanced cognitive function, and a reduced risk of certain types of cancer. The polyphenols in green tea may also have anti-inflammatory and weight loss properties.",
]

# The path of your model after cloning it
model_dir = "Marqo/dunzhang-stella_en_400M_v5"
model = AutoModel.from_pretrained(model_dir, trust_remote_code=True).cuda().eval()
tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)


with torch.no_grad():
    input_data = tokenizer(queries, padding="longest", truncation=True, max_length=512, return_tensors="pt")
    input_data = {k: v.cuda() for k, v in input_data.items()}
    attention_mask = input_data["attention_mask"]
    last_hidden_state = model(**input_data)[0]
    last_hidden = last_hidden_state.masked_fill(~attention_mask[..., None].bool(), 0.0)
    query_vectors = last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]
    query_vectors = normalize(query_vectors.cpu().numpy())

# Embed the documents
with torch.no_grad():
    input_data = tokenizer(docs, padding="longest", truncation=True, max_length=512, return_tensors="pt")
    input_data = {k: v.cuda() for k, v in input_data.items()}
    attention_mask = input_data["attention_mask"]
    last_hidden_state = model(**input_data)[0]
    last_hidden = last_hidden_state.masked_fill(~attention_mask[..., None].bool(), 0.0)
    docs_vectors = last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]
    docs_vectors = normalize(docs_vectors.cpu().numpy())

print(query_vectors.shape, docs_vectors.shape)
# (2, 1024) (2, 1024)

similarities = query_vectors @ docs_vectors.T
print(similarities)
# [[0.8397531  0.29900077]
#  [0.32818374 0.80954516]]

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

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

GPU в ailist

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

Нельзя запустить

Модели нужен код из репозитория; автор пока не в списке доверенных организаций.

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

0 моделей