--- 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-бэкенда.