
LLM-jp-3 ã gguf ã«å€æããæé
ãLLM-jp-3ãããggufãã«å€æããæé ããŸãšããŸããã
ã»M3 Max
1. Llama.cppã®ã€ã³ã¹ããŒã«
Llama.cppã®ã€ã³ã¹ããŒã«æé ã¯ã次ã®ãšããã§ãã
(1) Xcodeã®ã€ã³ã¹ããŒã«ã
ãLlama.cppãã¯ãã€ã³ã¹ããŒã«æã«ç°å¢ã«ããããŠãœãŒã¹ãããã«ãããŠå©çšãããããMacã§ã¯Xcodeã®ãã«ãããŒã«ãå¿
èŠã«ãªããŸãã
(2) ãªããžããªã®ã¯ããŒã³ã
$ git clone https://github.com/ggerganov/llama.cpp
$ cd llama.cpp(3) ãã«ãã
$ make(4) äœæ¥ãã©ã«ãã«æ»ãã
ä»åã¯ãllama.cppãã©ã«ããé
眮ãããŠããã©ã«ãã§äœæ¥ããŸãã
$ cd ..2. 倿ããtransformersã¢ãã«ã®æºå
ä»åã¯ãllm-jp/llm-jp-3-1.8b-instructããæºåããŸãã
(1) transformersã¢ãã«ã®æºåã
$ git clone https://huggingface.co/llm-jp/llm-jp-3-1.8b-instruct(2) ãtokenizer.modelãã®æºåã
ãllm-jp/llm-jp-tokenizerããããllm-jp-tokenizer-100k.ver3.0b1.modelããããŠã³ããŒãããŠããllm-jp-3-1.8b-instructããã©ã«ãã«ãtokenizer.modelããšããååã§é
眮ããŸãã
é
眮ããªããšgguf倿æã«ä»¥äžã®ãšã©ãŒãã§ãŸããã
FileNotFoundError: File not found: llm-jp-3-1.8b-instruct/tokenizer.model3. transformersã¢ãã«ãggufã«å€æ
ãtransformersã¢ãã«ãããggufãã«å€æããæé ã¯ã次ã®ãšããã§ãã
(1) Pythonã®ä»®æ³ç°å¢ã®æºåã
$ python -m venv env
$ source env/bin/activate(2) Llama.cppã®äŸåé¢ä¿ã®ã€ã³ã¹ããŒã«
$ pip install -r ./llama.cpp/requirements.txt(3) transformersã¢ãã«ãggufã«å€æã
$ python ./llama.cpp/convert_hf_to_gguf.py ./llm-jp-3-1.8b-instruct --outfile ./gguf-model_f16.gguf --outtype f16ãgguf-model_f16.ggufããçæãããŸãã
(4) åäœç¢ºèªã
$ ./llama.cpp/llama-cli -m './gguf-model_f16.gguf' -p '
### æç€º:
ãŸã©ãâãã®ã«ã§ã¯èª°ãäžçªãããã?
### å¿ç:
' -n 512### æç€º:
ãŸã©ãâãã®ã«ã§ã¯èª°ãäžçªãããã?
### å¿ç:
ãéæ³å°å¥³ãŸã©ãâãã®ã«ãã«ããããäžçªããããããã£ã©ã¯ã¿ãŒãç¹å®ããã®ã¯é£ããã§ãããªããªãããã®ãã£ã©ã¯ã¿ãŒã¯ç©èªã®é²è¡ã«å¿ããŠæé·ããå€åããŠããããã§ãããããã以äžã®ãã£ã©ã¯ã¿ãŒã¯ç¹ã«äººæ°ããããå€ãã®ãã¡ã³ã«æãããŠããŸãã
1. 鹿ç®ãŸã©ã:
- ç©èªã®äžå¿ãšãªããã£ã©ã¯ã¿ãŒã§ãäž»äººå ¬ã®äžäººã§ãã圌女ã¯çŽç²ã§åŒ·ãæå¿ãæã¡ãéæ³å°å¥³ã«ãªãããšã決æããŸãã
- åœŒå¥³ã®æé·éçšãèè€ãèŠèŽè ã«æåãäžããå€ãã®æ¯æãåŸãŠããŸãã
2.ã¢ã«ãã£ã¡ãããŸã©ã:
- ç©èªã®ã¯ã©ã€ããã¯ã¹ã§ç»å Žãã圌女ã®åã®è±¡åŸŽãšãªãååšã§ãããã®çŸãããšå匷ããããå€ãã®ãã¡ã³ã«æåãäžããŸããã
3.å·Žãã:
- éæ³å°å¥³ã®äžäººã§ããŸã©ãã®èŠªåã§ãã圌女ã¯ããã®éå»ãå®¶æã«ã€ããŠèªãããããšã§ããã£ã©ã¯ã¿ãŒã«æ·±ã¿ãäžããããŠããŸãã
4.æçŸã»ãã:
- ç©èªã®éµãšãªããã£ã©ã¯ã¿ãŒã§ã圌女ã®è€éãªå é¢ãéå»ãã¹ããŒãªãŒã«å€§ããªåœ±é¿ãäžããŠããŸãã
5.ãã¥ã¥ã¹ã:
- éæ³å°å¥³ã®äžçãäœãåºãååšã§ã圌èªèº«ãéèŠãªãã£ã©ã¯ã¿ãŒã§ãã圌ã®ååšèªäœãç©èªã®ããŒãã®äžã€ãšãªã£ãŠããŸãã
ãããã®ãã£ã©ã¯ã¿ãŒãã¡ã¯ãããããç°ãªãé åãæã¡ãèŠèŽè ã«åŒ·ãå°è±¡ãäžããŠããŸããæçµçã«ã¯ãåã ã®ãã¡ã³ã®å¥œã¿ã«ãã£ãŠãäžçªããããããã£ã©ã¯ã¿ãŒãç°ãªããããããŸããã [end of text]
llama_perf_sampler_print: sampling time = 11.92 ms / 314 runs ( 0.04 ms per token, 26346.70 tokens per second)
llama_perf_context_print: load time = 316.82 ms
llama_perf_context_print: prompt eval time = 25.97 ms / 24 tokens ( 1.08 ms per token, 924.18 tokens per second)
llama_perf_context_print: eval time = 3544.59 ms / 289 runs ( 12.27 ms per token, 81.53 tokens per second)
llama_perf_context_print: total time = 3588.56 ms / 313 tokens
ãllama.cpp/examples/llama.swiftuiããllama.cpp/examples/llama.androidãã䜿ã£ãŠiPhoneã»Androidã§æšè«ããããšãã§ããŸãã
llm-jp-3-1.8B ãllama.cpp 䜿ã£ãŠiPhone ã§ã詊ãäžã pic.twitter.com/PqFepwIgYM
â åžçå·è±äž / Hidekazu Furukawa (@npaka123) September 27, 2024
llm-jp-3-1.8B ãllama.cpp 䜿ã£ãŠPixel 9 ã§ã詊ãäžã
â åžçå·è±äž / Hidekazu Furukawa (@npaka123) September 27, 2024
iPhone 16ããã¯è¥å¹²é ããhttps://t.co/3YHpT7JqM7 pic.twitter.com/i7LiqugpO2
4. gguféåå
(1)Â gguféåå (Q4_K_M)
$ ./llama.cpp/llama-quantize ./gguf-model_f16.gguf ./llm-jp-3-1.8b-instruct.Q4_K_M.gguf Q4_K_Mãllm-jp-3-1.8b-instruct.Q4_K_M.ggufããçæãããŸãã
(2) åäœç¢ºèªã
$ ./llama.cpp/llama-cli -m './llm-jp-3-1.8b-instruct.Q4_K_M.gguf' -p '
### æç€º:
ãŸã©ãâãã®ã«ã§ã¯èª°ãäžçªãããã?
### å¿ç:
' -n 512### æç€º:
ãŸã©ãâãã®ã«ã§ã¯èª°ãäžçªãããã?
### å¿ç:
ãéæ³å°å¥³ãŸã©ãâãã®ã«ãã®äžã§ããäžçªããããããšæãããã£ã©ã¯ã¿ãŒã¯å人ã®äž»èгã«ãããšããã倧ããã§ããããããäžè¬çã«äººæ°ãé«ããã£ã©ã¯ã¿ãŒãããã€ã玹ä»ããŸãã
1.鹿ç®ãŸã©ã:äž»äººå ¬ã§ãããéæ³å°å¥³ã«ãªãããã«æŠã女ã®åã
2.æçŸã»ãã:ãŸã©ãã®èŠªåã§ãããå ±ã«æŠãå°å¥³ã
3.å·Žãã:éæ³å°å¥³ã®äžäººã§ããŸã©ãã®åŠæ ¡ã®å çã
4.ãã¥ã¥ã¹ã:éæ³å°å¥³ãšäººéã®éã«ç«ã¡ãå¥çŽã亀ããååšã
5.鹿ç®ãŸã©ã:äž»äººå ¬ã§ãããéæ³å°å¥³ã«ãªãããã«æŠã女ã®åã
ãŸãããäžçªããããããšæãããã£ã©ã¯ã¿ãŒã¯äººããããã§ãã®ã§ããã²èªåã®å¥œããªãã£ã©ã¯ã¿ãŒãèŠã€ããŠãã ããã [end of text]
llama_perf_sampler_print: sampling time = 6.13 ms / 172 runs ( 0.04 ms per token, 28040.43 tokens per second)
llama_perf_context_print: load time = 237.91 ms
llama_perf_context_print: prompt eval time = 26.27 ms / 24 tokens ( 1.09 ms per token, 913.52 tokens per second)
llama_perf_context_print: eval time = 979.97 ms / 147 runs ( 6.67 ms per token, 150.01 tokens per second)
llama_perf_context_print: total time = 1015.69 ms / 171 tokens
5. imatrixéåå
(1) iMatrixèšç®çšããŒã¿ã»ããã®æºåã
ãã䜿ãããããŒã¿ã»ããã¯ã次ã®3ã€ã§ãã
ã»c4_en_ja_imatrix.txt : bakuãããäœæããæ¥è±ããã¹ãã®ããŒã¿ã»ãã
ã»wiki.train.rawïŒWikitextïŒè±èªçïŒã®åŠç¿çšããŒã¿ã»ãã
ã»groups_merged.txtïŒkalomazeãããäœæããç䌌ã©ã³ãã ããŒã¿ã»ãã
ä»åã¯ããc4_en_ja_imatrix.txtãã䜿ããŸãã
(2) ggufããimatrixãžã®å€æã
$ ./llama.cpp/llama-imatrix -m ./gguf-model_f16.gguf -f ./c4_en_ja_imatrix.txt -o ./gguf-model.imatrix --chunks 32ãgguf-model.imatrixããçæãããŸãã
(3) imatrixéåå (IQ4_XS)ã
$ ./llama.cpp/llama-quantize --imatrix ./gguf-model.imatrix ./gguf-model_f16.gguf ./llm-jp-3-1.8b-instruct_IQ4_XS.gguf iq4_xsãllm-jp-3-1.8b-instruct_IQ4_XS.ggufããçæãããŸãã
(5) åäœç¢ºèªã
./llama.cpp/llama-cli -m './llm-jp-3-1.8b-instruct_IQ4_XS.gguf' -p '
### æç€º:
ãŸã©ãâãã®ã«ã§ã¯èª°ãäžçªãããã?
### å¿ç:
' -n 512### æç€º:
ãŸã©ãâãã®ã«ã§ã¯èª°ãäžçªãããã?
### å¿ç:
ãäžçªãããããã¯äž»èгã«åºã¥ããã®ã§ããã人ããããã®å¥œã¿ã«ãããŸãããããŸã©ãâãã®ã«ãã§ã¯é¹¿ç®ãŸã©ããæãå€ãã®å¥³æ§ããæ¯æãåŸãŠããŸãã
鹿ç®ãŸã©ãã¯ãéæ³å°å¥³ãŸã©ãâãã®ã«ãã®äž»äººå ¬ã§ãããäž»äººå ¬ãéæ³å°å¥³ã«ãªãããšã«æåã¯å察ãããã®ã®ãéæ³å°å¥³ãšããŠæŠãå°å¥³ãã¡ãå©ããããã«éå¥³ãšæŠãããšã«ãªãã¹ããŒãªãŒã®äžã§ã圌女ã®çŽç²ãªå¿ãšåæ°ãæãããŠããŸãã
ãŸããäž»äººå ¬ããåžæã®è±¡åŸŽããšããŠæãããŠããããšãããéæ³å°å¥³ãã¡ãåžæãæšãŠãã«æŠãã«æãå§¿ãå€ãã®èŠèŽè ã«åæ°ãäžããŠããŸãããã®ããã鹿ç®ãŸã©ããæãå€ãã®äººã ãããããããããšæããããŠããããšã§ãããã
ãã ãããã£ã©ã¯ã¿ãŒã®å¥œã¿ã¯å人ã«ãã£ãŠå€§ããç°ãªããŸãã®ã§ããäžçªããããããæ±ºããã®ã¯é£ãããããããŸããã [end of text]
llama_perf_sampler_print: sampling time = 7.15 ms / 193 runs ( 0.04 ms per token, 27008.12 tokens per second)
llama_perf_context_print: load time = 226.15 ms
llama_perf_context_print: prompt eval time = 25.49 ms / 24 tokens ( 1.06 ms per token, 941.40 tokens per second)
llama_perf_context_print: eval time = 1033.24 ms / 168 runs ( 6.15 ms per token, 162.60 tokens per second)
llama_perf_context_print: total time = 1069.65 ms / 192 tokens