AtesiT's picture
Upload README.md with huggingface_hub
6ea11dd verified
|
Raw
History Blame Contribute Delete
2.64 kB
---
language: ru
tags:
- sentence-transformers
- feature-extraction
- quantization
- int8
base_model: BAAI/bge-m3
---
# BGE-M3 — Dynamic INT8 Quantized
Динамически квантованная (torch.quantization.quantize_dynamic) версия модели
[BAAI/bge-m3](https://huggingface.co/BAAI/bge-m3). Квантованы только линейные слои (nn.Linear) до INT8.
## Как загрузить и использовать
Так как safetensors не поддерживает сериализацию INT8-тензоров, веса сохранены через torch.save.
Чтобы воспроизвести модель, нужно сначала создать такую же архитектуру и применить к ней квантизацию,
а затем загрузить сохранённые веса:
```python
import torch
from sentence_transformers import SentenceTransformer
from huggingface_hub import hf_hub_download
# 1. Создаём архитектуру той же базовой модели на CPU
base_model = SentenceTransformer("BAAI/bge-m3", device="cpu")
# 2. Применяем ту же процедуру динамической квантизации
quantized_model = torch.quantization.quantize_dynamic(
base_model, {torch.nn.Linear}, dtype=torch.qint8
)
# 3. Скачиваем и загружаем квантованные веса
weights_path = hf_hub_download(repo_id="AtesiT/bge-m3-int8-dynamic-quantized", filename="pytorch_model_quantized.pt")
state_dict = torch.load(weights_path, map_location="cpu")
quantized_model.load_state_dict(state_dict)
# 4. Используем как обычную SentenceTransformer-модель
embeddings = quantized_model.encode(["Привет, мир!"], normalize_embeddings=True)
```
## Результаты эксперимента (сравнение с базовой моделью)
| Метрика | Базовая модель | Квантованная модель |
|---|---|---|
| Размер (МБ) | 2182.18 | 1299.08 |
| Время инференса, 1000 текстов (сек) | 165.79 | 135.26 |
| Recall@5 | 0.7552 | см. Часть 4 |
| Recall@10 | 0.8395 | см. Часть 4 |
## Предупреждение
Динамическая квантизация PyTorch оптимизирована для инференса на CPU. Использование
модели на GPU не даст ускорения (и может вообще не работать), т.к. INT8 packed-веса
поддерживаются только для CPU-бэкенда.