おじさん1日1AIをしています。
毎日AIの勉強を一つします。
毎日2、3時間くらいで、調べて、データ作成して、ビルドして、実験して、かなり大変。
誰かおじさんに働かなくて良いだけのお金くれないかなぁ。
そうしたらおじさんAIの研究をします。
最近LoRAで日本語にファインチューニングした言語モデルが増えてきました。
そのおかげで、おじさんのように、GPUなしのC++で大規模言語モデルの学習やファインチューニングをしようとしている人も増えてきました。
https://zenn.dev/syoyo/articles/946c17666e10fb
ついにおじさんのやり方がが主流になるときが。
でもおじさん夜な夜な適当に勉強しているので、みんなに先を越されている・・・。
なるほど、最近ファインチューニング関係の論文が凄いのね。
QLoRA
https://github.com/artidoro/qlora/tree/main
https://zenn.dev/syoyo/articles/6918defde8a807
QLoRAだと微分値を求めるところが少なくGPU一枚でファインチューニングできるらしい
Fine-Tuning Language Models with Just Forward Passes
https://github.com/princeton-nlp/MeZO
https://arxiv.org/abs/2305.17333
フォワードのみだからC++で簡単にファインチューニングできる?
上記のサイトによると昨日、日本語のRinnaのモデルがC++で動くようになったらしいので、さっそくおじさんもGPUなしPCでやってみました。
---------------------
redpajama.exe -m "C:\trash\pytorch\redpajama.cpp-master\examples\redpajama\scripts\output_dir\ggml-japanese-gpt-neox-3.6b-instruction-ppo-f16.bin" -p "こんにちは"
main: seed = 1685673288
gptneox.cpp: loading model from C:\trash\pytorch\redpajama.cpp-master\examples\redpajama\scripts\output_dir\ggml-japanese-gpt-neox-3.6b-instruction-ppo-f16.bin
gptneox.cpp: can't use mmap because tensors are not aligned; convert to new format to avoid this
gptneox_model_load_internal: format = ggmf v1 (old version with no mmap support)
gptneox_model_load_internal: n_vocab = 32000
gptneox_model_load_internal: n_ctx = 512
gptneox_model_load_internal: n_embd = 2816
gptneox_model_load_internal: n_head = 22
gptneox_model_load_internal: n_layer = 36
gptneox_model_load_internal: n_rot = 128
gptneox_model_load_internal: use_parallel_residual = 0
gptneox_model_load_internal: ftype = 1 (mostly F16)
gptneox_model_load_internal: n_parts = 1
gptneox_model_load_internal: model size = 12B
gptneox_model_load_internal: ggml ctx size = 7048095.00 KiB
gptneox_model_load_internal: mem required = 8930.91 MiB (+ 1608.00 MiB per state)
..................................................................................................
.
.
gptneox_init_from_file: kv self size = 198.00 MiB
system_info: n_threads = 4 / 4 | AVX = 0 | AVX2 = 0 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 0 | NEON = 0 | ARM_FMA = 0 | F16C = 0 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 0 | 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.800000, mirostat = 0, mirostat_lr = 0.100000, mirostat_ent = 5.000000
generate: n_ctx = 512, n_batch = 512, n_predict = 128, n_keep = 0
こんにちは。今日は曇りがちな天気でした。昨日は、家族とテニスをしたり、外でバーベキューをしたりしました。テニスはとても楽しかったです。また、海に行ったり、公園に行って散歩したりもしました。とてもリラックスできました。今日は、自宅でゆっくり過ごしています。ゲームやビデオを観たりして、楽しんでいます。明日は、家族と一緒にドライブに行く予定です。とても楽しみにしています。良い一日を過ごしてくださいね。
gptneox_print_timings: load time = 8633.80 ms
gptneox_print_timings: sample time = 127.78 ms / 128 runs ( 1.00 ms per run)
gptneox_print_timings: prompt eval time = 5968.87 ms / 4 tokens ( 1492.22 ms per token)
gptneox_print_timings: eval time = 197970.49 ms / 127 runs ( 1558.82 ms per run)
gptneox_print_timings: total time = 206822.82 ms
---------------------
なんというきれいな日本語