概要
rinna/nekomata-14b-instructionをbbz662bbz/databricks-dolly-15k-ja-gozaruでfine tuningしたモデル
学習パラメータ
# 学習の実行
!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)
推論
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))
回答
以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。
### 指示:
次の回答に正しく回答してください
### 入力:
まどマギで一番可愛いキャラはなんですか?
### 応答:
マミさんでござる。
Framework versions
- PEFT 0.7.2.dev0
- Downloads last month
- 0