end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

llama-cpp-python & Llama2 7B/70B を windows 11 & gpu から日本語でお試し

上記 2つのentry の続きとして、 llama-cpp-python & Llama2 7B/70B を windows 11 & gpu から日本語で 試しています。

使用した python scriptと、その実行結果は以下の通りで、

  • Llama2 70B は回答までの時間を要する割に
  • Llama2 7Bも 70Bも、正解率はまぁまぁ(全くNGではない)で、同等
  • 現時点であれば、Llama2 7B を使うかな?

といった印象です。

python script

#!python
# -*- coding: utf-8 -*-
from llama_cpp import Llama

llama2_models = [
    {"name":"llama-2-7b-chat.ggmlv3.q4_K_M.bin",  "n_gqa":1},
    {"name":"llama-2-70b-chat.ggmlv3.q4_K_M.bin", "n_gqa":8} ]

questions = ["富士山の高さは?",
             "日本の首相は?",
             "山手線1周の距離は?"]

prompt_tmpl = """### Instruction: %s
### Response:"""

def main():

    for llama2_model in llama2_models:
        
        llm = Llama( model_path="./llama_model/"+llama2_model["name"],
                     n_gqa=llama2_model["n_gqa"] )

        for question in questions:
            prompt = prompt_tmpl % (question)
            print( prompt )
            
            # 推論実行
            output = llm( prompt,
                          temperature=0.1,
                          stop=["Instruction:", "Input:", "Response:", "\n"],
                          echo=True )
            print(output["choices"][0]["text"])

if __name__ == '__main__':
    main()

実行結果 - Llama2 7B

ggml_init_cublas: found 1 CUDA devices:
  Device 0: NVIDIA GeForce RTX 4090, compute capability 8.9
llama.cpp: loading model from ./llama_model/llama-2-7b-chat.ggmlv3.q4_K_M.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     = 4096
llama_model_load_internal: n_mult     = 256
llama_model_load_internal: n_head     = 32
llama_model_load_internal: n_head_kv  = 32
llama_model_load_internal: n_layer    = 32
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       = 11008
llama_model_load_internal: freq_base  = 10000.0
llama_model_load_internal: freq_scale = 1
llama_model_load_internal: ftype      = 15 (mostly Q4_K - Medium)
llama_model_load_internal: model size = 7B
llama_model_load_internal: ggml ctx size =    0.08 MB
llama_model_load_internal: using CUDA for GPU acceleration
llama_model_load_internal: mem required  = 4193.33 MB (+  256.00 MB per state)
llama_model_load_internal: offloading 0 repeating layers to GPU
llama_model_load_internal: offloaded 0/35 layers to GPU
llama_model_load_internal: total VRAM used: 288 MB
llama_new_context_with_model: kv self size  =  256.00 MB
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 |
### Instruction: 富士山の高さは?
### Response:

llama_print_timings:        load time =  1439.23 ms
llama_print_timings:      sample time =    30.02 ms /    26 runs   (    1.15 ms per token,   865.97 tokens per second)
llama_print_timings: prompt eval time =  1439.19 ms /    19 tokens (   75.75 ms per token,    13.20 tokens per second)
llama_print_timings:        eval time =  4320.29 ms /    25 runs   (  172.81 ms per token,     5.79 tokens per second)
llama_print_timings:       total time =  5842.54 ms
### Instruction: 富士山の高さは?
### Response: 富士山の高さは、標高3,776メートルです。
### Instruction: 日本の首相は?
### Response:
Llama.generate: prefix-match hit

llama_print_timings:        load time =  1439.23 ms
llama_print_timings:      sample time =    48.95 ms /    23 runs   (    2.13 ms per token,   469.87 tokens per second)
llama_print_timings: prompt eval time =  1767.30 ms /    12 tokens (  147.28 ms per token,     6.79 tokens per second)
llama_print_timings:        eval time =  5188.66 ms /    22 runs   (  235.85 ms per token,     4.24 tokens per second)
llama_print_timings:       total time =  7136.22 ms
### Instruction: 日本の首相は?
### Response: 日本の現在の首相は、安倍晋三です。
### Instruction: 山手線1周の距離は?
### Response:
Llama.generate: prefix-match hit

llama_print_timings:        load time =  1439.23 ms
llama_print_timings:      sample time =    59.83 ms /    29 runs   (    2.06 ms per token,   484.72 tokens per second)
llama_print_timings: prompt eval time =  2640.26 ms /    19 tokens (  138.96 ms per token,     7.20 tokens per second)
llama_print_timings:        eval time =  6515.77 ms /    28 runs   (  232.71 ms per token,     4.30 tokens per second)
llama_print_timings:       total time =  9383.92 ms
### Instruction: 山手線1周の距離は?
### Response: The distance around the Yamanote Line in one circuit is approximately 108.6 kilometers (67.5 miles).

実行結果 - Llama2 70B

llama.cpp: loading model from ./llama_model/llama-2-70b-chat.ggmlv3.q4_K_M.bin
llama_model_load_internal: warning: assuming 70B model based on GQA == 8
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     = 8192
llama_model_load_internal: n_mult     = 4096
llama_model_load_internal: n_head     = 64
llama_model_load_internal: n_head_kv  = 8
llama_model_load_internal: n_layer    = 80
llama_model_load_internal: n_rot      = 128
llama_model_load_internal: n_gqa      = 8
llama_model_load_internal: rnorm_eps  = 5.0e-06
llama_model_load_internal: n_ff       = 28672
llama_model_load_internal: freq_base  = 10000.0
llama_model_load_internal: freq_scale = 1
llama_model_load_internal: ftype      = 15 (mostly Q4_K - Medium)
llama_model_load_internal: model size = 70B
llama_model_load_internal: ggml ctx size =    0.21 MB
llama_model_load_internal: using CUDA for GPU acceleration
llama_model_load_internal: mem required  = 40028.46 MB (+  160.00 MB per state)
llama_model_load_internal: offloading 0 repeating layers to GPU
llama_model_load_internal: offloaded 0/83 layers to GPU
llama_model_load_internal: total VRAM used: 704 MB
llama_new_context_with_model: kv self size  =  160.00 MB
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 |
### Instruction: 富士山の高さは?
### Response:

llama_print_timings:        load time = 31549.46 ms
llama_print_timings:      sample time =    40.00 ms /    21 runs   (    1.90 ms per token,   524.99 tokens per second)
llama_print_timings: prompt eval time = 31549.41 ms /    19 tokens ( 1660.50 ms per token,     0.60 tokens per second)
llama_print_timings:        eval time = 42422.84 ms /    20 runs   ( 2121.14 ms per token,     0.47 tokens per second)
llama_print_timings:       total time = 74083.31 ms
### Instruction: 富士山の高さは?
### Response:  富士山の高さは3,776メートルです。
### Instruction: 日本の首相は?
### Response:
Llama.generate: prefix-match hit

llama_print_timings:        load time = 31549.46 ms
llama_print_timings:      sample time =     1.90 ms /     1 runs   (    1.90 ms per token,   526.87 tokens per second)
llama_print_timings: prompt eval time = 16564.29 ms /    12 tokens ( 1380.36 ms per token,     0.72 tokens per second)
llama_print_timings:        eval time =     0.00 ms /     1 runs   (    0.00 ms per token,      inf tokens per second)
llama_print_timings:       total time = 16568.69 ms
### Instruction: 日本の首相は?
### Response:
### Instruction: 山手線1周の距離は?
### Response:
Llama.generate: prefix-match hit

llama_print_timings:        load time = 31549.46 ms
llama_print_timings:      sample time =    51.05 ms /    26 runs   (    1.96 ms per token,   509.28 tokens per second)
llama_print_timings: prompt eval time = 26497.14 ms /    19 tokens ( 1394.59 ms per token,     0.72 tokens per second)
llama_print_timings:        eval time = 52091.80 ms /    25 runs   ( 2083.67 ms per token,     0.48 tokens per second)
llama_print_timings:       total time = 78729.78 ms
### Instruction: 山手線1周の距離は?
### Response: 山手線1周の距離は約34.5kmです。