2023年5月31日水曜日

日本語の大規模言語モデルllamaを動かす。

 おじさん、日本語に対応しているLLMを動かしたくていろいろ調べてみました。

https://gigazine.net/news/20230403-llama-cpp-ram/

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

2023年2月にMetaが発表した大規模言語モデル「LLaMA」は、従来のGPT-3よりも小規模でありながらGPT-3に匹敵する性能を単体GPUの環境でも示すことが可能とされており、2023年3月にはエンジニアのジョージ・ゲルガノフ氏がM1などのsearch Apple シリコン搭載MacでLLaMAを動作させる「llama.cpp」を公開しました。そんな中、プログラマーのジャスティン・タニー氏がllama.cppが動作する際のメモリ使用量を減らすアップデートを行い、LLaMAの一部モデルに至っては6GB未満のRAMで動作することが報告されています。

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

なるほど、llama.cppを使えばその辺のスペックのPCでChat-GPTのようなものが動くのね。

しかもたくさんの日本語のモデルが公開されているじゃないか!


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


https://medium.com/axinc/llama-cpp%E3%81%A8lora%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6pc%E4%B8%8A%E3%81%A7%E6%97%A5%E6%9C%AC%E8%AA%9Ellm%E3%83%A2%E3%83%87%E3%83%AB%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B-31195fd54737


https://zenn.dev/syoyo/articles/946c17666e10fb


llama.cppはソースが毎日ものすごい変更されているようで、タグのバージョンが一致しないと公開されているモデルがデータが動かないようです。

llama.cppってllamaだけじゃなくてrinnaとかいろんなモデルも動くのね。

おじさん、「llama.cpp-master-63d2046」を取ってきて古いIntelMACでビルドして動かしてみました。




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


$ ./main -m ../ggml-vic7b-q4_0.bin -p "こんにちは"

main: build = 0 (unknown)

main: seed  = 1685513870

llama.cpp: loading model from ../ggml-vic7b-q4_0.bin

llama_model_load_internal: format     = ggjt v2 (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_layer    = 32

llama_model_load_internal: n_rot      = 128

llama_model_load_internal: ftype      = 2 (mostly Q4_0)

llama_model_load_internal: n_ff       = 11008

llama_model_load_internal: n_parts    = 1

llama_model_load_internal: model size = 7B

llama_model_load_internal: ggml ctx size =  72.75 KB

llama_model_load_internal: mem required  = 5809.34 MB (+ 1026.00 MB per state)

llama_init_from_file: kv self size  =  256.00 MB


system_info: n_threads = 6 / 12 | 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.800000, mirostat = 0, mirostat_lr = 0.100000, mirostat_ent = 5.000000

generate: n_ctx = 512, n_batch = 512, n_predict = -1, n_keep = 0



 こんにちは私は東京都、渋谷区の小学生です。当初私は日本語が複雑でしたが、徐歴uraの出ましい動画を見ると私は日本語がきっかけになりました。よろしいお手? microphone(mikeroop) 読み取ればよいですね」


このように、徐歴uraの動画を見ると日本語がきっかけになり、学端を解消しました。今、学端に違反しないようにお手? Mikeroop 読み取ればよいですね。


その後、徐歴uraが日本語の練習を行っている動画を見たり、広葉大輔などから学んだことを活用しました。今、日本語で書き上げることができます。


その中でも特におそらえ難しい日本語である「拝? Her Majesty the Queen's 」という用語が、徐歴uraが紹介した動画を見て学びました。感謝し合い。 [end of text]


llama_print_timings:        load time =   767.94 ms

llama_print_timings:      sample time =   229.23 ms /   351 runs   (    0.65 ms per token)

llama_print_timings: prompt eval time =   751.15 ms /     7 tokens (  107.31 ms per token)

llama_print_timings:        eval time = 55632.42 ms /   350 runs   (  158.95 ms per token)

llama_print_timings:       total time = 56655.94 ms

yomeinoMac-mini:llama.cpp-master-63d2046 yomei$ 

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


こりゃすげーすごい速さで答えが出てきます。

おーあなた小学生なのね?

やっぱ4Gバイトの7Bのモデルだと日本語がへたくそだねー。

10Gある13Bのモデルだとこれよりきれいな日本語で答えが出るみたいなので10Gダウンロードしよう。

0 件のコメント:

コメントを投稿