|
--- |
|
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 |