
ããŒã«ã«LLMã§é·ææç€ºãé«éå¿çããã ïœæç€ºçã«KVãã£ãã·ã¥ä¿æããŠé«éåããŠã¿ãïœ (Llama-cpp-python)
ããã«ã¡ã¯Rcatã§ãã
ä»åãããŒã«ã«LLMãã¿ã§ãã
ãã¡ãã®èšäºã§ãæ§ã
ãªããŒã«ã«LLMã皌åãããŠå®çšã«è¶³ãé床ã¯åºãã®ãå®éšããŸããã
ãã®çµæãšããŠãçæé床ã¯å®çšçã§ãããšçµè«ãåºãŸããããããã§ã¯èŠãŠããªãããšããããŸãã
ããããèããæé(å
¥åããã³ããã«å¯Ÿããæ³šææ©æ§ã®æŒç®)ã§ãã
äžã®èšäºã§ã¯ã"1000æåã®æç« æžããŠ"ãªã®ã§èããæéã¯ãããªãã§ãããã¿ã¹ã¯ã®èªååãè¡ãããšãããšãæç€ºãé·ããªãå¿çãå§ãŸããŸã§ã«æéãããã£ãŠããŸãã
ä»åã¯ãããäœãšãã§ããªããèããŠãããŸãã

ã¯ããã«
å©çšèŠçŽ
æ å ±ãäœåã®æŽ»çšæã¯äºåã«å©çšèŠçŽãã確èªãã ããã
ã³ã¡ã³ãã«ã€ããŠ
å©çšèŠçŽã®ã¬ã€ãã©ã€ã³ã確èªã®äžã³ã¡ã³ãããŠãã ããã
åã£ãŠããªãã³ã¡ã³ãã¯åé€ããŸãã
KVãã£ãã·ã¥ã§"èããã«"åç!?
2åç®ä»¥éãªããæ©ããªãïŒ
LLMãæ±ã£ãŠãããšãæåã¯é ãã®ã«åãæç€ºã®2åç®ãããªããå¿çãéããªã£ãŠããšãããŸããã?
ãªããã¯ããŸãæ°ã«ããŠããªãã£ãã®ã§ãããå
æ¥è³Œå
¥ããinterfaceã§èªãããŠããŸããã
Transformerç³»LLMãæç« ãçæãããšãã¯ãååŸãæç€ºæãšã®é¢ä¿æ§ã厩ããªãããã«å¿çããããã«æ³šææ©æ§ãåãã£ãŠããŸã(Gæ€å®ã§åºãã!)ã
ãããŠãããã³ãããå
šãåã(æåŸã ãéããªã©)ã®å Žåã¯ããã®æ³šææ©æ§ã®æŒç®çµæã䜿ããŸããã§ããããã§ãã
ãªã®ã§ã察å¿ããŠãããã©ãããã©ãŒã ã§ã¯äœ¿ããŸãããè¡ãããããšã§æ¬¡å以éã®å¿çæã«èããªããªã£ãŠé«éã«ãªãããã§ãã

ãããããŸãå©çšããã°ãã·ã¹ãã ããã³ããã«ç¥èãå ¥ããŠåçããããšãããããªäœ¿ãæ¹ãéåžžã«å¹ççã«ãªããŸããäœããã®ç¥èã¯ãã§ã«æŒç®æžã¿ã§èŠçŽããªããŠãããã§ããããã
ãã ããLlama-cpp-pythonã«ãããŠå®éšã®çµæåŒ±ç¹ãèŠã€ãããŸããã®ã§ããã®å 容ãšå¯Ÿçã«ã€ããŠç޹ä»ããŠããããšæããŸãã
ãã£ãã·ã¥ã®æç¡ã§ã®åäœã®éã
åäœå®éš
å®éšã«ãŠåäœé床ã確èªããŸãã
äžã§ã¡ãã£ãšäœèšã£ãŠããããããªããšããæ¹ã§ãããšãããããã¡ããèŠãŠãã ããã
ãŸãã¯éåžžã«é·ãã·ã¹ãã ããã³ãããå ¥åããŸããæåæ°ã¯1äž5800æåã§ããç»åçæã®èšäºã§äœ¿ã£ãŠããæã§ããã
åæããŒã¯ã³ã24ç§çšåºŠã§åºãŠããŠããŸãããã®æéãæç€ºãèªã¿åã(æ³šææ©æ§ã®æŒç®)ã«ããã£ãæéã§ãã

次ã«å
容ãäžåå€ããã«ãã1床æšè«ãå®è¡ããŸãã
ãããšä»åºŠã¯åæããŒã¯ã³ã0.1ç§ãããã§åºãŠããŸãã
ããã¯å
¥åãããå
容ãå®å
šã«äžç·ãªã®ã§èšç®ãçç¥ãããã åºåã ããè¡ã£ãçµæã§ãã
ããããã"èããã«åçãã"ã§ãã

ããããã£ãã·ã¥ã®å®åã§ãã
ã€ãŸããã©ããªã«é·ãã·ã¹ãã ããã³ãããå
¥åããŠãããšããŠããæåã®1åã ãã§èšç®ãè¡ãã®ã§ãè€éãªåŠçãçæéã§å®è¡ãããããšãã§ããŸãã
ãããããããã匱ç¹ã§ã
å
ã»ã©ãšã¯å
šãé¢ä¿ãªã話ãããŠã¿ãŸãããã
以äžã®äŸã§ã¯ã·ã¹ãã ããã³ããã¯å
¥åããŠããŸãã(ãã®å Žåã¯èªåçã«ããã©ã«ãã®ã代å
¥ãããä»çµã¿ã§ã)ã
ã©ãã§ãããå 容ãªã®ã§ãè¶ é«éã§åºãŠãŸããé¢ä¿ãããŸããã

åé¡ã¯ãããã
é¢ä¿ãªã話ãããåŸã«ããã1床å
ã»ã©ã®ç»åçæã®æç€ºãæããŠã¿ãŸãã
ãããšã©ãã§ããããäžçªæåãšåãããã«24ç§ã®èããæéãã§ããŠããŸããŸããã
ã€ãŸããããã¯ååã®ãã£ãã·ã¥ãšã©ãã§ããã話ãåããªãã£ãã®ã§ãç Žæ£ãããŠããŸã£ããšããããšã«ãªããŸã(çŸåšã¯ã©ãã§ããã話ããã£ãã·ã¥ãããŠãã)ã
éåžžã«ãã£ãããªãã§ãã

ãã£ãã·ã¥ãæç€ºçã«ä¿æããŠé«éåãã
ã©ããªæ¹æ³ãããã
ãšããããã§ãã©ãã«ããã£ãã·ã¥ãä¿æããããšãã§ããªãã調ã¹ãŠã¿ãŸããã
äžçªç°¡åãªã®ã¯ã¢ãã«ãèªã¿èŸŒãæã«è€æ°ã®ã€ã³ã¹ã¿ã³ã¹ãèªã¿èŸŒãããšãåã¿ã¹ã¯ããšã«ã¢ãã«ãå²ãåœãŠãŠäœ¿ããŸãã
Llama-cppã¯åãã¢ãã«ãããŒããããŠããã¢ãã«ã¯äžåã ãèªã¿èŸŒãåäœããããããã®ã§ãããŸããããªããããäžçªç°¡åã§ãã
ç§ã¯GPUã ãšã¡ã¢ãªãããŸãå
±æããããã¢ãã«ã®æ°ã ãã¡ã¢ãªãé£ã£ãŠããŸã£ãã®ã§ããã¯ãããŸãããROCmãšçžæ§æªãã?
ãšãããããªã®ã§ãç§ã¯ã¢ãã«ã«ãã£ãã·ã¥ã®ç®¡çãä»»ããã®ã§ã¯ãªããäºåã«èšç®ããèªåã§ç®¡çããŠã¢ãµã€ã³ãããšããæ¹æ³ãåããŸããã
ãã£ãã·ã¥ã®èšç®ãšå²ãåœãŠã®æµã
ä»åã®ããã°ã©ã ã§ã¯æ¬¡ã®æé ã§è¡ããŸãã
ã·ã¹ãã ããã³ãããé·ããã©ãããå€å¥
æ¥æ¬èªã§500æåçšåºŠãªã©ã°ããŒãã«å€æ°ã§èšå®ããŸããäºåã«èšç®ããããã£ãã·ã¥ããããã©ãã確èª
ã·ã¹ãã ããã³ããã®ããã·ã¥å€ãèšç®ããŠããããèŸæžã«å«ãŸãããã©ããã§ãåå䜿ã£ããã£ãã·ã¥ãããã確èªããŸãããªãå Žåã¯ãã£ãã·ã¥ãæ°èŠäœæããŠä¿æ
äžã§èšç®ããããã·ã¥å€ã䜿ã£ãŠèŸæžã§ç®¡çããŸãããã£ãã·ã¥ã匷å¶çã«ã¢ã¿ãã
䜿çšãããã£ãã·ã¥ãæç€ºçã«ã¢ã¿ããããŸãéåžžéãæšè«ãã
ãã§ã«ã·ã¹ãã ããã³ãããããå Žåã¯èªåçã«ã¹ããããããããé«éã«ãªããŸãã
å®éã®åäœ
ãŸãã¯ååã§ãããåãã24ç§ããã£ãŠããŸãã
ãã£ãã·ã¥ããªãã®ã§åœããåã§ããã

å
šãåãå
容ã§2åç®æããŸãã
ä»åºŠã¯0.5ç§ãããã§åºãŠããŠããã®ã§ããã£ãã·ã¥ã確èªã§ããŸããã
ãããŸã§ã¯ååãšåãã§ãã

ã§ã¯ãŸãé¢ä¿ãªãè©±ãæ¯ã£ãŠã¿ãŸãããã
ä»ãŸã§ã¯ããã§ãã£ãã·ã¥ãç Žæ£ãããŠããŸããŸãããã

ããäžåºŠç®çã®æç€ºãæããŠã¿ãŸãã
ä»åºŠã¯0.5ç§ã§åæããŒã¯ã³ãè¿ã£ãŠããŠããŸãã
ã€ãŸã2åç®ä»¥éãšåãã¹ããŒãã§ããããŸããã£ãã·ã¥ãé©çšãããŠããããã§ãã

ããããã°ãä»ãŸã§å®å
šã«å
¥åãåãã ã£ãã®ã§ããŠãŒã¶ãŒã®å
¥åãå°ãéãæã¯ã©ããªã®ïŒãšãããšããã確èªããŠãããŸããã
çµæã¯åæããŒã¯ã³ã0.8ç§ãªã®ã§ããŠãŒã¶ãŒã®éšåã ãã¡ãã£ãšèããã£ãŠæããããŸããã
ãããããã£ãã·ã¥ãé©çšãããŠããªããã°ããããªã¹ããŒãã¯åºãŸããããã¯ãããŸããã£ãŠããããã§ãã

ãŸãšã
ä»åã¯llmã®ãã£ãã·ã¥ã«ã€ããŠèŠãŠãããŸããã
ããŒã«ã«ã§LLMã䜿ããšã1ã€ã®ã¢ãã«ã§æ§ã
ãªã¿ã¹ã¯ãããªãå¿
èŠããããŸãã
è²ã
ãšèªååããããšãããšæç€ºãè€éã«ãªããå
ã»ã©ã®ãããªéåžžã«é·ãã·ã¹ãã ããã³ããæã€ãã®ã¯çãããããŸããã
ããã«ãæ§ã
ãªã¿ã¹ã¯ãããªããããæ¯åãã£ãã·ã¥ãç Žæ£ãããŠããŸããããã¹ã«ãŒãããã倧å¹
ã«äœäžããŸãã
ããããä»åã®æ¹æ³ãæ¡çšããããšã§ãä»åŸã¯ååã®ã¿2åã®æéããããããã«ãªããŸãããããã以éã¯äžåã®èšç®ãäžèŠã§åŠçãè¡ããããšã«ãªããŸããã
远èš:å°ã é£ç¹ãâŠ
â»ãã§ã«ãœãŒã¹ã¯å¯Ÿçæžã¿ã§ã
å°ãéçšããŠåãã£ãããšãªã®ã§ããããã®KVãã£ãã·ã¥çµæ§ã§ããã§ãã
128GBã®PCã§ã¡ã¢ãªè¶³ããªããšèšãåºããŠäœäºã ãšæã£ãããæ¬äœãã¡ã¢ãªãé£ãå°œãããŠããŸããã
çŸèšå®ã ãšã1é±éã¯ãã£ãã·ã¥ãä¿æã«ããŠããã®ã§ãããããªãã¹ãã§ã·ã¹ãã ãã¡ãã£ãšã ãå€ããŠããã®ã§å šéšç©ãã£ãæãã§ããã
èŠãæãã ãšã3000æåãããã§0.4GçšåºŠã10000æåã§0.8GçšåºŠã®ãµã€ãºã«ãªã£ãŠããŠç·åœ¢ã§ã¯ãªãããã
â»ãµã€ãºã¯ã¡ã¢ãªç£èŠããŠæŸã£ãéãªå€ã§ãã
ãšãããããªã®ã§ãèªããã»ã¹ã®å æã¡ã¢ãªããã§ãã¯ããèšå®å€ãè¶
ããŠããã°ãåãŸããŸã§å€ããã£ãã·ã¥ãç Žæ£ããããã«ä»æ§å€æŽãè¡ããŸãã(Linuxã®ã¿)ã
ããã§ç¡éã«å¢å ããã®ã黿¢ã§ããŸãã
ãã ããCPUã§æŒç®ããŠããæ¹ã¯ã¢ãã«ã®ãµã€ãºããã³æšè«äžã®å¢å åãèšæž¬ãããŠããŸãå¯èœæ§ããããŸãã®ã§ãäœè£ãæã£ãå€ãèšå®ããŠäžããã
é åžæ å ±
å ·äœçãªãœãŒã¹ã³ãŒãã¯ãé åžããŠãããã®ãã確èªé¡ããŸãã
ãã¡ãã®èšäºã§é åžããŠãããã®ãã¢ããããŒãããŸãã