rubert-mini-frida - лёгкая и быстрая модификация FRIDA
Модель для расчетов эмбеддингов предложений на русском и английском языках получена методом дистилляции эмбеддингов
ai-forever/FRIDA
(размер эмбеддингов - 1536, слоёв - 24) в
sergeyzh/rubert-mini-sts
(размер эмбеддингов - 312, слоёв - 7). Основной режим использования FRIDA - CLS pooling заменен на mean pooling. Каких-либо других изменений поведения модели (модификации или фильтрации эмбеддингов, использования дополнительной модели) не производилось. Дистиляция выполнена в максимально возможном объеме - эмбеддинги русских и английских предложений, работа префиксов.
Рекомендуемый размер контекста модели соответствует FRIDA и не превышает 512 токенов (фактический унаследованный от исходной модели - 2048).
Префиксы
Все префиксы унаследованы от FRIDA.
Оптимальный (обеспечивающий средние результаты) для большинства задач - "categorize: " прописан по умолчанию в
config_sentence_transformers.json
Перечень используемых префиксов и их влияние на оценки модели в
encodechka
:
import torch
import torch.nn.functional as F
from transformers import AutoTokenizer, AutoModel
defpool(hidden_state, mask, pooling_method="mean"):
if pooling_method == "mean":
s = torch.sum(hidden_state * mask.unsqueeze(-1).float(), dim=1)
d = mask.sum(axis=1, keepdim=True).float()
return s / d
elif pooling_method == "cls":
return hidden_state[:, 0]
inputs = [
# "paraphrase: В Ярославской области разрешили работу бань, но без посетителей",
"categorize_entailment: Женщину доставили в больницу, за ее жизнь сейчас борются врачи.",
"search_query: Сколько программистов нужно, чтобы вкрутить лампочку?",
# "paraphrase: Ярославским баням разрешили работать без посетителей",
"categorize_entailment: Женщину спасают врачи.",
"search_document: Чтобы вкрутить лампочку, требуется три программиста: один напишет программу извлечения лампочки, другой — вкручивания лампочки, а третий проведет тестирование."
]
tokenizer = AutoTokenizer.from_pretrained("sergeyzh/rubert-mini-frida")
model = AutoModel.from_pretrained("sergeyzh/rubert-mini-frida")
tokenized_inputs = tokenizer(inputs, max_length=512, padding=True, truncation=True, return_tensors="pt")
with torch.no_grad():
outputs = model(**tokenized_inputs)
embeddings = pool(
outputs.last_hidden_state,
tokenized_inputs["attention_mask"],
pooling_method="mean"
)
embeddings = F.normalize(embeddings, p=2, dim=1)
sim_scores = embeddings[:3] @ embeddings[3:].T
print(sim_scores.diag().tolist())
# [0.9423348903656006, 0.8306248188018799, 0.7095720767974854]# [0.9360030293464661, 0.8591322302818298, 0.728583037853241] - FRIDA
Использование с
sentence_transformers
(sentence-transformers>=2.4.0):
from sentence_transformers import SentenceTransformer
# loads model with mean pooling
model = SentenceTransformer("sergeyzh/rubert-mini-frida")
paraphrase = model.encode(["В Ярославской области разрешили работу бань, но без посетителей", "Ярославским баням разрешили работать без посетителей"], prompt="paraphrase: ")
print(paraphrase[0] @ paraphrase[1].T)
# 0.94233495# 0.9360032 - FRIDA
categorize_entailment = model.encode(["Женщину доставили в больницу, за ее жизнь сейчас борются врачи.", "Женщину спасают врачи."], prompt="categorize_entailment: ")
print(categorize_entailment[0] @ categorize_entailment[1].T)
# 0.8306249# 0.8591322 - FRIDA
query_embedding = model.encode("Сколько программистов нужно, чтобы вкрутить лампочку?", prompt="search_query: ")
document_embedding = model.encode("Чтобы вкрутить лампочку, требуется три программиста: один напишет программу извлечения лампочки, другой — вкручивания лампочки, а третий проведет тестирование.", prompt="search_document: ")
print(query_embedding @ document_embedding.T)
# 0.70957196# 0.7285831 - FRIDA
Runs of sergeyzh rubert-mini-frida on huggingface.co
4.8K
Total runs
0
24-hour runs
-2
3-day runs
-327
7-day runs
-6.6K
30-day runs
More Information About rubert-mini-frida huggingface.co Model
rubert-mini-frida huggingface.co is an AI model on huggingface.co that provides rubert-mini-frida's model effect (), which can be used instantly with this sergeyzh rubert-mini-frida model. huggingface.co supports a free trial of the rubert-mini-frida model, and also provides paid use of the rubert-mini-frida. Support call rubert-mini-frida model through api, including Node.js, Python, http.
rubert-mini-frida huggingface.co is an online trial and call api platform, which integrates rubert-mini-frida's modeling effects, including api services, and provides a free online trial of rubert-mini-frida, you can try rubert-mini-frida online for free by clicking the link below.
sergeyzh rubert-mini-frida online free url in huggingface.co:
rubert-mini-frida is an open source model from GitHub that offers a free installation service, and any user can find rubert-mini-frida on GitHub to install. At the same time, huggingface.co provides the effect of rubert-mini-frida install, users can directly use rubert-mini-frida installed effect in huggingface.co for debugging and trial. It also supports api for free installation.