2023年8月17日木曜日

llama.cppでLLMの学習をさせる

 おじさんが花火の場所取りをしている間に、ものすごい勢いでLLMの技術が進歩している。

最近LLMはCPUだけで0からスクラッチで学習させるのが目標らしい。




15Mに満たない言語モデルで小さな物語を紡ぐ

https://note.com/bakushu/n/nd834ff25394f


baby-llama

https://github.com/ggerganov/llama.cpp/pull/1360


llama.cpp でフルの学習メモ

https://zenn.dev/syoyo/articles/e9eb5211bb4e8b


llama.cpp

https://github.com/ggerganov/llama.cpp



へーーーーーーー。

LLMってまず計算するフレームワークが正しく実装されているか確かめるために、まずsin関数を学習させるのね。

そして実装ができたら、英語のシェイクスピアの文章を学習させるのね。

最後に超巨大データで学習させるのね。

日本語の場合、構文解析のわかちがきのところの高性能かつシンプルな実装のライブラリがないのね。


とっても勉強になる。

こんなに簡単にLLMの学習ってできるのね。

LLM最初のころは原子力発電所一基分くらいの電力と金が要ると言われていたのに・・・。


まぁ今日は初回なのでbaby-llamaをビルドして、サイン波を学習させてみました。



----------------------------------

init model

init_kv_cache

Example 1

error_before_opt: 506.75

error_after_opt:  128.53

best samples after optimization:

       X

      X

       X

       X

       X

       X

     X

    X

Example 9

error_before_opt: 132.24

error_after_opt:  101.97

Example 17

error_before_opt: 104.96

error_after_opt:  62.03

Example 25

error_before_opt: 134.28

error_after_opt:  58.35

Example 33

error_before_opt: 115.25

error_after_opt:  64.25

Example 41

error_before_opt: 125.32

error_after_opt:  62.99

Example 49

error_before_opt: 96.77

error_after_opt:  57.14

Example 57

error_before_opt: 98.44

error_after_opt:  58.38

Example 65

error_before_opt: 136.89

error_after_opt:  71.56

best samples after optimization:

       X

       X

       X

     X

    X

   X

 X

 X

Example 73

error_before_opt: 104.19

error_after_opt:  65.09

Example 81

error_before_opt: 103.45

error_after_opt:  57.70

Example 89

error_before_opt: 107.56

error_after_opt:  57.80

Example 97

error_before_opt: 97.15

error_after_opt:  65.41

Example 105

error_before_opt: 107.30

error_after_opt:  67.93

Example 113

error_before_opt: 114.04

error_after_opt:  75.12

Example 121

error_before_opt: 115.25

error_after_opt:  71.37

Example 129

error_before_opt: 104.39

error_after_opt:  71.55

best samples after optimization:

  X

    X

   X

  X

 X

 X

 X

  X

Example 137

error_before_opt: 99.17

error_after_opt:  75.65

Example 145

error_before_opt: 100.43

error_after_opt:  68.08

Example 153

error_before_opt: 98.71

error_after_opt:  71.94

Example 161

error_before_opt: 103.10

error_after_opt:  68.90

Example 169

error_before_opt: 117.62

error_after_opt:  70.84

Example 177

error_before_opt: 79.23

error_after_opt:  63.81

Example 185

error_before_opt: 101.08

error_after_opt:  70.64

Example 193

error_before_opt: 98.38

error_after_opt:  67.66

best samples after optimization:

 X

 X

 X

 X

  X

   X

    X

     X

Example 201

error_before_opt: 102.50

error_after_opt:  80.97

Example 209

error_before_opt: 118.92

error_after_opt:  80.08

Example 217

error_before_opt: 91.98

error_after_opt:  71.79

Example 225

error_before_opt: 103.32

error_after_opt:  80.62

Example 233

error_before_opt: 99.25

error_after_opt:  81.21

Example 241

error_before_opt: 94.08

error_after_opt:  68.46

Example 249

error_before_opt: 102.03

error_after_opt:  71.46

Generating 128 tokens.

X

 X

  X

    X

     X

      X

       X

       X

       X

      X

     X

    X

   X

  X

 X

 X

 X

 X

  X

   X

     X

      X

       X

       X

       X

       X

      X

     X

    X

   X

  X

 X

 X

 X

 X

  X

   X

     X

      X

       X

       X

       X

       X

      X

     X

    X

   X

  X

 X

 X

 X

 X

  X

   X

     X

      X

       X

       X

       X

       X

      X

     X

    X

   X

  X

 X

 X

 X

 X

  X

   X

     X

      X

       X

       X

       X

       X

      X

     X

    X

   X

  X

 X

 X

 X

 X

  X

   X

     X

      X

       X

       X

       X

       X

      X

     X

    X

   X

  X

 X

 X

 X

 X

  X

   X

     X

      X

       X

       X

       X

       X

      X

     X

    X

   X

  X

 X

 X

 X

 X

  X

   X

     X

      X

       X

       X

       X

       X

      X

     X

    X

   X

  X

 X

 0.04 0.20 -1.42 -0.04 -0.93 3.49 -1.37 0.02 0.32 -3.07 -0.33 0.68 0.86 -1.37 1.00 -1.12 -0.16 1.14 0.16 -0.07 1.54 -0.90 0.17 0.99 2.63 0.24 -0.10 0.87 -0.17 -0.39 -1.45 -2.40

 0.44 0.45 -0.08 0.06 -0.70 1.09 -0.72 2.58 1.13 -0.41 0.45 0.01 -0.30 -0.53 -0.18 2.71 -0.81 0.08 0.33 0.54 1.85 -0.35 0.91 2.00 0.56 0.42 -0.10 0.50 -0.54 1.89 -3.25 -1.20

 -0.09 -0.03 0.15 -0.04 0.23 4.76 -0.08 0.29 -0.12 0.11 -0.20 0.00 0.06 -0.05 -0.03 -0.38 0.20 0.23 -0.06 -0.04 0.18 0.11 -0.06 0.13 0.28 -0.11 -0.00 -0.02 -0.07 0.61 -0.77 -1.70

 1.43 1.26 0.28 0.65 -1.15 2.28 1.23 0.26 1.87 -1.88 0.98 0.43 0.15 0.07 0.12 0.64 -1.33 -2.07 0.10 0.50 -1.24 -0.33 0.05 -1.34 -0.83 0.77 -0.03 1.07 0.31 -0.97 -0.10 -3.70

 0.35 -2.55 1.76 -1.51 0.73 1.24 -0.75 2.51 2.16 -0.23 -0.74 -1.53 0.65 1.19 0.69 -2.06 -0.97 0.32 -0.21 -1.94 2.18 0.16 -1.29 -1.29 2.12 -0.55 -1.55 -0.85 1.21 -1.00 -0.50 -1.79

 -0.94 1.05 -0.23 1.87 0.34 0.84 -2.52 -0.24 0.95 -1.08 1.97 1.85 0.76 -1.72 -0.55 -1.35 -0.68 -0.01 -1.59 1.92 1.96 -0.64 -3.58 -0.59 -0.47 0.13 -0.56 0.46 -2.63 -1.47 -0.40 -0.49

 1.42 0.31 0.21 -0.02 -0.55 1.23 -1.93 -1.36 1.42 -0.78 -1.91 -0.05 0.74 -1.48 -0.33 -1.24 -0.83 3.10 0.47 -0.50 -0.57 0.01 -0.32 -0.37 -1.56 -0.51 0.17 0.84 1.09 0.35 -0.33 -1.73

 0.97 0.74 -0.66 0.93 -0.24 1.83 1.27 -0.00 0.72 -1.95 0.02 -0.16 0.97 0.46 0.61 2.08 0.66 2.54 -0.37 0.40 1.40 0.45 0.03 0.61 -0.47 -0.34 -0.11 0.62 -0.50 -4.70 0.28 0.21

done


----------------------------------

できた。