GLM GPU 기반 언어 모델은 ARPA 파일을 입력으로 가져 와서 이사 화하여 배치로 쿼리하는 NGRAM 언어 모델 구현입니다. 설계 및 구현에 대한 자세한 내용은이 백서에서 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 빌드-DCOMPUTE_VER 하드웨어의 컴퓨팅 버전을 설정합니다. 기본값은 52입니다. 잘못된 컴퓨팅 버전으로 컴파일 된 경우 올바른 점수를 생성하지 않습니다 !!! 여기에서 GPU의 Compute 버전을 확인하십시오 . make test 가 GPU 테스트에 실패하지 않으면 컴퓨팅 버전이 정확하다는 것을 의미합니다.-DBAD_HOST 이것은 12.04 및 14.04와 같은 구형 우분투 시스템을 구축하는 데 도움이됩니다. 구축에 어려움이 없다면 사용하지 마십시오.-DPYTHON_INCLUDE_DIR /usr/include/python2.7/pyconfig.h 또는 /usr/include/python3.6m/pyconfig 와 같은 Python 라이브러리의 경로를 정의하고 Python 구성 요소를 구축 할 수 있습니다.-DPYTHON_VER 다른 버전으로 Python 구성 요소를 빌드하려면 원하는 버전으로 설정하면 2.7로 기본적으로 설정됩니다. -DPYTHON_INCLUDE_DIR 설정되지 않으면 효과가 없습니다.--DYAMLCPP_DIR se 여야합니다 (표준은 /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 파일과 GPU에 따라 다를 수 있습니다.
배치 설정에서 GLM을 벤치마킹하려면 다음과 같습니다.
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 부분에 특정 GPU에서 실행되도록 지시됩니다. nvidia_smi 명령을 사용하여 시스템에서 사용 가능한 GPU를 확인할 수 있습니다. 0은 설정하려는 경우 안전한 기본값입니다. add_begin_end_markers가 0으로 설정되면 문장의 시작과 문장의 시작 (<S> 및 </s>)은 모든 문장을 둘러싸지 않습니다.
그래서 ... 모든 것이 올바르게 실행되기 시작했습니다. 단일 스레드 프로브 Kenlm에 대한 (예비) 벤치 마크 (Titan X vs Core i7 4720hq)
| LM | NGRAM 쿼리 초당 | 모델 정보 |
|---|---|---|
| Kenlm | 10 274 237 | 3.3G, 88720517 NGRAMS |
| GLM | 65 459 102 | 3.3G, 88720517 NGRAMS |
다중 스레드 벤치 마크, 2x 인텔 (R) Xeon (R) CPU E5-2680 0 @ 2.70GHz에 대한 동일한 GPU
| LM | NGRAM 쿼리 초당 | 모델 정보 |
|---|---|---|
| kenlm 1 스레드 | 8 310 761 | 3.3G, 88720517 NGRAMS |
| Kenlm 2 스레드 | 15 823 376 | 3.3G, 88720517 NGRAMS |
| Kenlm 4 스레드 | 27 201 337 | 3.3G, 88720517 NGRAMS |
| Kenlm 8 스레드 | 43 336 444 | 3.3G, 88720517 NGRAMS |
| kenlm 16 스레드 | 49 218 076 | 3.3G, 88720517 NGRAMS |
| Kenlm 32 스레드 | 119 539 677 | 3.3G, 88720517 NGRAMS |
| GLM | 65 459 102 | 3.3G, 88720517 NGRAMS |
스케줄링 문제로 인해 16 개의 스레드 케이스에서 성능이 낮아질 수 있습니다. GLM은 하드웨어 비용에 비해 2 배 더 나은 성능을 달성합니다. (GPU의 경우 $ 1000 대 CPU의 경우 $ 3500)