/ Модель

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

Контекст
512 токенов
Параметры
434 млн
Лицензия
Apache 2.0
Архитектура
bert · dense
Библиотека
transformers
Опубликована
23 окт 2025

DMRetriever-335M

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

Англоязычная BERT-модель для поиска релевантных текстов по тематике управления чрезвычайными ситуациями с помощью эмбеддингов.

350скачиваний за 30 дней0лайковвеса обновлены23 окт 2025

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DMRetriever-335M — англоязычная модель для создания текстовых эмбеддингов и поиска релевантных текстов в тематике управления чрезвычайными ситуациями. Она обучена по подходу, описанному в работе «DMRetriever: A Family of Models for Improved Text Retrieval in Disaster Management». Модель основана на BERT с плотной архитектурой и предназначена для использования с Transformers.

В README указаны размер 335M параметров, контекст до 512 токенов и размер эмбеддинга 1024. Метаданные репозитория указывают 433,9M параметров; доступные сведения расходятся по размеру. Модель принимает текст и выдаёт векторы для поиска и ранжирования релевантных текстов. Лицензия — Apache-2.0.

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

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

Ограничения

Поддерживает английский язык и контекст до 512 токенов. Размер модели расходится между README (335M) и метаданными (433,9M).

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

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

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

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

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

Открыть на Hugging Face

This model is trained through the approach described in DMRetriever: A Family of Models for Improved Text Retrieval in Disaster Management. The associated GitHub repository is available here.

Model Overview

DMRetriever-335M has the following features:

  • Model Type: Text Embedding
  • Supported Languages: English
  • Number of Paramaters: 335
  • Context Length: 512
  • Embedding Dimension: 1024

For more details, including model training, benchmark evaluation, and inference performance, please refer to our paper, GitHub.

DMRetriever series model list

ModelDescriptionBackboneBackbone TypeHidden Size#Layers
DMRetriever-33MBase 33M variantMiniLMEncoder-only38412
DMRetriever-33M-PTPre-trained version of 33MMiniLMEncoder-only38412
DMRetriever-109MBase 109M variantBERT-base-uncasedEncoder-only76812
DMRetriever-109M-PTPre-trained version of 109MBERT-base-uncasedEncoder-only76812
DMRetriever-335MBase 335M variantBERT-large-uncased-WWMEncoder-only102424
DMRetriever-335M-PTPre-trained version of 335MBERT-large-uncased-WWMEncoder-only102424
DMRetriever-596MBase 596M variantQwen3-0.6BDecoder-only102428
DMRetriever-596M-PTPre-trained version of 596MQwen3-0.6BDecoder-only102428
DMRetriever-4BBase 4B variantQwen3-4BDecoder-only256036
DMRetriever-4B-PTPre-trained version of 4BQwen3-4BDecoder-only256036
DMRetriever-7.6BBase 7.6B variantQwen3-8BDecoder-only409636
DMRetriever-7.6B-PTPre-trained version of 7.6BQwen3-8BDecoder-only409636

Usage

Using HuggingFace Transformers:

import numpy as np
import torch
import torch.nn.functional as F
from transformers import AutoTokenizer, AutoModel

MODEL_NAME = "DMIR01/DMRetriever-335M"

# Load model/tokenizer
device = "cuda" if torch.cuda.is_available() else "cpu"
dtype = torch.float16 if device == "cuda" else torch.float32
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, use_fast=True)
# Some decoder-only models have no pad token; fall back to EOS if needed
if tokenizer.pad_token is None and tokenizer.eos_token is not None:
    tokenizer.pad_token = tokenizer.eos_token
model = AutoModel.from_pretrained(MODEL_NAME, torch_dtype=dtype).to(device)
model.eval()

# Mean pooling over valid tokens (mask==1)
def mean_pool(last_hidden_state: torch.Tensor, attention_mask: torch.Tensor) -> torch.Tensor:
    mask = attention_mask.unsqueeze(-1).type_as(last_hidden_state)  # [B, T, 1]
    summed = (last_hidden_state * mask).sum(dim=1)                  # [B, H]
    counts = mask.sum(dim=1).clamp(min=1e-9)                        # [B, 1]
    return summed / counts                                          # [B, H]

# Optional task prefixes (use for queries; keep corpus plain)
TASK2PREFIX = {
    "FactCheck": "Given the claim, retrieve most relevant document that supports or refutes the claim",
    "NLI":       "Given the premise, retrieve most relevant hypothesis that is entailed by the premise",
    "QA":        "Given the question, retrieve most relevant passage that best answers the question",
    "QAdoc":     "Given the question, retrieve the most relevant document that answers the question",
    "STS":       "Given the sentence, retrieve the sentence with the same meaning",
    "Twitter":   "Given the user query, retrieve the most relevant Twitter text that meets the request",
}
def with_prefix(task: str, text: str) -> str:
    p = TASK2PREFIX.get(task, "")
    return f"{p}: {text}" if p else text

# Batch encode with L2 normalization (recommended for cosine/inner-product search)
@torch.inference_mode()
def encode_texts(texts, batch_size: int = 32, max_length: int = 512, normalize: bool = True):
    all_embs = []
    for i in range(0, len(texts), batch_size):
        batch = texts[i:i + batch_size]
        toks = tokenizer(
            batch,
            padding=True,
            truncation=True,
            max_length=max_length,
            return_tensors="pt",
        )
        toks = {k: v.to(device) for k, v in toks.items()}
        out = model(**toks, return_dict=True)
        emb = mean_pool(out.last_hidden_state, toks["attention_mask"])
        if normalize:
            emb = F.normalize(emb, p=2, dim=1)
        all_embs.append(emb.cpu().numpy())
    return np.vstack(all_embs) if all_embs else np.empty((0, model.config.hidden_size), dtype=np.float32)

# ---- Example: plain sentences ----
sentences = [
    "A cat sits on the mat.",
    "The feline is resting on the rug.",
    "Quantum mechanics studies matter and light.",
]
embs = encode_texts(sentences)  # shape: [N, hidden_size]
print("Embeddings shape:", embs.shape)

# Cosine similarity (embeddings are L2-normalized)
sims = embs @ embs.T
print("Cosine similarity matrix:\n", np.round(sims, 3))

# ---- Example: query with task prefix (QA) ----
qa_queries = [
    with_prefix("QA", "Who wrote 'Pride and Prejudice'?"),
    with_prefix("QA", "What is the capital of Japan?"),
]
qa_embs = encode_texts(qa_queries)
print("QA Embeddings shape:", qa_embs.shape)

Citation

If you find this repository helpful, please kindly consider citing the corresponding paper. Thanks!

@article{yin2025dmretriever,
  title={DMRetriever: A Family of Models for Improved Text Retrieval in Disaster Management},
  author={Yin, Kai and Dong, Xiangjue and Liu, Chengkai and Lin, Allen and Shi, Lingfeng and Mostafavi, Ali and Caverlee, James},
  journal={arXiv preprint arXiv:2510.15087},
  year={2025}
}

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей