gLM
1.0.0
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 -O0と-Gでビルドします-DCOMPUTE_VERハードウェアの計算バージョンを設定します。デフォルトは52です。間違った計算バージョンでコンパイルされている場合、正しいスコアは生成されません!!!ここでGPUのコンピューティートバージョンを確認してください。 make test GPUテストのいずれにも失敗しない場合、それはあなたの計算バージョンが正しいことを意味します。-DBAD_HOSTこれは、12.04や14.04などの古いUbuntuシステムに構築するのに役立つはずです。構築に問題がない限り、使用しないでください。-DPYTHON_INCLUDE_DIR /usr/include/python2.7/pyconfig.h include /usr/include/python3.6m/pyconfigなどのpythonライブラリへのパスを定義します。-DPYTHON_VERは、別のバージョンでpythonコンポーネントを構築する場合は、デフォルトに設定されます。 -DPYTHON_INCLUDE_DIRが設定されない限り、それは効果がありません。--DYAMLCPP_DIR 、yaml-cppが非標準の場所にある場合はseでなければなりません(標準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ファイルと異なる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クエリあたりのクエリ | モデル情報 |
|---|---|---|
| ケンルム | 10 274 237 | 3.3g、88720517 ngrams |
| GLM | 65 459 102 | 3.3g、88720517 ngrams |
マルチスレッドベンチマーク、2x Intel(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ドル)