ohtaman's picture
Librarian Bot: Add base_model information to model (#1)
2621e83
metadata
language:
  - ja
license: apache-2.0
library_name: peft
datasets:
  - ohtaman/kokkai2022
pipeline_tag: text-generation
inference: false
base_model: tiiuae/falcon-7b
Open In Colab

This model learned the proceedings of the Japanese parliament in 2022. The dataset is collected using National Diet Library's Search API. This model was build for a hackerthon event, 第1回大規模言語モデル分散学習ハッカソン (#ABCILLM), as an example of training which used multiple GPUs or multiple nodes.

An example input is as follows:

# question
麻生太郎

増税が必要とお考えでしょうか?
# answer
鈴木 俊一

and the respons is:

「財政民主主義」のためには、国庫負担を引き下げるならば、企業の賃上げを実現するためにも、消費者物価の高騰対策等を含めて、経済対策を行い、成長と分配の好循環を実珉化することが重要でございます。
 今回の補正予算案においては、新型コロナウイルス感染症対応事業助成金及び電気料金支援交付金の拡充を盛り込んでおります。それ以外にも、令和四年度一般会計予備費二千五百億円を活用し、政府全体の方針を踏まえ、各種制度改革や人員削減等を通じて、様々な取組を進めてまいりますが、具体的な内容は決定しておりず、その際には、財源不足に関する議論を重ねていく中で検討してまいる所存です。

次に、賃上賃下の問題について申し上げます。

私自身は、賃金水準の向上を目指すことは大変重要であり、

Training procedure

Finetune tiiuae/falcon-7b with ohtaman/kokkai2022(currentry, private) dataset using LoRA with following configurations. It took 2:34:32 with 16 V-nodes (V100 x 64).

param value
r 4
lora_alpha 2
target_modules query_key_value
dense
dense_h_to_4h
dense_4h_to_h
lora_dropout 0.01
bias None
task_type CAUSAL_LM
optimizer AdamW
lr 4e-4

the prompt template is as follows:

# question
{questioner}

{question_text}

# answer
{answerer}

{answer_text}

Example Code

You can try the model with Colaboratory . No Pro or Pro+ is needed. The typical code to generate texts with this model is as follows:

tokenizer = transformers.AutoTokenizer.from_pretrained(base_model_name, trust_remote_code=True)
base_model = transformers.AutoModelForCausalLM.from_pretrained(base_model_name, device_map="auto", torch_dtype=torch.bfloat16, trust_remote_code=True)
peft_model = peft.PeftModelForCausalLM.from_pretrained(base_model, peft_model_name, torch_dtype=torch.bfloat16)


prompt = "# question\n麻生太郎\n\n増税が必要とお考えでしょうか?\n# answer\n鈴木 俊一\n\n"
input_tokens = tokenizer(prompt, return_tensors="pt").to(peft_model.device)
input_length = input_tokens.input_ids.shape[1]

with torch.no_grad():
    outputs = peft_model.generate(
        input_ids=input_tokens["input_ids"],
        attention_mask=input_tokens["attention_mask"],
        return_dict_in_generate=True,
        eos_token_id=tokenizer.eos_token_id,
        pad_token_id=tokenizer.pad_token_id,
        max_length=max_length,
        temperature=0.7,
        top_p=0.9,
        repetition_penalty=1.05,
    )
    output_tokens = outputs.sequences[0, input_length:-1]

print(tokenizer.decode(output_tokens))