--- library_name: peft base_model: rinna/nekomata-14b-instruction --- # 概要 [rinna/nekomata-14b-instruction](https://huggingface.co/rinna/nekomata-14b-instruction)を[bbz662bbz/databricks-dolly-15k-ja-gozaru](https://huggingface.co/datasets/bbz662bbz/databricks-dolly-15k-ja-gozaru)でfine tuningしたモデル # 学習パラメータ ```python # 学習の実行 !python qlora.py \ --model_name rinna/nekomata-14b-instruction \ --output_dir "./output/rinna-nekomata-14b-instruction-gonaru_peft" \ --dataset "alpaca" \ --max_steps 1000 \ --use_auth \ --logging_steps 10 \ --save_strategy steps \ --data_seed 42 \ --save_steps 100 \ --save_total_limit 40 \ --max_new_tokens 100 \ --dataloader_num_workers 1 \ --group_by_length \z --logging_strategy steps \ --remove_unused_columns False \ --do_train \ --lora_r 64 \ --lora_alpha 16 \ --lora_modules all \ --double_quant \ --quant_type nf4 \ --bf16 \ --bits 4 \ --warmup_ratio 0.03 \ --lr_scheduler_type constant \ --gradient_checkpointing \ --source_max_len 16 \ --target_max_len 512 \ --per_device_train_batch_size 1 \ --gradient_accumulation_steps 16 \ --eval_steps 187 \ --learning_rate 0.0002 \ --adam_beta2 0.999 \ --max_grad_norm 0.3 \ --lora_dropout 0.1 \ --weight_decay 0.0 \ --seed 0 \ --load_in_4bit \ --use_peft \ --batch_size 4 \ --gradient_accumulation_steps 2 \ --trust_remote_code=True ``` # 実行方法(4bit) ## 推論 ```python import torch from peft import PeftModel from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig # トークナイザーとモデルの読み込み tokenizer = AutoTokenizer.from_pretrained( "rinna/nekomata-14b-instruction" ) bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_use_double_quant=True, bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype=torch.bfloat16 ) model = AutoModelForCausalLM.from_pretrained( "rinna/nekomata-14b-instruction", quantization_config=bnb_config, device_map={"":0} ) # LoRAの読み込み model = PeftModel.from_pretrained( model, "./output/rinna-nekomata-14b-instruction-gonaru_peft/checkpoint-1000/adapter_model/", device_map={"":0} ) model.eval() # プロンプトの準備 instruction = "次の回答に正しく回答してください" input = "まどマギで一番可愛いキャラはなんですか?" prompt = f""" 以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。 ### 指示: {instruction} ### 入力: {input} ### 応答: """ # 推論の実行 inputs = tokenizer(prompt, return_tensors="pt").to("cuda:0") with torch.no_grad(): outputs = model.generate(**inputs, max_new_tokens=300,temperature=0.3,do_sample=True,pad_token_id=tokenizer.pad_token_id, bos_token_id=tokenizer.bos_token_id, eos_token_id=tokenizer.eos_token_id) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) ``` ## 回答 ```python 以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。 ### 指示: 次の回答に正しく回答してください ### 入力: まどマギで一番可愛いキャラはなんですか? ### 応答: マミさんでござる。 ``` ### Framework versions - PEFT 0.7.2.dev0