おじさんが花火の場所取りをしている間に、ものすごい勢いで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
----------------------------------
できた。