Feature Extraction
sentence-transformers
Russian
xlm-roberta
quantization
int8
text-embeddings-inference
Instructions to use AtesiT/bge-m3-int8-dynamic-quantized with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use AtesiT/bge-m3-int8-dynamic-quantized with sentence-transformers:
from sentence_transformers import SentenceTransformer model = SentenceTransformer("AtesiT/bge-m3-int8-dynamic-quantized") 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
| 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-бэкенда. | |