前記事:
後記事:
前書き
前記事において、P40を買い増して機械学習用マシンをマルチGPUにした。
しかし、普通のRyzenで構成していたがために、PCIeの帯域が足りず片方のGPUがx4接続になってしまっていたのが若干心残りとなっていた。
そこで、EPYCとSupermicroのマザーを中古で買ってみたという話。
まともな帯域とセッティングで2GPUを接続してベンチを取ってみたところ、そこそこマルチGPUの良さが見えてきたので本記事に記しておく。
まとめ
- 今回購入したのは1ソケット用32Coreの初代Zen 7551Pと対応マザーSupermicro H11SSL-i、そして8x32GBのECC REGメモリのセット。
- ebayでtugm4470という出品者から$653.60で購入できました。32コアCPU、マザー、メモリ256GBでも10万切るのは素晴らしい。もう少し円高ならなお良かったのだが……。
- 本当はZen2にしたかったが、コアあたりの単価が倍くらいしたので今回はコスト重視で初代Zenを選択
- 本題からずれるが、最近異常に中国からの物流が速く驚かされる。前回の2枚目のP40も5日くらいで届いたのだが、今回の商品も注文してから4日程度で届いてびっくりした。
本記事の主題である、安価な機械学習用マシンに対する回答としてコストを書いておくと、2xP40, 32core 7551P, 256GB RAMというかなりリッチなマシンではあるものの、電源やSSD代含めてでも18万円程度でこのマシンは組めるはず。
H11SSL-iのようなサーバーマザーでメモリが一部認識されないような場合、PCケースのスペーサー(マウントネジ)の位置を確認すること。通常のATXマザーとネジ止めの位置が異なる場合があり、基板裏の端子がスペーサーによってショートしている可能性がある。
- 原因が分からず小1時間格闘していたとき、Redditでそのものずばりのスレッドがあり解決。まじで助かった。
- マザーのサイズを変えたときにスペーサーの位置を変え忘れるとかで通常の自作用マザーでも稀にこういうことはあるので注意。
平積みマシンにはサーバー用マシン、というかSupermicro製マザーがとても便利なことが判明。
- ASPEEDのグラフィック出力がついており余計に画面出力用GPUをセットアップ時に付ける必要がない
- なによりSupermicroのIPMIという管理機能が使えるためブラウザからマシンの起動停止、温度センサー情報の確認、リモートコンソール経由でブラウザ上でもBIOS設定やUbuntuのデスクトップの表示ができ、半端なく便利。
- トラブルシューティング時モバイルモニターをいちいち接続する手間がなくなるので最高。
前回記事においては、片方のGPUのみECC機能が有効になっており、利用可能なVRAM量が少なく性能にも影響があったことが判明。ECC機能をオフにしてまともなマルチGPUのベンチを取り直した。
前回と同様、GPT2トレーニングとllama.cppでマルチVSシングルのGPU性能比較を実施。十分GPUを2枚にした効果が見られたと思う。
外観など
こんな箱で届きました。中にはEPYCがセットされたマザーと、個々にブリスターパックされたDDR4メモリが8枚入っていました。
中身というと、緑色の無骨なPCB基板にたくさんのDIMM、PCIeスロットが並び余すことなくチップと配線が敷き詰められたマザー、SP3ソケットに収められたヒートスプレッダ上に踊る輝かしきEPYCの文字、両面いっぱいに2列でDRAMチップが取り付けられた32GBのECC REG DIMMモジュールと、自作趣味の心が踊らずにはいられないセットである。
これにメルカリで中古で入手した適当な240mmのCPUクーラーを取り付け、適当にATX電源を接続することで普通の自作PCと同じく起動可能な状態となります。
一点普通の自作PCと異なるのは、マザーに管理用チップ(BMC)が別付けで取り付けられているため、マシンを起動せずとも様々な操作をLAN経由で実施可能なこと。これの素晴らしさはセットアップの項にて後述します。
元々EPYCをいつか自宅で動かしたいという憧れを持っていたので、大人になってようやくその願望が叶えられた形である。海外通販で中古商品を買うのに10万近い金額を出すのはだいぶ躊躇いがありましたが、学生の時からの夢ですし財布の紐が多少緩むのは仕方ないと度重なる出費に理由をつけて買ってしまいました。
セットアップ
とても便利なIPMI
このマザーではIPMIを利用することで、全くディスプレイを繋ぐことなくBIOSをいじったりOSインストールをすることが可能です!
厳密に言えば最初のIPMIのIPアドレスだけはDHCPで払い出されたものを予想して当てるか、一旦ディスプレイに繋いでPOST画面右下で確認するか、同じくディスプレイに一旦繋いでBIOS設定で静的IPアドレスを与える必要がありますが、一回IPMIにアクセスできてしまえば次のような管理画面で様々な操作が可能です。
ちなみに、IPMIログインのための初期ユーザーはADMIN
で、パスワードはマザーボード上のシールに印字されたPWD
の文字列となります。
本マシンのように基本ディスプレイを繋がずリモートで使うマシンにおいて、初期設定やトラブルシューティングのためにいちいちKVMを物理で繋いで対応するのは非常に面倒であるが、IPMIがあればLANケーブルだけ繋げば後はいつものPCのブラウザからほぼすべての作業が行えるので大変便利です。
今回はこのIPMIのバーチャルKVM機能を使ってUbuntuのインストールや静的IPアドレス設定まで実施して、残りはSSH接続でCUDAやPython関連のセットアップを実施することができました。
ちなみにCUDAのセットアップは特にマルチGPUだから何か違うということはなく、普通にNVIDIAの公式サイト通りに実施して問題なくできました。
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
DRAMが1枚認識されないトラブル
また、しばらく何故かメモリが1枚認識されず、計224GBとして認識される問題に小一時間悩まされました。
何度DRAMを入れ替え刺し直しても状況は変わらずマザーの故障を疑い始めた頃、Redditでドンピシャなスレッドを発見。どうやらPCケースのマザーボードマウント用の突起がマザー裏の端子と接触することでこういう症状が起こることがあるという内容。
https://www.reddit.com/r/homelab/comments/zi0xph/epyc_not_detecting_all_ram/
自分の環境でも正しく同じ状況となっており、8つ目のDIMMスロット裏に接触していたマウント用ネジを外したところ問題なく8枚のメモリが認識され、計256GBとしてBIOSからもOSからも見えるようになりました!マジでRedditには感謝です。
GPUのECC機能が片方だけオンになっていた件
前回の記事で気づいていなかったのですが、nvidia-smiの結果でみると2枚のP40のVRAM量が異なるように表示されていたようである。
ubuntu@ubuntu-Super-Server:~$ nvidia-smi Fri Aug 11 15:37:26 2023 +---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.86.10 Driver Version: 535.86.10 CUDA Version: 12.2 | |-----------------------------------------+----------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+======================+======================| | 0 Tesla P40 On | 00000000:06:00.0 Off | Off | | N/A 28C P8 10W / 250W | 4MiB / 24576MiB | 0% Default | | | | N/A | +-----------------------------------------+----------------------+----------------------+ | 1 Tesla P40 On | 00000000:21:00.0 Off | 0 | | N/A 28C P8 9W / 250W | 4MiB / 23040MiB | 0% Default | | | | N/A | +-----------------------------------------+----------------------+----------------------+
GPU毎のnvidia-smi -a
の結果をdiffしてみると、あとから買った方のP40のみECC Modeが有効になっていることが判明。
天下り的に考えてみると、23040MB/24576MB=0.9375=15/16
なので、16bitのうち1bitをパリティビットとして利用しているのだと思われる。
また、nvidia-smiでnvidia-smi -g GPU番号 --ecc-config=0/1
とすることで、ecc機能の有効無効を切り替えることができると判明(再起動が必要)。
https://thelinuxcluster.com/2013/07/24/turning-off-and-on-ecc-ram-for-nvidia-gp-gpu-cards/
ということで、#1 GPUのecc機能をオフにしてみると、ちゃんとVRAM量が同じになりました!
ubuntu@ubuntu-Super-Server:~$ nvidia-smi Sat Aug 12 13:10:17 2023 +---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.86.10 Driver Version: 535.86.10 CUDA Version: 12.2 | |-----------------------------------------+----------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+======================+======================| | 0 Tesla P40 On | 00000000:06:00.0 Off | Off | | N/A 24C P8 9W / 250W | 4MiB / 24576MiB | 0% Default | | | | N/A | +-----------------------------------------+----------------------+----------------------+ | 1 Tesla P40 On | 00000000:21:00.0 Off | Off | | N/A 23C P8 9W / 250W | 4MiB / 24576MiB | 0% Default | | | | N/A | +-----------------------------------------+----------------------+----------------------+
後ほど言及しますが、ECC機能がオンになっていると性能が約1割ほど下がる模様。前回測定したときには片方がECCオン、もう片方がオフになっているアンバランスな状態で、マルチGPUでの性能測定時にも当然遅い方に結果が引っ張られますので、前記事の結果は参考程度にみていただければと思います(その旨すでに記事に反映済みです)。
今回のマルチGPUの性能測定は、ちゃんと両GPUともECCをオフにして実行しました。
Transformers公式のDDPチュートリアル
前回同様、次のページのDDPを利用したGPT2トレーニングのサンプルを利用して、トレーニングにかかる時間とtrain_samples_per_second
の値を比較。詳細なセットアップに関しては前記事参照。
https://huggingface.co/docs/transformers/perf_train_gpu_many
- | 2GPU | 1GPU(w/o ECC) | 1GPU(w ECC) |
---|---|---|---|
Training Time(s) | 186 | 175 | 195 |
train_samples_per_second | 8.6 | 4.57 | 4.097 |
結果、Training TimeはマルチGPUでは改善しないものの、train_samples_per_second
は1GPUのときより1.9倍近い値となっていた。前回同様予測の域を出ないが、やはりGPU間におけるGradientsの値の共有に余計な時間がかかっているせいでTraining時間が改善しないのであろうか。
マルチGPUでモデルトレーニングを高速化するのは今後の宿題としたい。あまり詳しくないが、ZeROのような別の分散学習方法を採用したり、DeepSpeedのようなライブラリの使用でなんとかなる気もする。
また、先程言及したように、ECCを有効化した状態でのシングルGPUの性能もみてみる。すると、演算性能も1割程度低いことが判明。特にECC機能が必要ない場合はオフにするのが良さそう。
マルチGPU
NCCL_P2P_DISABLE=1 CUDA_VISIBLE_DEVICES=0,1 torchrun --nproc_per_node 2 examples/pytorch/language-modeling/run_clm.py --model_name_or_path gpt2 --dataset_name wikitext --dataset_config_name wikitext-2-raw-v1 --do_train --output_dir ~/tmp/test-clm --per_device_train_batch_size 4 --max_steps 200 ***** train metrics ***** epoch = 0.69 train_loss = 3.279 train_runtime = 0:03:06.03 train_samples = 2318 train_samples_per_second = 8.6 train_steps_per_second = 1.075
シングルGPU(w/o ECC)
NCCL_P2P_DISABLE=1 CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node 1 examples/pytorch/language-modeling/run_clm.py --model_name_or_path gpt2 --dataset_name wikitext --dataset_config_name wikitext-2-raw-v1 --do_train --output_dir ~/tmp/test-clm --per_device_train_batch_size 4 --max_steps 200 ***** train metrics ***** epoch = 0.34 train_loss = 3.3276 train_runtime = 0:02:54.99 train_samples = 2318 train_samples_per_second = 4.571 train_steps_per_second = 1.143
シングルGPU(w/ ECC)
CUDA_VISIBLE_DEVICES=1 torchrun --nproc_per_node 1 examples/pytorch/language-modeling/run_clm.py --model_name_or_path gpt2 --dataset_name wikitext --dataset_config_name wikitext-2-raw-v1 --do_train --output_dir ~/tmp/test-clm --per_device_train_batch_size 4 --max_steps 200 ***** train metrics ***** epoch = 0.34 train_loss = 3.3276 train_runtime = 0:03:15.25 train_samples = 2318 train_samples_per_second = 4.097 train_steps_per_second = 1.024
llama.cpp でマルチGPUとシングルGPUを比較する
前回同様、CUBLASを有効化してllama.cppをコンパイルし、8bit量子化されたLLaMa2 13b(llama-2-13b-chat.ggmlv3.q8_0.bin
)のモデルをCPUのみ、GPU1枚、GPU2枚で動作させたときのトークン生成速度(eval time)を比較しました。
CPUのみにするときは-ngl
の値を0とし、GPU枚数のコントロールはコマンド実行時のCUDA_VISIBLE_DEVICES
へ渡す値を変えることで行います。
ついでにCPUの性能も比較したいので、前回測定したCPU(5900X)の結果も併記します。
CPU(5900X) | CPU(7551P) | 2GPU | 1GPU(w/o ECC) | 1GPU(w ECC) |
---|---|---|---|---|
2.76 | 1.24 | 8.51 | 7.01 | 6.68 |
結果、マルチGPUのほうが1.2倍くらい1GPUよりも速く推論できるとの結果に。
また、やはりGPUのECCを有効化すると若干性能が下がるというのはllama.cppにおいても同様の結果が得られた。
CPUに関してはコア数が増えた上(12コア→32コア)、メモリチャネルも8チャネルとなり帯域が増したはず(3200MHz * 2 channel * 8B = 51.2GB/s → 2133MHz * 8 channel * 8B = 136.5GB/s)であるが、やはり世代の差は埋められないのか、あまりマルチコアの性能をllama.cppが出し切れないのか、残念ながら7551Pでは5900Xの半分以下のトークン生成速度しか出ない結果となった。
マルチGPU
(llama2) ubuntu@ubuntu-Super-Server:~/Documents/llama.cpp$ ./build/bin/main -m ./models/llama-2-13b-chat.ggmlv3.q8_0.bin --temp 0.1 -p "### Instruction: Create poetry about Mount Fuji in 200 words ### Response:" -ngl 40 -b 512 main: build = 975 (9ca4abe) main: seed = 1691814871 ggml_init_cublas: found 2 CUDA devices: Device 0: Tesla P40, compute capability 6.1 Device 1: Tesla P40, compute capability 6.1 llama.cpp: loading model from ./models/llama-2-13b-chat.ggmlv3.q8_0.bin llama_model_load_internal: format = ggjt v3 (latest) llama_model_load_internal: n_vocab = 32000 llama_model_load_internal: n_ctx = 512 llama_model_load_internal: n_embd = 5120 llama_model_load_internal: n_mult = 256 llama_model_load_internal: n_head = 40 llama_model_load_internal: n_head_kv = 40 llama_model_load_internal: n_layer = 40 llama_model_load_internal: n_rot = 128 llama_model_load_internal: n_gqa = 1 llama_model_load_internal: rnorm_eps = 5.0e-06 llama_model_load_internal: n_ff = 13824 llama_model_load_internal: freq_base = 10000.0 llama_model_load_internal: freq_scale = 1 llama_model_load_internal: ftype = 7 (mostly Q8_0) llama_model_load_internal: model size = 13B llama_model_load_internal: ggml ctx size = 0.11 MB llama_model_load_internal: using CUDA for GPU acceleration ggml_cuda_set_main_device: using device 0 (Tesla P40) as main device llama_model_load_internal: mem required = 698.16 MB (+ 400.00 MB per state) llama_model_load_internal: allocating batch_size x (640 kB + n_ctx x 160 B) = 360 MB VRAM for the scratch buffer llama_model_load_internal: offloading 40 repeating layers to GPU llama_model_load_internal: offloaded 40/43 layers to GPU llama_model_load_internal: total VRAM used: 13218 MB llama_new_context_with_model: kv self size = 400.00 MB system_info: n_threads = 32 / 64 | AVX = 1 | AVX2 = 1 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | VSX = 0 | sampling: repeat_last_n = 64, repeat_penalty = 1.100000, presence_penalty = 0.000000, frequency_penalty = 0.000000, top_k = 40, tfs_z = 1.000000, top_p = 0.950000, typical_p = 1.000000, temp = 0.100000, mirostat = 0, mirostat_lr = 0.100000, mirostat_ent = 5.000000 generate: n_ctx = 512, n_batch = 512, n_predict = -1, n_keep = 0 ### Instruction: Create poetry about Mount Fuji in 200 words ### Response: Mount Fuji, a majestic sight A symbol of Japan, pure and bright Its snow-capped peak, a beacon of light Against the blue sky, a wondrous sight In spring, cherry blossoms bloom Around its base, a colorful boom Summer brings green forests alive Autumn paints the mountain with gold and red Winter's snow, a serene delight Mount Fuji, a constant presence A source of inspiration, a sacred presence Its beauty, a reflection of the divine A reminder of nature's splendor and design [end of text] llama_print_timings: load time = 2580.63 ms llama_print_timings: sample time = 157.57 ms / 142 runs ( 1.11 ms per token, 901.20 tokens per second) llama_print_timings: prompt eval time = 355.85 ms / 22 tokens ( 16.18 ms per token, 61.82 tokens per second) llama_print_timings: eval time = 16562.81 ms / 141 runs ( 117.47 ms per token, 8.51 tokens per second) llama_print_timings: total time = 17134.59 ms
シングルGPU(w/o ECC)
(llama2) ubuntu@ubuntu-Super-Server:~/Documents/llama.cpp$ CUDA_VISIBLE_DEVICES=0 ./build/bin/main -m ./models/llama-2-13b-chat.ggmlv3.q8_0.bin --temp 0.1 -p "### Instruction: Create poetry about Mount Fuji in 200 words ### Response:" -ngl 40 -b 512 main: build = 975 (9ca4abe) main: seed = 1691809687 ggml_init_cublas: found 1 CUDA devices: Device 0: Tesla P40, compute capability 6.1 llama.cpp: loading model from ./models/llama-2-13b-chat.ggmlv3.q8_0.bin llama_model_load_internal: format = ggjt v3 (latest) llama_model_load_internal: n_vocab = 32000 llama_model_load_internal: n_ctx = 512 llama_model_load_internal: n_embd = 5120 llama_model_load_internal: n_mult = 256 llama_model_load_internal: n_head = 40 llama_model_load_internal: n_head_kv = 40 llama_model_load_internal: n_layer = 40 llama_model_load_internal: n_rot = 128 llama_model_load_internal: n_gqa = 1 llama_model_load_internal: rnorm_eps = 5.0e-06 llama_model_load_internal: n_ff = 13824 llama_model_load_internal: freq_base = 10000.0 llama_model_load_internal: freq_scale = 1 llama_model_load_internal: ftype = 7 (mostly Q8_0) llama_model_load_internal: model size = 13B llama_model_load_internal: ggml ctx size = 0.11 MB llama_model_load_internal: using CUDA for GPU acceleration llama_model_load_internal: mem required = 698.16 MB (+ 400.00 MB per state) llama_model_load_internal: allocating batch_size x (640 kB + n_ctx x 160 B) = 360 MB VRAM for the scratch buffer llama_model_load_internal: offloading 40 repeating layers to GPU llama_model_load_internal: offloaded 40/43 layers to GPU llama_model_load_internal: total VRAM used: 13218 MB llama_new_context_with_model: kv self size = 400.00 MB system_info: n_threads = 32 / 64 | AVX = 1 | AVX2 = 1 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | VSX = 0 | sampling: repeat_last_n = 64, repeat_penalty = 1.100000, presence_penalty = 0.000000, frequency_penalty = 0.000000, top_k = 40, tfs_z = 1.000000, top_p = 0.950000, typical_p = 1.000000, temp = 0.100000, mirostat = 0, mirostat_lr = 0.100000, mirostat_ent = 5.000000 generate: n_ctx = 512, n_batch = 512, n_predict = -1, n_keep = 0 ### Instruction: Create poetry about Mount Fuji in 200 words ### Response: Majestic Mount Fuji, a snow-capped wonder, Rises high above the clouds and thunder. Its peak soars to the sky, serene and still, A symbol of strength, beauty, and will. In springtime, cherry blossoms bloom around, Painting the mountain with colors profound. Summer skies are bright and clear, Reflecting the mountain's grandeur here. Autumn leaves change to shades of gold, As nature's canvas, stories untold. Winter snows blanket the peak, A peaceful sight, a season to seek. Through every season, Mount Fuji stands, A constant presence, a sacred land. Its beauty inspires and humbles the soul, A source of wonder, a goal to strive for whole. [end of text] llama_print_timings: load time = 2654.84 ms llama_print_timings: sample time = 220.07 ms / 195 runs ( 1.13 ms per token, 886.08 tokens per second) llama_print_timings: prompt eval time = 540.22 ms / 22 tokens ( 24.56 ms per token, 40.72 tokens per second) llama_print_timings: eval time = 27682.73 ms / 194 runs ( 142.69 ms per token, 7.01 tokens per second) llama_print_timings: total time = 28521.56 ms
シングルGPU(w/ ECC)
(llama2) ubuntu@ubuntu-Super-Server:~/Documents/llama.cpp$ CUDA_VISIBLE_DEVICES=1 ./build/bin/main -m ./models/llama-2-13b-chat.ggmlv3.q8_0.bin --temp 0.1 -p "### Instruction: Create poetry about Mount Fuji in 200 words ### Response:" -ngl 40 -b 512 main: build = 975 (9ca4abe) main: seed = 1691810359 ggml_init_cublas: found 1 CUDA devices: Device 0: Tesla P40, compute capability 6.1 llama.cpp: loading model from ./models/llama-2-13b-chat.ggmlv3.q8_0.bin llama_model_load_internal: format = ggjt v3 (latest) llama_model_load_internal: n_vocab = 32000 llama_model_load_internal: n_ctx = 512 llama_model_load_internal: n_embd = 5120 llama_model_load_internal: n_mult = 256 llama_model_load_internal: n_head = 40 llama_model_load_internal: n_head_kv = 40 llama_model_load_internal: n_layer = 40 llama_model_load_internal: n_rot = 128 llama_model_load_internal: n_gqa = 1 llama_model_load_internal: rnorm_eps = 5.0e-06 llama_model_load_internal: n_ff = 13824 llama_model_load_internal: freq_base = 10000.0 llama_model_load_internal: freq_scale = 1 llama_model_load_internal: ftype = 7 (mostly Q8_0) llama_model_load_internal: model size = 13B llama_model_load_internal: ggml ctx size = 0.11 MB llama_model_load_internal: using CUDA for GPU acceleration llama_model_load_internal: mem required = 698.16 MB (+ 400.00 MB per state) llama_model_load_internal: allocating batch_size x (640 kB + n_ctx x 160 B) = 360 MB VRAM for the scratch buffer llama_model_load_internal: offloading 40 repeating layers to GPU llama_model_load_internal: offloaded 40/43 layers to GPU llama_model_load_internal: total VRAM used: 13218 MB llama_new_context_with_model: kv self size = 400.00 MB system_info: n_threads = 32 / 64 | AVX = 1 | AVX2 = 1 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | VSX = 0 | sampling: repeat_last_n = 64, repeat_penalty = 1.100000, presence_penalty = 0.000000, frequency_penalty = 0.000000, top_k = 40, tfs_z = 1.000000, top_p = 0.950000, typical_p = 1.000000, temp = 0.100000, mirostat = 0, mirostat_lr = 0.100000, mirostat_ent = 5.000000 generate: n_ctx = 512, n_batch = 512, n_predict = -1, n_keep = 0 ### Instruction: Create poetry about Mount Fuji in 200 words ### Response: Oh, majestic Mount Fuji, so serene and divine, Your snow-capped peak touches the sky, so fine. In the distance, a haze of blue, A gentle breeze rustles through. Your slopes are blanketed in green, A carpet of life, so serene. The trees stand tall and proud, Their leaves rustling, a gentle sound. In the shadow of your greatness, I am but a small part, A tiny speck in your grand design, Yet, I am filled with awe and wonder at your heart. Oh, Mount Fuji, you are a symbol of strength and grace, A beacon of hope, a source of light, In your presence, I find peace, And my spirit takes flight. [end of text] llama_print_timings: load time = 2480.95 ms llama_print_timings: sample time = 204.16 ms / 185 runs ( 1.10 ms per token, 906.13 tokens per second) llama_print_timings: prompt eval time = 605.07 ms / 22 tokens ( 27.50 ms per token, 36.36 tokens per second) llama_print_timings: eval time = 27541.31 ms / 184 runs ( 149.68 ms per token, 6.68 tokens per second) llama_print_timings: total time = 28424.62 ms
CPU(EPYC 7551P)
(llama2) ubuntu@ubuntu-Super-Server:~/Documents/llama.cpp$ ./build/bin/main -m ./models/llama-2-13b-chat.ggmlv3.q8_0.bin --temp 0.1 -p "### Instruction: Create poetry about Mount Fuji in 200 words ### Response:" -ngl 0 -b 512 main: build = 975 (9ca4abe) main: seed = 1691810099 ggml_init_cublas: found 2 CUDA devices: Device 0: Tesla P40, compute capability 6.1 Device 1: Tesla P40, compute capability 6.1 llama.cpp: loading model from ./models/llama-2-13b-chat.ggmlv3.q8_0.bin llama_model_load_internal: format = ggjt v3 (latest) llama_model_load_internal: n_vocab = 32000 llama_model_load_internal: n_ctx = 512 llama_model_load_internal: n_embd = 5120 llama_model_load_internal: n_mult = 256 llama_model_load_internal: n_head = 40 llama_model_load_internal: n_head_kv = 40 llama_model_load_internal: n_layer = 40 llama_model_load_internal: n_rot = 128 llama_model_load_internal: n_gqa = 1 llama_model_load_internal: rnorm_eps = 5.0e-06 llama_model_load_internal: n_ff = 13824 llama_model_load_internal: freq_base = 10000.0 llama_model_load_internal: freq_scale = 1 llama_model_load_internal: ftype = 7 (mostly Q8_0) llama_model_load_internal: model size = 13B llama_model_load_internal: ggml ctx size = 0.11 MB llama_model_load_internal: using CUDA for GPU acceleration ggml_cuda_set_main_device: using device 0 (Tesla P40) as main device llama_model_load_internal: mem required = 13555.97 MB (+ 400.00 MB per state) llama_model_load_internal: offloading 0 repeating layers to GPU llama_model_load_internal: offloaded 0/43 layers to GPU llama_model_load_internal: total VRAM used: 360 MB llama_new_context_with_model: kv self size = 400.00 MB system_info: n_threads = 32 / 64 | AVX = 1 | AVX2 = 1 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | VSX = 0 | sampling: repeat_last_n = 64, repeat_penalty = 1.100000, presence_penalty = 0.000000, frequency_penalty = 0.000000, top_k = 40, tfs_z = 1.000000, top_p = 0.950000, typical_p = 1.000000, temp = 0.100000, mirostat = 0, mirostat_lr = 0.100000, mirostat_ent = 5.000000 generate: n_ctx = 512, n_batch = 512, n_predict = -1, n_keep = 0 ### Instruction: Create poetry about Mount Fuji in 200 words ### Response: Mount Fuji, a majestic sight A symbol of Japan, pure and bright Snow-capped peak, serene and still A challenge to climb, but the view is thrilling In the distance, the sun sets low Painting the sky with hues of gold The mountain's shadow stretches far and wide As the stars begin to twinkle inside The mountain's beauty is a work of art A masterpiece that touches the heart A source of inspiration, a symbol of strength A reminder of nature's grand design In the silence, I find peace A sense of calm, a world to cease From the summit to the base Mount Fuji, a wonder of grace. [end of text] llama_print_timings: load time = 1813.56 ms llama_print_timings: sample time = 163.44 ms / 169 runs ( 0.97 ms per token, 1034.04 tokens per second) llama_print_timings: prompt eval time = 1460.09 ms / 22 tokens ( 66.37 ms per token, 15.07 tokens per second) llama_print_timings: eval time = 135809.05 ms / 168 runs ( 808.39 ms per token, 1.24 tokens per second) llama_print_timings: total time = 137504.02 ms