ChatGPTã®å ¬éããã£ããã«äžçäžã«ããŒã ãå·»ãèµ·ããããå€§èŠæš¡èšèªã¢ãã«ãã ãã2024幎ã話é¡ã«å°œããªãããããªäžãæ¥æ¬çºã®LLMã®ååãæ°ã«ãªããšããæ¹ãå€ãã ãããæ¥æ¬çºã®LLMã®å€ãã¯ãªãŒãã³ãœãŒã¹ã§å ¬éãããŠããã®ã§ãå®éã«åãããŠè©Šãããšãã§ãããä»åã¯è©±é¡ã®ã¢ãã«ELYZAãSwallowãQarasuã®3ã€ã詊ããŠã¿ããã
æ¥æ¬èªLLMã®ç±ãæŠã
ãµãšã10幎åŸã«2023幎ããäžççã«å·»ãèµ·ãã£ãAIããŒã ãã©ãè©äŸ¡ãããã®ãæ°ã«ãªã£ããChatGPTãå°åºãã«ããŸããŸãªæ©èœããªãªãŒã¹ããå§åçãªå®åã§äžçãäžå€ããã2023幎ã ã£ãããä»å¹Žããã®å¢ãã¯èœã¡ããã«ãªãã
ãããŠãããã«ç¶ããšãªãŒãã³ãœãŒã¹ã®å€§èŠæš¡èšèªã¢ãã«(以åŸLLMãšç¥ã)ãäžçäžã§éçºãããŠãããããæ¥æ¬ã§ããå®åããæ¥æ¬äŒæ¥ãã¹ã¿ãŒãã¢ããããChatGPTã«è¿œãã€ã远ãè¶ããšãæ¥ã ç±ãæŠããç¹°ãåºããŠããããã£ãšããã®AIéçºã«æããç±ããšã³ãžãã¢ã®æŠãã¯ãåŸæ¥æ ç»ããã©ãã«ãªãããšã ããã
ããã§ãä»åã¯ãæ¥æ¬èªæ§èœãåªãããªãŒãã³ãœãŒã¹ã®LLMãããã€ã詊ããŠãAIã®æªæ¥ã«æãã銳ããããšã«ãããããšã¯èšããæ¬é£èŒã§ã¯ã104åç®ã106åç®ã§OpenCalmãCodeLlamaãªã©ã®ã¢ãã«ã詊ããŠãããããã§ãäžå¯§ãªè§£èª¬ã¯ã»ã©ã»ã©ã«ãæè»œã«ããã€ãã®å€§èŠæš¡èšèªã¢ãã«ãè©Šãæ¹æ³ã確èªããŠã¿ãããšæãã
èªè ã®PCç°å¢ã¯åå·®äžå¥ã§ãããäžã€ãã€ã»ããã¢ããæ¹æ³ã解説ããããšã¯äžå¯èœãªã®ã§ãGoogle Colaboratory(以åŸColabãšç¥ã)ã䜿ã£ãæ¹æ³ã玹ä»ãããColabã¯Googleãçšæããã¯ã©ãŠãäžã®ä»®æ³PCã§ãããæè»œã«æ©æ¢°åŠç¿åãPythonã®å®è¡ç°å¢ãå©çšããããšãã§ãããColabã«ã€ããŠã¯ãæ¬çš¿ã§ã27åç®ãã¯ããäœåºŠã解説ããŠããã詳ããäœ¿ãæ¹ã解説ããŠããã®ã§åèãªãã ããã
ãã ããä»å玹ä»ããé«åºŠãªã¢ãã«ãåããã«ã¯ãææçã®Colab Pro(åçš¿å·çæç¹ã§1179å)/Pro++(5767å)ãå¿ èŠãšãªããå®è¡çµæã確èªããŠãå°æ¥ã«æãã銳ããã ãã§ã楜ãããããããªãã
ELYZA-japanese-Llama-2-7b
æåã«ãæ¥æ¬ã®AIç ç©¶ã§æåãªæ±äº¬å€§åŠã®æŸå°Ÿç 究宀ããå§ãŸã£ãAIã«ã³ãããŒELYZAãéçºããLLMãELYZA-japanese-Llama-2-7bãã·ãªãŒãºãå©çšããŠã¿ããã
ãã®LLMã¯ååãããåãããšãããFacebookãInstagramãéå¶ããMeta瀟ããªãŒãã³ãœãŒã¹ã§å ¬éããŠãããLlama 2ããããŒã¹ã«éçºãããã¢ãã«ã ãWikipediaçã«å«ãŸããæ¥æ¬èªããã¹ãããŒã¿ãçšããŠçŽ180åããŒã¯ã³ã®æ¥æ¬èªããã¹ãã§è¿œå äºååŠç¿ãè¡ã£ãã¢ãã«ãšã®ããšããããŠãä»åã¯ããELYZA-japanese-Llama-2-7bãã·ãªãŒãºãããELYZA-japanese-Llama-2-7b-fast-instructããå©çšããŠã¿ããããã®ã¢ãã«ã¯ãã¡ãã§å ¬éãããŠããã
LLMãå®è¡ããã«ã¯ããã¡ãã®Colabã«ã¢ã¯ã»ã¹ããæ°èŠããŒãããã¯ãäœããããããŠãã¡ãã¥ãŒã®ã©ã³ã¿ã€ã ã§[GPU]ãéžæããŠãäžèšã®Pythonã®ããã°ã©ã ãå®è¡ããããææçã®Colab Proã«ç»é²ããŠãã人ã¯ãGPUã®ã§ããã ãè¯ããã·ã³(A100ãV100)ãéžæããŠå®è¡ãããšã¹ãã¬ã¹ããªãã ããã
# å¿
èŠãªã©ã€ãã©ãªãã€ã³ã¹ããŒã« --- (*1)
! pip install torch transformers accelerateimport torch
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
# 宿°ã®å®£èš
B_INST, E_INST, B_SYS, E_SYS = "[INST]", "[/INST]", "<<SYS>>\n", "\n<</SYS>>\n\n"
SYSTEM_PROMPT = "ããªãã¯èª å®ã§åªç§ãªæ¥æ¬äººã®ã¢ã·ã¹ã¿ã³ãã§ãã"
# å©çšãããã¢ãã«ãæå® --- (*2)
model_name = "elyza/ELYZA-japanese-Llama-2-7b-fast-instruct"
# ã¢ãã«ã®èªã¿èŸŒã¿
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype="auto")
if torch.cuda.is_available():
model = model.to("cuda")
# ããã³ãããå®è¡ãã --- (*3)
def ask_llm(input):
# ããã³ãããçµã¿ç«ãŠã --- (*4)
bos_token = tokenizer.bos_token
system_prompt = f"{B_SYS}{SYSTEM_PROMPT}{E_SYS}"
prompt = f"{bos_token}{B_INST} {system_prompt}{input} {E_INST} "
# ããã³ãããå®è¡ãã --- (*5)
with torch.no_grad():
token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
output_ids = model.generate(
token_ids.to(model.device),
max_new_tokens=256,
do_sample=True,
pad_token_id=tokenizer.pad_token_id,
eos_token_id=tokenizer.eos_token_id,
)
return tokenizer.decode(output_ids.tolist()[0][token_ids.size(1) :], skip_special_tokens=True)
# LLMã«å°ãã ---- (*6)
print(ask_llm("ãã ã¹ã¿ãŒãšã©ã€ãªã³ãåºäŒã£ãŠæŠããŸããåå©ããã®ã¯ã©ã¡ãã§ããïŒ"))
print("---")
print(ask_llm("æ¡å€ªéãé¬Œéæ²»ã«é£ããŠè¡ã£ãåç©ãå
šãŠç®æ¡æžãã§åæããŠãã ããã"))
print("---")
print(ask_llm("æäººãšæ¥œããæéãéãã3ã€ã®ç§èš£ãæããŠãã ããã"))
ã»ã«ã«äžèšã®ããã°ã©ã ã貌ãä»ããŠå®è¡ãããšãäžèšã®ããã«ãã©ã€ãã©ãªã®ã€ã³ã¹ããŒã«ããã³ãLLMæ¬äœãããŠã³ããŒããããŠãããã°ã©ã ã衚瀺ãããã
Colabäžã§ã¯å®è¡çµæãèªã¿èŸãã®ã§ãããã¹ããã³ããŒãããšæ¬¡ã®ããã«è¡šç€ºãããã
ãã ã¹ã¿ãŒãšã©ã€ãªã³ãåºäŒã£ãŠæŠã£ãå Žåãåå©ããã®ã¯ãã ã¹ã¿ãŒã§ãã
ã©ã€ãªã³ã¯èé£ã§ããããã ã¹ã¿ãŒã¯èé£ãªã®ã§ãèé£ã®ã©ã€ãªã³ãèé£ã®ãã ã¹ã¿ãŒãåãã®ã¯å®¹æã§ãã
---
æ¡ããçãŸããæ¡å€ªéãé¬Œéæ²»ã«é£ããŠè¡ã£ãåç©ã¯ã次ã®éãã§ãã
- ããž
- ã¢ã°ã©
- ã¿ãã
- ããžãã©ç«
- ãŠãµã®
- ããžãã
- ã«ã¢ãã©ãŒãžã¥ãã³ã
- 鬌
---
æäººãšæ¥œããæéãéãã3ã€ã®ç§èš£ã玹ä»ããŸãã
1. çžæã®è©±ãããèã: çžæã®è©±ãããèãããšã§ãçžæã®èå³ãããå
容ã®è©±ãããããšãã§ããŸãããŸããçžæã®è©±ãããèãããšã§ãçžæã®æ°æã¡ãçè§£ã§ããããè¯ãé¢ä¿ãç¯ãããšãã§ããŸãã
2. çžæã®å¥œã¿ãèå³ãææ¡ãã: çžæã®å¥œã¿ãèå³ãææ¡ããããšã§ãçžæãæ¥œãããæéãéããããšãã§ããŸãããŸããçžæã®å¥œã¿ãèå³ãææ¡ããããšã§ãçžæããã®ãã¬ãŒã³ããé£äºã®éžæã«ã掻ããããšãã§ããŸãã
3. èªåèªèº«ã楜ãã: èªåèªèº«ã楜ããããšã§ãçžæãšã®é¢ä¿æ§ãè¯å¥œã«ãªããŸãããŸããçžæãèªåèªèº«ã楜ããã§ããããšã§ãããè¯ãé¢ä¿ãç¯ãããšãã§ããã§ãããã
ã©ãã ããããã ã¹ã¿ãŒãšã©ã€ãªã³ã®è³ªåã«ã€ããŠã¯æ£ããçããåŸãããããæ¡å€ªéã«é¢ããŠã¯è©³ãããªãããã§ééã£ãçãã衚瀺ããããé¬Œéæ²»ã«è¡ãã®ã«é¬ŒãåæããŠãããªã©ã質åãæ£ããçè§£ããŠããªãããšãé²åããã
ãããŠãé¢çœãã®ã3ã€ç®ã®è³ªåã®çãã ãæäººãšéããç§èš£ãéåžžã«é¥èã«çããŠãããã
ã¡ãªã¿ã«ãçè ã詊ãããšãããT4ã®ãã€ã¡ã¢ãª(GPU: T4/GPU RAM: 15GB/RAM 51GB)ã§åããããšãã§ãããç¡æçã®Colabã§ã¯ãã®æã®ãã·ã³ã®å©çšç¶æ³ã«å¿ããŠå²ãæ¯ããããã·ã³ã¹ããã¯ãç°ãªãããããããŸãè¡ããªãæã¯ãColab Proã«ç»é²ãããããã®åŸç޹ä»ããå¥ã®ã¢ãã«ã詊ããŠã¿ããã
ããã§ãããã°ã©ã ã確èªããŠã¿ããã(ïŒ1)ã§ã¯ãColabäžã«LLMãåããäžã§å¿ èŠãšãªãã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããã(ïŒ2)ã§ã¯å©çšãããã¢ãã«ãæå®ããã(ïŒ3)ã§ã¯é¢æ°ask_llmãå®çŸ©ããã(ïŒ4)ã§ããã³ãããçµã¿ç«ãŠãŠ(ïŒ5)ã§å®éã«ããã³ãããå®è¡ããŠçµæãåŸãŠããããããŠã(ïŒ6)ã§ã¯(ïŒ3)ã§å®çŸ©ãã颿°ask_llmã䜿ã£ãŠLLMã«è³ªåãè¡ããããã§ã¯ã3ã€ã®è³ªåãããŠã¿ãã
ãšããã§ãå ã»ã©è©Šããã¢ãã«ã¯ã7bã(70å)ãã©ã¡ãŒã¿ã ã£ãããELYZAã§ã¯ãã®ããŠããŠã掻ãããŠããã«ãã©ã¡ãŒã¿æ°ã®å€ãã13bã(130å)ãã©ã¡ãŒã¿ã®ãã®ãå ¬éããŠããããELYZA-japanese-Llama-2-13bãã䜿ãã«ã¯ãäžèšã®ããã°ã©ã ã®(ïŒ2)ã®model_nameããelyza/ELYZA-japanese-Llama-2-13b-fast-instructãã®ããã«æžãæããã ãã ããã ãã13bã䜿ãã«ã¯ããã髿§èœãªGPUã¹ããã¯ãå¿ èŠãšãªããç°¡åãªåé¡ã§ãããã詊ããŠã¿ããã7bã§ã¯è§£ããªãã£ãåé¡ã13bã§è§£ããããã«ãªã£ãã
ãŸããç¶ãã»ã«ã«äžèšã®ãããªã³ãŒããå ¥åããŠè©ŠããŠã¿ããšãããæ¥œããç©èªãäœã£ãŠãããã
for _ in range(3):
print("---")
print(ask_llm("""
æç€º: èµ·æ¿è»¢çµã®åœ¢åŒã§å°èª¬ã®ãããããäœã£ãŠãã ããã
æä»£èæ¯: æ±æžæä»£
ããŒã¯ãŒã: å¿è
, æŠå£«, 殿æ§, å§«, ãã³, 寿åž
"""))
次ã®ç»é¢ã®ããã«ã楜ããç©èªãçæã§ããã
tokyotech-llm/Swallow-7b-instruct-hf
次ã«ã玹ä»ããã®ã¯ãæ±äº¬å·¥æ¥å€§åŠæ å ±çå·¥åŠé¢ã®å²¡åŽç ç©¶å®€ãšæšªç°ç 究宀ãåœç«ç ç©¶éçºæ³äººç£æ¥æè¡ç·åç ç©¶æã®ååç ç©¶ããŒã ã§éçºãããLLMã ããã¯ããMetaã®Llama 2ãããŒã¹ã«éçºãããã¢ãã«ã ãæ¥æ¬èªã®èªåœã远å ããŠãç¶ç¶äºååŠç¿ãè¡ã£ããšã®ããšã
äžèšåæ§ãColabã«ä»¥äžã®ã³ãŒãã貌ãä»ããŠå®è¡ããŠã¿ããã
# å¿
èŠãªããã±ãŒãžãã€ã³ã¹ããŒã«
!pip install transformers accelerate bitsandbytes
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
# ã¢ãã«åãæå® --- (*1)
model_name = "tokyotech-llm/Swallow-7b-instruct-hf"
# å®éã«ã¢ãã«ãèªã¿èŸŒã
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name, torch_dtype="auto", device_map="auto", trust_remote_code=True)
# 質åãè¡ã颿° --- (*2)
def ask_llm(text):
# ããã³ãããçµã¿ç«ãŠã
prompt = f"""
以äžã«ãããã¿ã¹ã¯ã説æããæç€ºããããŸãããªã¯ãšã¹ããé©åã«å®äºããããã®åçãèšè¿°ããŠãã ããã
### æç€º:
ãªã¯ãšã¹ããé©åã«å®äºããããã®åçãèšè¿°ããŠãã ããã
### å
¥å:
{text}
#### å¿ç:
"""
# LLMã«è³ªå
with torch.no_grad():
token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
output_ids = model.generate(
token_ids.to(model.device),
do_sample=True,
max_new_tokens=256,
)
return tokenizer.decode(output_ids[0][token_ids.size(1) :], skip_special_tokens=True)
# 質åãè¡ã
print(ask_llm("ãã ã¹ã¿ãŒãšã©ã€ãªã³ãåºäŒã£ãŠæŠããŸããåå©ããã®ã¯ã©ã¡ãã§ããïŒ"))
print("---")
print(ask_llm("æ¡å€ªéãé¬Œéæ²»ã«é£ããŠè¡ã£ãåç©ãå
šãŠç®æ¡æžãã§åæããŠãã ããã"))
print("---")
print(ask_llm("æäººãšæ¥œããæéãéãã3ã€ã®ç§èš£ãæããŠãã ããã"))
äžèšãå®è¡ããŠã¿ããšæ¬¡ã®ããã«è¡šç€ºãããŸããã
ãã ã¹ã¿ãŒãåã€å¯èœæ§ãé«ãã§ãããªããªããã©ã€ãªã³ã¯ãã ã¹ã¿ãŒã®ãµã€ãºã«æ¯ã¹ãŠå€§ããããã ã¹ã¿ãŒãéãåããåã¿ã€ããæ»æã§ããããã§ããã©ã€ãªã³ã¯ãã ã¹ã¿ãŒã«æ¯ã¹ãŠäœéãéããåããé
ããåã¿ã€ããæ»æãã§ããªãã
---
ç¬
ç¿
ããž
---
æäººãšæ¥œããæéãéãã3ã€ã®ç§èš£ã¯ã
1.çžæã®è©±ãããèã
2.çžæã«èå³ãæã€
3.çžæãç¬ããã
ã§ãã
æäººãšæ¥œããæéãéããããã«ã¯ãçžæã«èå³ãæã¡ã話ãããèããäžç·ã«æ¥œããæéãéããããšã倧åã§ãããããã®ããšãå¿ãããããšã§ããäºãã«ä¿¡é Œé¢ä¿ãç¯ããããæ·±ãé¢ä¿ãç¯ãããšãã§ããŸãã
ãªããšãSwallowã§ã¯ã2ã€ç®ã®æ¡å€ªéã®è³ªåã«ã¯çããããã®ã«ã1ã€ç®ã®ãã ã¹ã¿ãŒãšã©ã€ãªã³ã®æŠãã®çµæ«ãééããŠããã3ã€ç®ã®è³ªåã¯ELYZAãšåãã§è¯ãæãã®çãã ãïŒãã ããäœåºŠãå®è¡ããªãããŠã¿ããšã1ã€ç®ã®è³ªåã«ãæ£ããçããå Žåããã£ããïŒ
ããã°ã©ã ãèŠãŠã¿ããã(ïŒ1)ã§ã¯ã¢ãã«åãæå®ããŠLLMãèªã¿èŸŒãããããŠã(ïŒ2)ã§è³ªåãè¡ã颿°ãå®çŸ©ããããã®äžã§ã¯ãããã³ãããçµã¿ç«ãŠLLMã«è³ªåããã
ãŸããSwallowã«ã¯ã7b/13b/70bã®ã¢ãã«ãçšæãããŠããããã¡ãã®Hugging Faceã®ãµã€ãããURLããã©ãããšãã§ããã
lightblue/qarasu-14B-chat-plus-unleashed
çæAIã®ç ç©¶éçºãLLabããéå¶ããŠããæ ªåŒäŒç€ŸLightblueãå ¬éããŠããã®ããQarasuãã·ãªãŒãºã ãäžèšäºã€ã®ã¢ãã«ããMetaãå ¬éããLlama 2ãããŒã¹ã«ããŠããã®ã«å¯ŸããŠãQarasuã¯äžåœã®ã¢ãªããã°ã«ãŒãã«ãã£ãŠéçºãããQwenãšåŒã°ããLLMãããŒã¹ã«éçºãããŠãããšããã ãäžåœã¯LLMã«å¯Ÿããç ç©¶ãç±å¿ã§ãããã©ã¡ãŒã¿æ°ã®å€ãã¢ãã«ã倿°éçºãããŠããã
ããã§ã¯ããã¡ãã§å ¬éãããŠããQarasuã詊ããŠã¿ããã以äžã®ã³ãŒããColabã«è²Œãä»ããŠå®è¡ãããããã®ã¢ãã«ã¯ãV100ã§ãåãããA100ã§ãªããšå®è¡ã«æéããããã
# ããã±ãŒãžã®ã€ã³ã¹ããŒã«
!pip install transformers accelerate bitsandbytes
!pip install -U tiktoken einops transformers_stream_generator
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
import torch
# ã¢ãã«åã®æå®
model_name = "lightblue/qarasu-14B-chat-plus-unleashed"
# ã¢ãã«ã®èªã¿èŸŒã¿
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_name,
torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True)
torch.backends.cuda.enable_mem_efficient_sdp(False)
# LLMã«è³ªåãã颿°ãå®çŸ©
def ask_llm(text):
messages = [
{"role": "system", "content": "ããªãã¯AIã¢ã·ã¹ã¿ã³ãã§ãã"},
{"role": "user", "content": text}
]
# LLMã«è³ªåããŠçããåŸã
prompt = tokenizer.apply_chat_template(
conversation=messages, add_generation_prompt=True, tokenize=False)
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer)
result = pipe(prompt, max_new_tokens=100, do_sample=False, temperature=0.0, return_full_text=False)
return result[0]["generated_text"]
# 質åãè¡ã
print(ask_llm("ãã ã¹ã¿ãŒãšã©ã€ãªã³ãåºäŒã£ãŠæŠããŸããåå©ããã®ã¯ã©ã¡ãã§ããïŒ"))
print("---")
print(ask_llm("æ¡å€ªéãé¬Œéæ²»ã«é£ããŠè¡ã£ãåç©ãå
šãŠç®æ¡æžãã§åæããŠãã ããã"))
print("---")
print(ask_llm("æäººãšæ¥œããæéãéãã3ã€ã®ç§èš£ãæããŠãã ããã"))
å®è¡ãããšæ¬¡ã®ç»é¢ã®ããã«è¡šç€ºãããã
ããã¹ãã§çµæã確èªããŠã¿ããã
ãã®è³ªåã«ã¯ãããã€ãã®åææ¡ä»¶ãå¿
èŠã§ããäŸãã°ããã ã¹ã¿ãŒãšã©ã€ãªã³ãåã倧ããã§ãåãåã§æŠãå ŽåããŸãã¯ããã ã¹ã¿ãŒãã©ã€ãªã³ãæãŸããŠé£ã¹ãããšãã§ããå Žåãªã©ã§ãã
ããããäžè¬çãªç¶æ³ãèãããšãã©ã€ãªã³ãåã€å¯èœæ§ãé«ãã§ããã©ã€ãªã³ã¯ç©ãèœåãé«ãã匷åãªå¬ååãæã£ãŠããŸããäžæ¹ããã ã¹ã¿ãŒã¯å°åã®åç©ã§ãããæ»æçãªè¡åãåãããšã¯ã»ãšãã©ãããŸããã
ãã ãããã®è³ªåã¯ä»®å®ã«åºã¥ããŠãããçŸå®äžçã§ã®æŠãã¯èµ·ãããªããããæ£ç¢ºãªçãã¯ãããŸããã
---
æ¡å€ªéãé¬Œéæ²»ã«é£ããŠè¡ã£ãåç©ã¯ä»¥äžã®éãã§ãã
* çŒïŒãããã¿ïŒ
* ç«ïŒããïŒ
* é³¥ïŒãšãïŒ
* 象ïŒããïŒ
* 銬ïŒããŸïŒ
* ç¬ïŒãã¬ïŒ
* çŸå¥³ïŒã³ããïŒïŒçŸå¥³ãšåããç¬ïŒ
ãããã®åç©ãã¡ã¯ãæ¡å€ªéã®ä»²éãšããŠé¬Œéæ²»ã«åå ãã鬌ãã¡ãåãããã«æŽ»èºããŸããã
---
æäººãšæ¥œããæéãéããããã®3ã€ã®ç§èš£ã¯ä»¥äžã®éãã§ãã
1. å
±éã®èå³ãæã€ããšïŒå
±éã®è¶£å³ãèå³ãæã¡ãäžç·ã«æ¥œããããšãã§ããŸããäŸãã°ãæ ç»ã鳿¥œãã¹ããŒããªã©ããããŸãã
2. ææ
çãªã³ãã¥ãã±ãŒã·ã§ã³ã倧åã«ããããšïŒãäºãã®æ°æã¡ãçè§£ãåããçžæã®è©±ãçå£ã«èãããšã倧åã§ãããŸããæè¬ã®æ°æã¡ãäŒããããšãéèŠã§ãã
3. æ°ããäœéšãããïŒæ°ããå Žæã掻åã§åºäŒããæ°ããçµéšãããããšã§ãææé¢ä¿ãæ·±ãŸããŸããäŸãã°ãæ
è¡ãæçæå®€ãªã©ããããŸãã
ãããã®ç§èš£ãå®è·µããããšã§ãæäººãšã®æ¥œããæéãéããããšãã§ããŸãã
çããèŠããšã1ã€ç®ã®è³ªåãèŠããšãã©ã€ãªã³ãåã€ãšæ£ããçããè¿ãã€ã€ããçŸå®ã§ã¯ããåŸãªããšçããŠããã2ã€ç®ã®è³ªåã§ã¯ãæ¡å€ªéã«ã€ããŠã¯ããŸã詳ãããªãããã ããããã象ãçŸå¥³ãåºãŠããã®ãè峿·±ããç©èªãäœã£ãŠããã£ãŠã楜ãããã ã3ã€ç®ã®çãã¯ä»ã®LLMãšäŒŒããããªçããªã®ã§ãLLMãåŸæãšããåéãªã®ãããããªãã
ããã°ã©ã ãèŠããšãä»ã®äºã€ã®ã¢ãã«ãšããã»ã©éãããªãããšãåããã ããããã®ããã«ããªãŒãã³ãœãŒã¹ã§å ¬éãããŠããå€ãã®LLMã¯ãäž»ã«transformersããã±ãŒãžãå©çšããŠãããã¢ãã«åã倿Žãããã©ã¡ãŒã¿ãŒã工倫ããããšã§å®è¡ã§ããã
ãŸãšã
以äžãä»åã¯3ã€ã®æ¥æ¬èªLLMã詊ããŠãæªæ¥ã«æãã銳ããŠã¿ããã©ã®ã¢ãã«ãããŒãã§ã¯ããšããèš³ã§ã¯ãªããã®ã®ãåºæ¬çãªè³ªåã«å¯ŸããŠããããªãã®çããè¿ãããšãã§ããŠããã
ä»åã¯ãèªè ã«ãäœäºç®ã§è©Šãããšã®ã§ããã¬ãã«ã®ãã®(Colabã®V100ã§åããããã®)ãéžãã§å®è¡ããŠã¿ãããæè¿ã¯ãããã«ãã©ã¡ãŒã¿ãŒæ°ã®å€ãé«åºŠãªã¢ãã«ãå¢ããŠããããŸããããã§ã¯ã3ã€ã®ã¢ãã«ãåãäžããããä»ã«ã髿§èœãªã¢ãã«ãããããç»å ŽããŠãããä»åŸãããããããªã¢ãããŒããç»å Žãã工倫ãè¡ãããŠããããšã ããããšãŠã楜ãã¿ã ã
èªç±åããã°ã©ããŒããããã¯ãã©ã«ãŠãããã°ã©ãã³ã°ã®æ¥œãããäŒããæŽ»åãããŠããã代衚äœã«ãæ¥æ¬èªããã°ã©ãã³ã°èšèªããªã§ããã ãããã¹ã鳿¥œããµã¯ã©ããªã©ã2001幎ãªã³ã©ã€ã³ãœãã倧è³å ¥è³ã2004幎床æªèžãŠãŒã¹ ã¹ãŒããŒã¯ãªãšãŒã¿èªå®ã2010幎 OSSè²¢ç®è ç« åè³ãæè¡æžãå€ãå·çããŠãããçŽè¿ã§ã¯ããå®è·µåãã¢ãããã Pythonã«ããã¢ã«ãŽãªãºã ã®æç§æž(ãã€ããåºç)ããã·ãŽããã¯ãã©ã PythonèªååŠçã®æç§æž(ãã€ããåºç)ããããã«äœ¿ãã!æ¥åã§å®è·µã§ãã! Pythonã«ããAIã»æ©æ¢°åŠç¿ã»æ·±å±€åŠç¿ã¢ããªã®ã€ããæ¹ TensorFlow2察å¿(ãœã·ã )ãããã³ã¬ã§ãã£ããåŠã¶Python(ãã€ããåºç)ããªã©ã







