Python_BE1
9 subscribers
747 photos
251 videos
7 files
672 links
Канал по Python, полезный и интересный контент для всех уровней.
По вопросам сотрудничества @cyberJohnny
Download Telegram
🌟 Model2Vec: создание компактных и быстрых моделей на основе Sentence Transformer.

Model2Vec - библиотека для создания компактных и быстрых моделей на основе предобученных Sentence Transformer моделей.

Model2Vec позволяет создавать эмбединг-модели слов и предложений, которые значительно меньше по размеру, но при этом сопоставимы по производительности с исходными Sentence Transformer моделями.

Отличительные особенности:

🟢быстрая дистилляция, процесс создания модели занимает несколько минут;

🟢быстрый инференс, в 500 раз быстрее на CPU относительно родительской модели;

🟢BYOM и BYOV, можно использовать на любой Sentence Transformer модели с любым словарем;

🟢мультиязычность, все что нужно - только мультиязычная модель в качестве источника;

🟢интеграция с Huggingface, загрузка\выгрузка моделей привычными <code>from_pretrained</code> и <code>push_to_hub</code>.

Пайплайн Model2Vec трехэтапный. На первом этапе словарь пропускается через модель Sentence Transformer для получения векторов эмбедингов для каждого слова.

Далее, размерность полученных эмбеддингов сокращается с помощью метода главных компонент (PCA). Наконец, применяется zipf-взвешивание для учета частотности слов в словаре.

Model2Vec работает в двух режимах:

🟠Output, в котором модель работает подобно Sentence Transformer, используя subword токенизацию;

🟠Vocab, в котором создается набор статических эмбедингов слов, аналогично GloVe или Word2Vec.

Оценку производительности Model2Vec делали на наборе данных MTEB на задачах PEARL (оценка качества представления фраз) и WordSim (оценка семантической близости слов).

Результаты показывают, что Model2Vec превосходит по производительности GloVe и модели, основанные на WordLlama по всем задачам оценки.

▶️Пример дистилляции:

<pre language="python">
from model2vec.distill import distill

# Choose a Sentence Transformer model
model_name = "BAAI/bge-base-en-v1.5"

# Distill the model
m2v_model = distill(model_name=model_name, pca_dims=256)

# Save the model
m2v_model.save_pretrained("m2v_model")</pre>
▶️Пример инференса:

<pre language="python">
from model2vec import StaticModel

# Load a model from the HuggingFace hub, or a local one.
model_name = "minishlab/M2V_base_output"
# You can optionally pass a token if you're loading a private model
model = StaticModel.from_pretrained(model_name, token=None)

# Make embeddings
embeddings = model.encode(["It's dangerous to go alone!", "It's a secret to everybody."])</pre>
📌Лицензирование : MIT License.

Набор моделей (https://huggingface.co/minishlab)
GitHub (https://github.com/MinishLab/model2vec)
(https://t.me/)

#AI #ML #LLM #Embedding #Model2Vec #python
@python_be1