Базы данных, оперативная память и переформатирование - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть словарь 5 ГБ, где ключ - это слово, а значение - 300d вектор чисел, но у меня есть только 1 ГБ ОЗУ (минус 200 МБ сервера) и 50 ГБ ssd.Моя цель - относительно быстрый (1-3сек) поиск вектора для каждого слова во входном предложении.

Какая система хранения лучше всего подходит для такого рода задач?Является ли база данных Nonsql, такая как Mongo, хорошим вариантом?

Если так, есть ли способ рассчитать минимальную кеш-память, которая понадобится Монго, и возможно ли это решение с данным оборудованием?

Спасибо.

1 Ответ

0 голосов
/ 20 февраля 2019

Предполагая число с плавающей запятой одинарной точности с 32 битами и 32 битами word ключами, 5GB приблизительно суммирует до 4.1 миллионов векторов.

Вы можете сохранить <word, word>словарь с этими 4.1 миллионами записей в RAM.Часть значения словаря указывает на комбинацию файла и смещения в файле, хранящемся в SSD.В случае, если ваши предположения отличаются, расчеты должны оставаться одинаковыми.

Вероятно, нецелесообразно хранить целые векторы в одном файле.Возможно, будет достаточно сохранить векторы в базе данных, если табличное пространство находится на SSD.

Пример: Вы можете иметь 32 файлов с 130.000 векторами в каждом.Затем старшие 5 биты значения слова указывают файл, а младшие 27 биты - это смещение или номер вектора в файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...