Giter Club home page Giter Club logo

quantitizer's Introduction

quantitizer

Пакет quantitizer позволяет квантизировать матрицы и сжимать модели эмбеддингов посредством квантования матриц.

Особенности

  • Доступна реализация квантования с использованием CUDA (при помощи RAPIDS).
  • Частичная интеграция с библиотекой gensim (fasttext и word2vec).
  • Загрузка уже ранее сжатых моделей и использование их в своих проектах.

Установка

pip install quantitizer

Для работы с реализацией квантования при помощи CUDA (модуль cuda) необходимо также установить cuML.

Примеры

Пример сжатия массива numpy

На CPU:

import numpy as np

from quantitizer import quantitize 

matrix = np.random.random((50000, 1000))
qmatrix = quantitize(matrix, sub_size=5)
matrix.nbytes // 1024 // 1024 # В мегабайтах
>> 381

qmatrix.nbytes // 1024 // 1024
>> 2

На GPU:

import numpy as np

from quantitizer.cuda import quantitize_cuda 

matrix = np.random.random((50000, 1000))
qmatrix = quantitize_cuda(matrix, sub_size=5)
matrix.nbytes // 1024 // 1024 # В мегабайтах
>> 381

qmatrix.nbytes // 1024 // 1024
>> 2

Пример сжатия модели fasttext

from gensim.models import FastText

from quantitizer.integration.gensim.fasttext import quantitize_ft

ft = FastText.load_fasttext_format("../data/cc.en.300.bin").wv
ft_compressed = quantitize_ft(ft, 2)

Пример использования сжатой модели fasttext

from quantitizer.pretrain import load
from quantitizer.integration.gensim.fasttext import load_ft

load("fasttext-compressed-en-100")
ft = load_ft("fasttext_compressed_en_100")
vec = ft.get_vector("word")

Пример использования сжатой модели word2vec

from quantitizer.pretrain import load
from quantitizer.integration.gensim.word2vec import load_wv

load("w2v-compressed-en-100")
wv = load_wv("data/w2v-compressed-en-100")
vec = wv.get_vector("computer")

Доступные модели

Название Описание Размер Совпадение с оригиналом, %
fasttext-compressed-en-100 Английская версия fasttext, сжатая с разбиением 100. ~ 423 Мб ~ 94
w2v-compressed-en-100 Английская версия word2vec, сжатая с разбиением 100. ~ 348 Мб ~ 95

Эксперименты

Fasttext

Здесь описывается эксперимент сжатия модели эмбеддингов fasttext английского языка доступной по ссылке https://fasttext.cc/docs/en/crawl-vectors.html, оригинальный размер которой ~ 7215 Мб.

Конфигурации:

Тип вычислительного устройства Характеристики
CPU Apple M1 Pro
GPU NVIDIA RTX 3070 (8 GB)

Результаты экспериментов:

Количество разбиений CPU GPU Объём памяти в RAM, Мб Точность
2 ~ 1 минута 4 секунды ~ 14 секунд ~ 269.36 ~ 0.40
100 ~ 61 минута 30 секунд ~ 4 минуты 51 секунда ~ 642.82 ~ 0.94

Разработка

Развертывание среды

Для установки всех модулей, необходимых для разработки данного пакета, необходимо использовать пакетные менеджер Poetry. Затем необходимо использовать команду poetry install для установки всех необходимых зависимостей.

Тестирование

Для запуска всех тестов используется команда pytest в корне проекта.

Сборка

Сборка пакета осуществляется командой poetry build.

Сборка документации

Для сборки документации можно использовать команду make html в директории docs.

Ссылки

quantitizer's People

Contributors

capblood avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.