--- license: mit datasets: - SkelterLabsInc/JaQuAD language: - ja --- # Model Card for Model ID このモデルはrinna/japanese-gpt-1bをベースモデルとして、 コンテキストからの抽出型QAと、解答を新たなコンテキストでリファインするための学習を行ったモデルです。 gpt-index(v0.2.5)で利用することを前提に学習をしており、通常のQAタスクで使用することは想定していません。 利用例はこのリポジトリを参照してください。 https://github.com/oshizo/gpt_index_japanese_trial # Model Details モデルは2種類のpromptテンプレートに対してQA応答するように訓練されています。 ```python DEFAULT_PROMPT = """ 文脈情報は以下です。 --- {context_str} --- 事前知識ではなく、文脈情報を参考に質問に答えてください。:{query_str} """ ``` ```python REFINE_PROMPT = """ 質問は以下です。:{query_str} すでに答えの候補があります。:{existing_answer} 必要な場合のみ、以下の文脈情報を使ってこの答えを改良することができます。 --- {context_msg} --- この文脈情報により、元の答えを改良して質問に答えてください。 文脈情報が有用でない場合は元の答えをそのまま返してください。 """ ``` ```python import torch from transformers import T5Tokenizer, AutoModelForCausalLM tokenizer = T5Tokenizer.from_pretrained("rinna/japanese-gpt-1b") model = AutoModelForCausalLM.from_pretrained("oshizo/qa-refine-japanese-gpt-1b").to("cuda") prompt = DEFAULT_PROMPT.format( context_str="山路を登りながら、こう考えた。智に働けば角が立つ。情に棹させば流される。意地を通せば窮屈だ。とかくに人の世は住みにくい。住みにくさが高じると、安い所へ引き越したくなる。どこへ越しても住みにくいと悟った時、詩が生れて、画が出来る。", query_str="意地を通すとどうなってしまう?" ) token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt") n = len(token_ids[0]) with torch.no_grad(): output_ids = model.generate( token_ids.to(model.device), max_length=n+100, min_length=n+2, do_sample=False, pad_token_id=tokenizer.pad_token_id, bos_token_id=tokenizer.bos_token_id, eos_token_id=tokenizer.eos_token_id, ) output = tokenizer.decode(output_ids.tolist()[0][n:]) output.replace("", "") # -> 窮屈 ``` # Training Details JGLUE/JSQuADとJaQuADを用いて、コンテキストからの抽出型QAと、解答を新たなコンテキストでリファインするための学習を行いました。 学習スクリプトについてはこのリポジトリを参照してください。 https://github.com/oshizo/gpt_index_japanese_trial Google Colab Pro A100 で約3.5時間、9.9kステップ学習しました。