
llm-jpãColabã§è©Šã
å°ãåºé
ããŠããŸã£ãããæ°ãã«ãªãªãŒã¹ãããæ¥æ¬èª LLMãllm-jpãã詊ããŠã¿ãããšæããŸãã
è€æ°ããŒãžã§ã³ããããŸããããjaster ãå«ããã®ã¯åçããã£ããªãããšããããšã Twitter ã§èããæ°ãããã®ã§ãä»åã¯ãããå«ãŸãªããã®ã詊ããŠã¿ãããšæããŸãã
Colabã§è©ŠããŠã¿ã
ã¢ãã«ã®ããŠã³ããŒã
!pip install transformers accelerate sentencepiece --quiet%time
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model_name = "llm-jp/llm-jp-13b-instruct-full-dolly-oasst-v1.0"
tokenizer = AutoTokenizer.from_pretrained(model_name, padding_side='left')
model = AutoModelForCausalLM.from_pretrained(
model_name,
trust_remote_code=True,
device_map="cuda:0",
torch_dtype=torch.float16,
).eval()tokenizer.vocab_size50570
çæã®ãã¹ã
generation_config = {
"max_new_tokens": 256,
"do_sample": True,
"temperature": 0.7,
"top_p": 0.95,
}
text = "èªç¶èšèªåŠçãšã¯äœã"
text = text + "### åçïŒ"
with torch.no_grad():
inputs = tokenizer(text, add_special_tokens=False, return_tensors="pt").to(model.device)
outputs = model.generate(
**inputs,
**generation_config,
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))### åçïŒèªç¶èšèªåŠçïŒNLPïŒã¯ãã³ã³ãã¥ãŒã¿ã»ããã°ã©ã ã人éã®èšèªãåŠçããããã®ããã»ã¹ã§ãããèªç¶èšèªåŠçïŒNLPïŒã¯ãã³ã³ãã¥ãŒã¿ã»ããã°ã©ã ã人éã®èšèªãåŠçããããã®ããã»ã¹ã§ãããNLPã¯ãã³ã³ãã¥ãŒã¿ã»ããã°ã©ã ã人éã®èšèªãåŠçããããã®ããã»ã¹ã§ããããã®ããã»ã¹ã«ã¯ãããã¹ãã®åæãããã¹ãã®èŠçŽãããã¹ãã®çæãããã¹ãã®ç¿»èš³ãããã¹ãã®èŠçŽãªã©ãå«ãŸãããNLPã¯ãé³å£°èªèãããã¹ãèŠçŽã翻蚳ãªã©ã®ã¢ããªã±ãŒã·ã§ã³ã«äœ¿çšãããŠããã
ç¡äºçæã§ããŸããã
ãã³ãã¬ãŒãã®æºå
çæã楜ã«ãªãããã«ãã³ãã¬ãŒããæºåããŸãã
def format_prompt(
prompt: str,
system_prompt: str = "" # ä»åç¹ã«å¿
èŠãªã
) -> str:
prompt = prompt + "### åçïŒ "
prompt = system_prompt + prompt
return prompt
format_prompt("ïŒïŒïŒã¯äœïŒ")'ïŒïŒïŒã¯äœïŒ### åçïŒ '
def ask(
prompt: str,
system_prompt: str | None = "",
**kwargs
) -> str:
generation_config = {
"max_new_tokens": 128,
"do_sample": True,
"temperature": 0.7,
"top_p": 0.95,
}
generation_config.update(kwargs)
with torch.no_grad():
prompt = format_prompt(prompt, system_prompt)
inputs = tokenizer(
prompt,
add_special_tokens=False,
return_tensors='pt',
).to(model.device)
# .to(model.device)
outputs = model.generate(
**inputs,
**generation_config,
)
output = tokenizer.decode(outputs[0])
print(output)
return output
ask("å
æ¬æšåšèŸºã®èгå
ã¹ããããæããŠãã ããã");å æ¬æšåšèŸºã®èгå ã¹ããããæããŠãã ããã### åçïŒ å æ¬æšãã«ãºãšæ±äº¬ãããã¿ãŠã³ã¯ãæ±äº¬ã®äžå¿çãªã©ã³ãããŒã¯ãšãªã£ãŠããã<EOD|LLM-jp>
質åããŠã¿ã
è²ã ãšè³ªåããŠã¿ãŸãã
text = """
ãããã5ã€ãããŸãããããã2ã€ã®ããããåãé€ããŸãããæ®ãã®ãããã®æ°ã¯äœåã§ãããïŒ
""".strip()
ask(text);### åçïŒ 5-2=3 çãã¯3ã€<EOD|LLM-jp>
text = """ããããšããŒã«ã®äž¡æ¹ãè²·ããš1100åã§ãããããã¯ããŒã«ããã1000åé«ãã§ããããŒã«ã¯ãããã§ãããïŒ""".strip()
ask(prompt=text);### åçïŒ ããŒã«ã¯1å100åããããã¯1æ¬1100åã<EOD|LLM-jp>
text = """
åŒæ°kãåããè¿ãå€ãšããŠãã£ããããæ°åã«ãããkåç®ã®å€ãè¿ãPython颿°ãæžããŠãã ããã
""".strip()
ask(prompt=text);### åçïŒ ``python def fib(n): if n < 2: return 0 return n + fib(n - 1) ```` ``` >>> fib(5) # ãã£ããããæ°åã®5çªç®ã®å€ã¯13 ```<EOD|LLM-jp>
text = """
äžèšã®è±èªãæ¥æ¬èªã«ç¿»èš³ããŠãã ããã
`There were 3 apples and 2 oranges. How many fruits were there in total?`
""".strip()
ask(prompt=text);### åçïŒ åèšã§4ã€ã®æç©ããã£ãã<EOD|LLM-jp>
text = """
äžèšã®æç« ãèŠçŽããŠãã ããã
``
ãéå ±ããã·ã¢ææ¢æ»æ©ãã«ã 25ããæã«è¡çª ãæ¶æ»
ããããã¹ã³ã¹ã¢ã¹çºè¡š
æã«åãã£ãŠãããã·ã¢ã®ç¡äººæ¢æ»æ©ãã«ã 25ããæã«è¡çªããããšãåãã£ãããã·ã¢ã®åœå¶å®å®äŒæ¥ãã¹ã³ã¹ã¢ã¹ã¯å
ã»ã©ããæã«è¡çªããæ¶æ»
ããããšæããã«ãããæé¢çéžåã®è»éã«ç§»è¡äžãå¶åŸ¡äžèœãšãªã£ããšããã
æ¢æ»æ©ã¯ 21 æ¥ã«æã®å極ä»è¿ã«çéžäºå®ã ã£ãã
``
""".strip()
ask(prompt=text);### åçïŒ æã«è¡çªããã<EOD|LLM-jp>
text = """
ããªãã¯åéãããã§ããã§ããã ããŠãŒã¶ãŒãèŠªè¿æãæããããããæ¥ããŠãã ããã
ãŠãŒã¶ãŒ: 仿¥ãã€ããã¯ãã«ãããããŒãããŒäººçã®æå³ã£ãŠäœãªãã ãããããŒã
ã¢ã·ã¹ã¿ã³ã:
""".strip()
ask(prompt=text);### åçïŒ ãªãããªãã¯ã¯ãã«ãããã®ã§ããïŒ<EOD|LLM-jp>
text = """
### Question
There was a cookie on the table.
Tom entered the room.
The cookie disappeared.
What was likely to have happened?
""".strip()
ask(prompt=text);### åçïŒ ãã ãããŒãã«ã®äžã®ã¯ãããŒãé£ã¹ãã<EOD|LLM-jp>
è±èªã®è³ªåãæ¥æ¬èªã§è¿ããŠããããã§ããã
text = """
### 質å
ããŒãã«ã«ã¯ãããŒããããŠãããŸããã
倪éãéšå±ã«å
¥ããŸããã
ã¯ãããŒãæ¶ããŸããã
äœãèµ·ããå¯èœæ§ãé«ãã§ããïŒ
""".strip()
ask(prompt=text);### åçïŒ ã¯ãããŒã倪éã®éšå±ããæ¶ãããšããããšã¯ã倪éãã¯ãããŒãé£ã¹ãããšãæå³ããã倪éãã¯ãããŒãé£ã¹ããªãã倪éãã¯ãããŒã倪éã®éšå±ã«çœ®ããããšã«ãªãã<EOD|LLM-jp>
ð€
text = """
å¿
ãé¢è¥¿åŒã§çããŠãã ããã
ããçŒãã®ã¬ã·ããæããŠãã ããã
""".strip()
ask(prompt=text);### åçïŒ ãã¡ããïŒææãšäœãæ¹ã¯ä»¥äžã®éãïŒ
* ã¿ã³
* å°éºŠç²
* ã¿ã³ãœãŒã¹ïŒã奜ã¿ã§ïŒ
* 倩ãã
* ãœãŒã¹
* ããšããŒãº
* éã®ã
ã¹ããã1ïŒã¿ã³ãåããã¿ã³ã¯1cmå¹ ã«åãã
ã¹ããã2ïŒå°éºŠç²ãããŒã«ã«å ¥ããæ°Žãå°ããã€å ããŠæ··ããã
ã¹ããã3ïŒã¿ã³ãå°éºŠç²ã«å ããã¿ã³ãšå°éºŠç²ããªãããŸã§æ··ããã
ã¹ããã4ïŒå°éºŠç²ã«å€©ãããå ããããã«æ··ããã
é¢è¥¿åŒæã¯ãªãã§ãããåé ã§ããªãè¯ãè¿äºãããŠãããŸããã
ãŸãšã
æµç³æ¥æ¬èªç¹åã®ã¢ãã«ã ããã£ãŠæ¥æ¬èªã¯èªç¶ãªåœ¢ã§çæã§ããŸãããæ¥æ¬ã«é¢ããåºæ¬çãªç¥èãåããŠããã®ã¯å¬ããã§ããã
以äžããèªã¿ããã ãããããšãããããŸããå°ãã§ãåèã«ãªãã°ãšæããŸãã
ãã䌌ããããªã³ã³ãã³ãã«èå³ãããã°ããã©ããŒããŠããã ãããšå¬ããã§ãïŒ
https://twitter.com/alexweberk
ä»åã® Colab ã¯ãã¡ãã§ãïŒ
#æ©æ¢°åŠç¿ #AI #èªç¶èšèªåŠç #python #LLM
åè
ããŸã
ä»åã®èšäºå 容ã§çæãããã«ããŒç»ååè£ãèšäºå 容ãChatGPTã«çªã£èŸŒã¿ãããã°èšäºã®ã«ããŒç»åäœæããŠ("Generate a cover image for the following blog content:")ãã§çæã楜ããæä»£ã§ãã



