AtesiT/bge-m3-int8-dynamic-quantized
04
BGE-M3 — Dynamic INT8 Quantized
Динамически квантованная (torch.quantization.quantize_dynamic) версия модели BAAI/bge-m3. Квантованы только линейные слои (nn.Linear) до INT8.
Как загрузить и использовать
Так как safetensors не поддерживает сериализацию INT8-тензоров, веса сохранены через torch.save. Чтобы воспроизвести модель, нужно сначала создать такую же архитектуру и применить к ней квантизацию, а затем загрузить сохранённые веса:
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)
Результаты эксперимента (сравнение с базовой моделью)
Предупреждение
Динамическая квантизация PyTorch оптимизирована для инференса на CPU. Использование модели на GPU не даст ускорения (и может вообще не работать), т.к. INT8 packed-веса поддерживаются только для CPU-бэкенда.
