GLM Model bahasa berbasis GPU adalah implementasi model bahasa NGRAM yang mengambil file ARPA sebagai input, binarize dan menanyakannya dalam batch. Rincian lebih lanjut tentang desain dan implementasi dapat ditemukan dalam makalah ini, diterbitkan di 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 dibangun dengan -o0 dan -g-DCOMPUTE_VER Atur versi komputasi perangkat keras. Default adalah 52. Ini tidak akan menghasilkan skor yang benar jika disusun dengan versi komputasi yang salah !!! Periksa versi komputasi GPU Anda di sini . Jika make test tidak gagal dari salah satu tes GPU, itu berarti versi komputasi Anda benar.-DBAD_HOST Ini akan membantu membangun sistem ubuntu yang lebih tua seperti 12.04 dan 14.04. Jangan gunakan itu kecuali Anda mengalami kesulitan membangun.-DPYTHON_INCLUDE_DIR mendefinisikan jalur ke pustaka python seperti /usr/include/python2.7/pyconfig.h atau /usr/include/python3.6m/pyconfig dan memungkinkan membangun komponen Python.-DPYTHON_VER diatur ke default ke 2.7 jika Anda ingin membangun komponen Python dengan versi yang berbeda, atur ke versi yang Anda inginkan. Itu tidak akan berpengaruh kecuali -DPYTHON_INCLUDE_DIR diatur.--DYAMLCPP_DIR harus SE jika YAML-CPP Anda berada di lokasi non-standar (Standar IS /usr/incude ). cd path_to_glm/release_build/bin
./binarize_v2 path_to_arpa_file output_path [btree_node_size]BTREE_NODE_SIZE harus menjadi angka ganjil. Secara pribadi saya menemukan bahwa 31 bekerja paling baik, tetapi Anda harus bereksperimen. Jumlahnya dapat bervariasi dengan file ARPA ukuran yang berbeda dan GPU yang berbeda
Untuk membandingkan GLM dalam pengaturan batch, lakukan:
cd path_to_glm/release_build/bin
./batch_query_v2 path_to_binary_lm path_to_text_file [gpuDeviceID] [add_begin_end_markers] Ini akan menghitung kebingungan file teks. Jika GPUDEVICEID diatur, itu akan memberi tahu bagian GPU dari kode yang akan dieksekusi pada GPU tertentu. Anda dapat memeriksa GPU yang tersedia pada sistem menggunakan perintah nvidia_smi . 0 adalah default yang aman untuk dimiliki jika Anda ingin mengaturnya. Jika add_begin_end_markers diatur ke 0, awal kalimat dan akhir dari Token Kalimat (<s> dan </s>) tidak akan mengelilingi setiap kalimat.
Jadi ... semuanya mulai berjalan dengan benar. Benchmark A (pendahuluan) terhadap Kenlm Probing Berulir tunggal (Titan X vs Core i7 4720hq)
| LM | permintaan ngram per detik | info model |
|---|---|---|
| Kenlm | 10 274 237 | 3.3G, 88720517 Ngrams |
| Glm | 65 459 102 | 3.3G, 88720517 Ngrams |
Benchmark multithreaded, GPU yang sama dengan 2x Intel (R) Xeon (R) CPU E5-2680 0 @ 2.70GHz
| LM | permintaan ngram per detik | info model |
|---|---|---|
| Kenlm 1 Thread | 8 310 761 | 3.3G, 88720517 Ngrams |
| Kenlm 2 Thread | 15 823 376 | 3.3G, 88720517 Ngrams |
| Kenlm 4 Thread | 27 201 337 | 3.3G, 88720517 Ngrams |
| Kenlm 8 Thread | 43 336 444 | 3.3G, 88720517 Ngrams |
| Kenlm 16 Thread | 49 218 076 | 3.3G, 88720517 Ngrams |
| Kenlm 32 Thread | 119 539 677 | 3.3G, 88720517 Ngrams |
| Glm | 65 459 102 | 3.3G, 88720517 Ngrams |
Penjadwalan masalah kemungkinan menyebabkan kinerja rendah pada 16 case utas. GLM mencapai 2 kali kinerja yang lebih baik relatif terhadap biaya perangkat keras. ($ 1000 untuk GPU vs $ 3500 untuk CPU)