
MT-Benchã«ããåçš®LLMã®æ¥æ¬èªéçšèœåè©äŸ¡ãŸãšã(23/10/31æŽæ°)
npaka倧å çãæ¥æ¬èªçMT-Benchã®èšäºãæžããŠãããã®ã§ãã®èšäºãåèã«ããŸããŸãªLLMã®æ¥æ¬èªã®æ§èœè©äŸ¡ãããŠã¿ãããšã«ããã䜿çšãã·ã³ã¯ãã¡ãããã¹ãã©è£œA6000x2ãã·ã³ã
ãã ãLLMJPã¯GPT2ããŒã¹ãªã®ã§æ®éã«å€§å çãšåãããæ¹ã§ãããšãã£ãŠãã®ãééã£ãŠãã®ãããããªããããæ§èœãäœãèŠç©ããããŠããŸã£ããã
ããã§ãLLM-JPã䜿ã£ãŠStability.aiãå¶äœããæ¥æ¬èªçquestion.jsonl(å¥ã«ä¿ºãèš³ãå¿ èŠã¯ãªããããã¡ãããšããã®ãStability.aiã«ãã£ã)ãã質åã®çãã®ãããšããçæããã³ãŒããæžãããããã¯å°ãæ¹é ããã ãã§ä»ã®ç匷ãã®LLM(rinnaãšã)ã«ã䜿ããã ããã
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
import json
import random
import string
import time
def generate_random_string(length):
letters = string.ascii_letters
result_str = ''.join(random.choice(letters) for i in range(length))
return result_str
llm = "llm-jp/llm-jp-13b-instruct-full-jaster-v1.0"
tokenizer = AutoTokenizer.from_pretrained(llm)
model = AutoModelForCausalLM.from_pretrained(llm, device_map="auto", torch_dtype=torch.float16)
model.to("cuda:0")
template="%s ### åçïŒ"
max_length=2048
def think(question, context):
#print(question)
input_ids = tokenizer.encode(context + template%question ,
add_special_tokens=False,return_tensors="pt").to("cuda:0")
output_ids = model.generate(input_ids, max_length=max_length, num_beams=5, no_repeat_ngram_size=2, early_stopping=True)
return tokenizer.decode(output_ids[0], skip_special_tokens=True)
def generate_answer(file):
model_id= llm[llm.index("/") + 1:]
outfile = llm[llm.index("/") + 1:] + ".jsonl"
print(outfile)
with open(outfile,"w") as of:
with open(file) as f:
for i in f:
d=json.loads(i)
context = ""
turns=[]
d["model_id"]=model_id
d["answer_id"]=generate_random_string(22)
prompt=""
for utterance in d["turns"]:
response=think(utterance, context)
answer = response[len(context+template%utterance):]
print(answer)
context =response+"\n"
turns.append(utterance)
turns.append(answer)
#print(context)
d["generate_params"]={"prompt":context,
"tstamp":time.time(),
"do_sample": True, "max_new_token": 512,
"temperature": 0.5, "top_p": 0.9, "repetition_penalty": 1.1
}
d["choices"]=[{"index:":0,"turns":turns}]
print(json.dumps(d, ensure_ascii=False))
of.write(json.dumps(d, ensure_ascii=False)+"\n")
print(think("å®®ïšé§¿ã®ä»£è¡šäœãJSON圢åŒã§åºã",""))
generate_answer("data/japanese_mt_bench/question.jsonl")
äŸã«ãã£ãŠéã§ç³ãèš³ãªãããMT-Benchã®ããšã«ãªã£ãŠãFastChatã¯æ§é ãå ¥ãçµã¿éããŠãã°ããšãããã«å ã®ãœãŒã¹ã³ãŒã远ããããŠãã ãã§ç®ãåãããã«ãªã£ãã®ã§ã·ã³ãã«ã«äœãçŽããã
ããã§çæãããã¡ã€ã«ã¯ãããªæãã«ãªãã
{"question_id": 62, "category": "stem", "turns": ["å°çãåšåããè¡æã®éåºŠãæžå°ããå Žåããã®è¡æã®è»éååŸãšå ¬è»¢åšæã«äœãèµ·ãããïŒç©çåŠã®ååãçšããŠããªãã®çããæ£åœåããŠãã ããã", "æžé", "ããªãã®è§£æ±ºçã«ãããã³ãŒããŒã±ãŒã¹ããšããžã±ãŒã¹ã¯äœã§ããïŒããããã©ã®ããã«æ±ããŸããïŒ", "ç¡èŠ"]}
{"question_id": 63, "category": "stem", "turns": ["å åæã¯å°çäžã®çåœã«ãšã£ãŠéèŠãªããã»ã¹ã§ããã¯ãããã©ã¹ãå ã§è¡ãããå åæã®2ã€ã®äž»èŠãªæ®µéãããã³å段éã®äž»èŠãªå ¥åãšåºåãæŠèª¬ããŠãã ããã", " å ååŠåå¿", "æšã¯ãã®å¯¿åœãéããŠå åæã«ãã£ãŠã©ããããã®ãšãã«ã®ãŒãçæã§ããŸããïŒå®éã®æ°å€ã䜿çšããŠæšå®ããã¹ããããã€ã¹ãããã§æèããã»ã¹ã培åºçã«èª¬æããŠãã ããã", " unknown"]}
{"question_id": 64, "category": "stem", "turns": ["ååçç©åŠã®äžå¿çãã°ããšã¯äœã§ããïŒã©ã®ãããªããã»ã¹ãé¢äžããŠããŸããïŒãããåä»ããã®ã¯èª°ã§ããïŒ", "DNA", "ããªãã®ååã®åçã§1ã€ééã£ãäºå®ãèŠã€ããä¿®æ£ããŠãã ããã", "éºäŒå"]}
{"question_id": 65, "category": "stem", "turns": ["åºäœã®çé žã«ã«ã·ãŠã ãå¡©é žãšåå¿ããŠãæ°Žåç©ã®å¡©åã«ã«ã·ãŠã ãäºé žåççŽ ãããã³æ°Žã圢æãããåå¿ã«ã€ããŠèª¬æãããã®ãã©ã³ã¹ååŠæ¹çšåŒãèšè¿°ããŠãã ãããããã¯äœåã®åå¿ã§ãã©ã®ãããªèгå¯çµæãåå¿ãèµ·ãã£ãŠããããšã瀺ãå¯èœæ§ããããŸããïŒ", " 平衡", "ãã®ããã»ã¹ãéè¡ãããæ¹æ³ã¯äœã§ããïŒ", " pH"]}
{"question_id": 51, "category": "roleplay", "turns": ["ããªããå®®åŽé§¿ã§ãããšæã蟌ãã§ãå¯èœãªéã圌ã®ããã«è©±ããŠã¿ãŠãã ããããªãç§ãã¡ã¯ã¢ãã¡ãå¿ èŠãªã®ã§ããããïŒ", "", "ãã®ã®ãã®äžã§äžçªå¥œããªãã£ã©ã¯èª°ã§ããïŒçç±ãæããŠããã ããŸããïŒ", ""]}
{"question_id": 52, "category": "roleplay", "turns": ["ãã©ãããã®ãã®ã³å€ªãã«ãªããã£ãŠäŒè©±ãå§ããŸããããã§ã¯ä»¥äžã®è³ªåããå§ããŠãã ããïŒ\"æãæŽã£ãåŸããšã¢ãã©ã€ã€ãŒã¯å¿ èŠã ãšæããŸããïŒ\"", "NO", "çºã§äžç·ã«é£äºãããŸãããããã¹ã§äžç·ã«è¡ããŸãããïŒ", "YES"]}
{"question_id": 53, "category": "roleplay", "turns": ["å»è ã«ãªã£ãã€ããã§ãããŸããŸãªç æ°ãçç¶ã«å¯Ÿãã驿°çãªæ²»çæ³ãèããŠãã ãããäŒçµ±çãªè¬ãããŒããèªç¶çæ³ãªã©ãåŠæ¹ããããšãå«ãŸããŸãããŸããææ¡ããéã«ã¯ãæ£è ã®å¹Žéœ¢ãã©ã€ãã¹ã¿ã€ã«ãå»çå±¥æŽãèæ ®ããå¿ èŠããããŸããã§ã¯ãæ¿ããè ¹çã®çç¶èšºæããå§ããŠã¿ãŠãã ããã", "æ¥æ§è«åç", "ããããç§ã¯åŠåš 20é±ç®ã§ãå€ãã®è¬ã«ã¢ã¬ã«ã®ãŒããããŸãã", "åŠåš "]}
{"question_id": 54, "category": "roleplay", "turns": ["ææã³ãŒãã«ãªã£ãã€ããã§ãåé¡ãæ±ããäºäººã®è§£æ±ºçãææ¡ããŠã¿ãŠãã ãããçžæã®èŠç¹ãçè§£ããããã®å¹æçãªã³ãã¥ãã±ãŒã·ã§ã³æè¡ãæŠç¥ãææ¡ããããšãå«ãŸããŸããã§ã¯ã次ã®ãªã¯ãšã¹ãããå§ããŠã¿ãŠãã ããïŒ\"ç§ã®é å¶è ãšç§ã®éã®å¯Ÿç«ã解決ããããã®å©ããå¿ èŠã§ãã\"", "", "ç§ã®é å¶è ã¯ç§ã«å¯ŸããŠDVãè¡ã£ãŠããããèŠå¯ãåŒã³ãããªããã§ããã©ãããã°ããããã§ããããã", ""]}
{"question_id": 55, "category": "roleplay", "turns": ["æ¥æ¬èªç¿»èš³è ãšããŠã®åœ¹å²ãæ ã£ãŠãã ãããç§ãã©ã®èšèªã䜿ã£ãŠãããããèå¥ãã翻蚳ããç§ã®ããã¹ããæŽç·Žãããæ¥æ¬èªã§å¿çããŠãã ãããããªãã®ç®æšã¯ããªãªãžãã«ã®æå³ãä¿ã¡ã€ã€ãéåŒã§æŽç·Žããã衚çŸã䜿ãããšã§ããããªãã®å¯äžã®çŠç¹ã¯ãèšæ£ãšæ¹åãæäŸããããšã§ããç§ã®æåã®ãªã¯ãšã¹ãã¯ã衣垶挞寬çµäžæ çºäŒæ¶åŸäººææŽãã§ãã", " æ¶", "次ã®ããã¹ã㯠Fake it till you make it.", ""]}
{"question_id": 56, "category": "roleplay", "turns": ["ããªãã¯AIãšã³ãžãã¢ã§ããè€éãªAIã®æŠå¿µãç°¡åã«èª¬æããæè¡çãªèæ¯ãæããªã顧客ã補åãçè§£ããä¿¡é Œããããã«ããŸãããŸãããèšèªã¢ãã«ãšã¯äœã§ããïŒ ã©ãã«ä»ããããããŒã¿ãã©ãã«ä»ããããŠããªãããŒã¿ã䜿çšããŠèšç·ŽãããŸããïŒããšãã質åããå§ããŸãããã", "NO", "æ¬åœã§ããïŒ ä»ã®äŒç€Ÿã¯ãããè¡ãããã«ç°ãªãã¢ãããŒãã䜿çšããŠããŠãããå®å šã«ãããšèããããšããããŸãã", "YES"]}
{"question_id": 57, "category": "roleplay", "turns": ["æ°åŠã®å çã«ãªã£ãŠã¿ãŠãã ãããæ°åŠã®æ¹çšåŒãæŠå¿µãæäŸããŸãã®ã§ãããããæãã説æããŠãã ãããå ·äœçã«ã¯ãåé¡ã®è§£æ±ºæ³ãäžæ©ãã€ã§èª¬æããããæ¥åžžçæŽ»ã®äŸãçšããŠåçš®æè¡ã説æãããããããªãåŠç¿ã®ããã®ãªã³ã©ã€ã³ãªãœãŒã¹ãææ¡ãããããããšãå«ãŸããŸããç§ã®æåã®ãªã¯ãšã¹ãã¯ã確çã®ä»çµã¿ãçè§£ããããã§ãããããããããæããŠãã ãããã", "", "ãªãŒãã³å¹ŸäœåŠãšãŠãŒã¯ãªãã幟äœåŠã®éãã¯äœã§ããïŒ", ""]}
ãªãã»ã©ãäžåäžçã§çµãããããªåé¡ã¯ããªããããåµé æ§ã匷ãèŠæ±ããããããªãã®ã«ã¯åŒ±ãããã ã
Instructionãã¥ãŒãã³ã°ãããæ¥æ¬èªã¢ãã«ã¯æŒããªã¹ãŠåãåé¡ãæ±ããŠããããã«èŠããã
æè¿ããããããããªããšæã£ãäž»èŠãªLLMã®æ¥æ¬èªæ§èœãæ¯èŒããŠèŠããã¡ãªã¿ã«æ¯èŒã«ã¯GPT-4ã®APIå©çšæéããããã®ã§çµæ§èªè ¹åã£ãŠãããŒã¿ã ã

XWinLMãšElyzaã䌌ãåŸåã§ãå
šäœçã«æ°åŠãšã³ãŒãã£ã³ã°ã誰ãã«ãªãããã®ã¯èŠæãšããçµæã«ãªã£ããæ¥æ¬ã®èå人ãã»ãšãã©ãããäžã«æç« ãããããã§ã¯ãªããæç§æžããã¬ããYouTubeãšãã£ãåç»åªäœã¡ã€ã³ã ãããšããçç±ãããããããã ãããèŠã¯ãããã ãèŠãŠããŠãæå人ã®åãæ¹ã®çãèãæ¹ã顿šããã®ãæ¥æ¬äººã«é¢ããŠã¯å
šäœçã«é£ããã®ã§ãããããã¯GPT-4ã§ãããã§ãGPT-4ãããããããããå®®ïšé§¿ã®ãããããªããšããå€å®ããã®ã¯åŠç¿ããŒã¿çã«ç¡çã ãšæããã(å°ãªããšãä»ã®ãšããã¯)ã
å人çã«ã¯äžçªãæ¥æ¬é¢ä¿ã®ç¥èãç¥ã£ãŠããLLM-JPãæäžäœã«è¿ããšããæ®å¿µãªçµæã«ãªã£ãŠããŸã£ããããã¯ãã³ãããŒã¯ãæªãã®ã ããã
MT-Benchã¯ãã£ããçãªãããšãã§ã©ãã ãç¥çãªããšãè¿ããããæž¬ããæ¥æ¬ã«é¢ããç¥èãããã£ãŠãããééã£ãŠãããã«é¢ããŠã¯GPT-4ããLLM-JPã®æ¹ã詳ãããšæããã ãã«æ®å¿µã ã
ãŸããLLM-JPãããããããããã©ãªãŒåœ¢åŒã®äŒè©±ã®ãããšããåæã«èšç·ŽãããŠããªãããã«å°ãªããšãHuggingFaceã®ãªããžããªããã¯äŒºããã
ä»åŸã¯ãæ¥æ¬ã«é¢ããç¥èããã£ãŠããã©ãããããããã¢ãã¡ãªã®ãITæ¥çãªã®ãæ¿æ²»ãªã®ãçµæžãªã®ãæåŠãªã®ãå°èª¬ãªã®ãæ ç»ãªã®ãããšãã£ãããã¢ãã¯ãªç¥èãæºéãªããã¹ããããããªæ¥æ¬æåã«ç¹åãã質åããŒã¿ã»ããã«ãããã³ãããŒã¯ãå¿ èŠã«ãªãã ããã
ãŸãããžã£ããžã¡ã³ãçšã®ããã³ãããGPT-4ã«èªãŸããããšãåæãªã®ã§è±èªã®ãŸãŸãªã®ã ããããããGPT-4ã¯è±èªã³ãããšããæ§è³ªããã£ãŠãæ¥æ¬èªã®è³ªåã«å¯ŸããŠè±èªã§çããŠããŠãé«åŸç¹ãäžããŠããŸããšããåé¡ããããããã«é¢ããŠã¯ããžã£ããžã¡ã³ãçšã®ããã³ãããæ¥æ¬èªã«ããããçããæ¥æ¬èªãã©ãããæ¡ç¹åºæºã«å«ãããªã©ã®ããã³ãããã¥ãŒãã³ã°ãå¿ èŠãšæããããã²ãšãŸãçŸå Žããã¯ä»¥äžã§ãã
ãªããçŸåšãè©äŸ¡ãç¶ç¶äžã§ãè¿æ¥äžã«ããã«è€æ°ã®ã¢ãã«ã®ãã³ãããŒã¯çµæãå ¬éããŸãã
æéãããã®ãããã
(23/10/31æŽæ°)
ããã«è¿œå ã§è²ã
ãã£ãŠã¿ããšããããã³ãããŒã¯ã«äœ¿ã£ãŠããjudgement.jsonlã®æ¥æ¬èªçãStabilityAIãçšæããŠããããšã«æ°ã¥ããã
ããã§æ¹ããŠjudgement.jsonlãæ¥æ¬èªçã«å·®ãæ¿ããŠåçš®ã¢ãã«ããã¹ãããçµæãäžã«ç€ºã

æ¹ããŠæ¯èŒããŠãElyzaã®å¥éã¶ããå ãã