Instructions to use VladimirRH/bge-m3-quantized-int8 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use VladimirRH/bge-m3-quantized-int8 with sentence-transformers:
from sentence_transformers import SentenceTransformer model = SentenceTransformer("VladimirRH/bge-m3-quantized-int8") sentences = [ "The weather is lovely today.", "It's so sunny outside!", "He drove to the stadium." ] embeddings = model.encode(sentences) similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [3, 3] - Notebooks
- Google Colab
- Kaggle
bge-m3-quantized-int8
Динамически квантованная (INT8) версия BAAI/bge-m3, полученная с помощью torch.quantization.quantize_dynamic. Квантизации подвергнуты все линейные слои (torch.nn.Linear) модели, веса приведены к формату INT8.
Модель предназначена для инференса на CPU — динамическая квантизация PyTorch не даёт выигрыша на GPU.
Как модель была получена
import torch
from sentence_transformers import SentenceTransformer
base_model = SentenceTransformer("BAAI/bge-m3")
base_model.to("cpu")
quantized_model = torch.quantization.quantize_dynamic(
base_model, {torch.nn.Linear}, dtype=torch.qint8
)
torch.save(quantized_model.state_dict(), "bge_m3_quantized.pt")
Как загрузить и использовать
Поскольку safetensors не умеет сериализовать INT8-тензоры, в репозитории лежит только state_dict (веса), а не полноценный чекпоинт. Чтобы им воспользоваться, нужно сначала пересоздать квантованную архитектуру, а затем загрузить в неё веса:
import torch
from huggingface_hub import hf_hub_download
from sentence_transformers import SentenceTransformer
# 1. Собираем ту же квантованную архитектуру
base_model = SentenceTransformer("BAAI/bge-m3")
base_model.to("cpu")
quantized_model = torch.quantization.quantize_dynamic(
base_model, {torch.nn.Linear}, dtype=torch.qint8
)
# 2. Скачиваем и загружаем веса
weights_path = hf_hub_download(
repo_id="VladimirRH/bge-m3-quantized-int8",
filename="bge_m3_quantized.pt",
)
quantized_model.load_state_dict(torch.load(weights_path, map_location="cpu"))
quantized_model.eval()
# 3. Инференс
embeddings = quantized_model.encode(
["Пример текста для эмбеддинга"], normalize_embeddings=True
)
Датасеты, использованные для оценки
ai-forever/headline-classification— визуализация пространства эмбеддингов (UMAP)ai-forever/rubq-retrieval— оценка качества семантического поиска (Recall@K)
Результаты
| Метрика | Базовая модель (fp32) | Квантованная модель (int8) |
|---|---|---|
| Размер модели (МБ) | 2182.18 МБ | 1299.08 МБ |
| Время инференса на 1000 текстов (сек) | 169.17 сек | 138.05 сек |
Атрибуция
Все права на исходную модель принадлежат авторам BAAI/bge-m3 и связанным с ними исследователям и организациям. При использовании этой модели, пожалуйста, указывайте оригинальных авторов.
Ограничения
Динамическая квантизация применена только к линейным слоям; качество и скорость на других устройствах (GPU, mobile) не гарантируются и не тестировались.
Model tree for VladimirRH/bge-m3-quantized-int8
Base model
BAAI/bge-m3