2023-02-04
T5を強化したモデルであるFlan-t5を動かしてみます。
FlanはFinetunedLAnguage Netの略。
ちなみに、Flanはカスタードプリンとかプリンの意味らしい。だからプリンのイラストあったのか
https://huggingface.co/docs/transformers/model_doc/flan-t5
ライブラリはこの辺を入れておく
!pip install torch transformers sentencepiece
modelのロード
google colaboratoryでは、xlは無理だったので、largeを試す。
from transformers import T5Tokenizer, AutoModelForSeq2SeqLM
# model_name = "google/flan-t5-small"
model_name = "google/flan-t5-large"
# model_name = "google/flan-t5-xl"
tokenizer = T5Tokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
生成タスク
色々と生成してみる
def gen(prompt):
input = tokenizer.encode(prompt, return_tensors="pt")
generate_kwargs = {
'top_p': 0.95,
'top_k': 50,
'do_sample':True
}
output = model.generate(input, **generate_kwargs)
result = tokenizer.batch_decode(output, skip_special_tokens=True)
print(result)
prompt = """A step by step recipe to make a sandwich."""
gen(prompt)
>> ['Cut a hamburger in half. Lay a tortilla open on the serving dish. Fill it']
なんとなくあってそう。
prompt = "What is the highest mountain in the world?"
gen(prompt)
>> ['mount everest']
これは大丈夫
翻訳タスク
multi languageらしいので試してみる。
prompt = """Translate to German: Good morning"""
get(prompt)
>> ['Der frankreichischer Sonntag']
googleの翻訳によると、The French Sunday
らしい。なんかおしい。
prompt = "Translate to English: Guten Morgen"
get(prompt)
>> ['Good morning!']
逆はいける、と
翻訳タスク2
prompt = "Translate to Japanese: Good morning"
gen(prompt)
>> ['']
日本語はしゃべれないっぽい
prompt = "Translate to English: おはようございます"
gen(prompt)
>> ['No']
逆はなんか拒否されるw