GLM Модель языка на основе графических процессоров - это реализация модели языка NGRAM, которая принимает файл ARPA в качестве ввода, бинаризирует ее и запрашивает ее в партии. Более подробную информацию о дизайне и реализации можно найти в этой статье, опубликованной на ACL 2016.
git clone https://github.com/XapaJIaMnu/gLM.git
cd gLM
mkdir release_build
cd release_build
cmake ..
make -j4
make test # Requires CUDA for GPU testing-DBUILDTYPE=debug Builds с -O0 и -g-DCOMPUTE_VER Установите вычислительную версию оборудования. По умолчанию 52. Он не будет создавать правильные оценки, если они будут составлены с неправильной вычислительной версией !!! Проверьте вычислительную версию GPU здесь . Если make test не выполняет никаких тестов GPU, это означает, что ваша вычислительная версия верна.-DBAD_HOST Это должно помочь построить более старые системы Ubuntu, такие как 12.04 и 14.04. Не используйте его, если у вас нет проблем с построением.-DPYTHON_INCLUDE_DIR определяет путь к библиотеке Python, такой как /usr/include/python2.7/pyconfig.h include/python2.7/pyconfig.h или /usr/include/python3.6m/pyconfig и позволяет создавать компоненты Python.-DPYTHON_VER установлен по умолчанию на 2.7, если вы хотите создать компоненты Python с другой версией, установите его на желаемую версию. Это не будет иметь никакого эффекта, если не будет установлен -DPYTHON_INCLUDE_DIR .--DYAMLCPP_DIR должен быть SE, если ваш yaml-cpp находится в нестандартном месте (стандарт IS /usr/incude ). cd path_to_glm/release_build/bin
./binarize_v2 path_to_arpa_file output_path [btree_node_size]btree_node_size должен быть нечетным номером. Лично я обнаружил, что 31 работает лучше всего, но вы должны экспериментировать. Число может варьироваться в зависимости от файлов ARPA разного размера и разных графических процессоров
Чтобы сравнить GLM в пакетной настройке DO:
cd path_to_glm/release_build/bin
./batch_query_v2 path_to_binary_lm path_to_text_file [gpuDeviceID] [add_begin_end_markers] Это рассчитает недоумение текстового файла. Если установлен Gpudeviceid , он сообщит о части кода GPU, которая будет выполнена на конкретном графическом процессоре. Вы можете проверить доступные графические процессоры на системе, используя команду nvidia_smi . 0 - это безопасное значение по умолчанию, если вы хотите установить его. Если add_begin_end_markers установлен на 0, начало предложения и конца токенов предложения (<s> и </s>) не будет окружать все предложения.
Итак ... все начало работать правильно. A (предварительный) эталон против одного резьбового исследования Kenlm (Titan X против Core i7 4720HQ)
| Лм | ngram Queries в секунду | Модель информация |
|---|---|---|
| Кенлм | 10 274 237 | 3,3 г, 88720517 NGRAMS |
| GLM | 65 459 102 | 3,3 г, 88720517 NGRAMS |
Многопользовательский эталон, тот же графический процессор против 2x Intel (R) Xeon (R) CPU E5-2680 0 @ 2,70 ГГц
| Лм | ngram Queries в секунду | Модель информация |
|---|---|---|
| Кенлм 1 потока | 8 310 761 | 3,3 г, 88720517 NGRAMS |
| Кенлм 2 потока | 15 823 376 | 3,3 г, 88720517 NGRAMS |
| Кенлм 4 потока | 27 201 337 | 3,3 г, 88720517 NGRAMS |
| Кенлм 8 Тема | 43 336 444 | 3,3 г, 88720517 NGRAMS |
| Кенлм 16 Тема | 49 218 076 | 3,3 г, 88720517 NGRAMS |
| Кенлм 32 потока | 119 539 677 | 3,3 г, 88720517 NGRAMS |
| GLM | 65 459 102 | 3,3 г, 88720517 NGRAMS |
Проблема планирования, вероятно, приводит к низкой производительности в 16 случаях потока. GLM достигает в 2 раза лучшей производительности по сравнению с стоимостью оборудования. (1000 долларов за графический процессор против 3500 долларов за процессоры)