File size: 6,889 Bytes
ba81b29 a73a8b3 ba81b29 47803f7 c09993b 85b352a 3b019d3 1c56d20 ed61ac6 c09993b 1c56d20 0f20590 c09993b 0f20590 1c56d20 ed61ac6 c09993b 1c56d20 c09993b 1c56d20 ed61ac6 c09993b ed61ac6 1c56d20 ed61ac6 85b352a 1c56d20 85b352a 1c56d20 ed61ac6 85b352a 1c56d20 85b352a 1c56d20 ed61ac6 1c56d20 ed61ac6 1c56d20 ed61ac6 1c56d20 ed61ac6 1c56d20 ed61ac6 1c56d20 ed61ac6 1c56d20 47803f7 85b352a ed61ac6 1c56d20 85b352a ed61ac6 1c56d20 ed61ac6 1c56d20 ed61ac6 1c56d20 ed61ac6 1c56d20 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 |
---
base_model: llm-jp/llm-jp-3-13b
tags:
- text-generation-inference
- transformers
- unsloth
- llama
- trl
license: apache-2.0
language:
- en
- ja
---
# Uploaded model
- **Developed by:** aino813
- **License:** apache-2.0
- **Finetuned from model :** llm-jp/llm-jp-3-13b
This llama model was trained 2x faster with [Unsloth](https://github.com/unslothai/unsloth) and Huggingface's TRL library.
[<img src="https://raw.githubusercontent.com/unslothai/unsloth/main/images/unsloth%20made%20with%20love.png" width="200"/>](https://github.com/unslothai/unsloth)
# 🧐 Instruction Tuning
- このモデルは、以下のデータを用いて指示チューニング(Instruction Tuning)を行いました。
- 指示チューニングにあたっては、QLoRAを使っています。
## 🤩 Datasets
| データセット名 | 言語 | 件数 | 主な用途 |
|-----------------------------------|--------|--------------|------------------------------------------|
| databricks-dolly-15k | 英語 | 約15,000件 | 指示チューニング用 |
| databricks-dolly-15k-ja | 日本語 | 約15,000件 | 日本語指示チューニング用 |
| oasst1-21k-en | 英語 | 約21,000件 | 会話モデルや指示応答モデルのトレーニング |
| oasst1-21k-ja | 日本語 | 約21,000件 | 日本語会話モデルや指示応答モデルのトレーニング |
| ichikara-instruction-003-001 | 日本語 | 2,903件 | 日本語特化 |
1. **databricks-dolly-15k**
- Databricksが公開した、指示応答形式のデータセット。
- 約15,000件の英語の指示・応答ペアを含む。
- 質問応答、説明、生成タスクなどが含まれる。
2. **databricks-dolly-15k-ja**
- databricks-dolly-15kを日本語に翻訳したデータセット。
- 英語の指示・応答ペアを高品質な日本語翻訳に変換。
- 総件数: 約15000件。
3. **oasst1-21k-en**
- Open Assistantが公開した、英語の指示応答データセット。
- 約21,000件の英語データを含む。
- コミュニティから収集したデータで、多様なタスクや質問形式が含まれる。
4. **oasst1-21k-ja**
- oasst1-21k-enを日本語に翻訳したバージョン。
- 多様なタスクや指示形式に対応。
- 総件数: 約21,000件
5. **ichikara-instruction-003-001**
- LLMのための日本語のシングルターン指示応答データセット。
- 約2,903件の高品質な日本語データを含む。
# Parameter
| パラメータ名 | 値 |
|--------------------------------------|----------------------------------------|
| LoRA_r | 128 |
| LoRA_alpha | 256 |
| LoRA_dropout | 0.05 |
| per_device_train_batch_size | 1 |
| gradient_accumulation_steps | 16 |
| max_steps | 150 |
| warmup_ratio | 0.1 |
| num_train_epochs | 2 |
| learning_rate | 0.0001 |
| embedding_learning_rate | 0.00001 |
# 😚 License
Apache-2.0 ライセンスに基づいて提供されています。
Apache License, Version 2.0
# 😉 Usage
#### ライブラリーのインストール・アップグレード
```
!pip install -U bitsandbytes
!pip install -U transformers
!pip install -U accelerate
!pip install -U datasets
!pip install -U peft
```
#### ライブラリーのインポート
```python
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
BitsAndBytesConfig,
)
from peft import PeftModel
import torch
from tqdm import tqdm
import json
```
#### HF_TOKENの設定
```
HF_TOKEN = "******************"
```
#### モデルidの指定
元のモデルとLoRAアダプターを指定します。LoRAアダプターのIDは本レポジトリになります。
```python
# omnicampas環境を使用する場合
model_id = "models/models--llm-jp--llm-jp-3-13b/snapshots/cd3823f4c1fcbb0ad2e2af46036ab1b0ca13192a"
# omnicampas以外の環境を使用する場合(以下のコメントアウトを外す)
# model_id = "llm-jp/llm-jp-3-13b"
adapter_id = "aino813/llm-jp-3-13b-241213-SFT-dolly-oasst-ichikara-final_lora"
```
#### 量子化の設定
```python
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
)
```
#### 元のモデルとトークナイザーの読み込み
```python
model = AutoModelForCausalLM.from_pretrained(
model_id,
quantization_config=bnb_config,
device_map="auto",
token = HF_TOKEN
)
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True, token = HF_TOKEN)
```
#### 元のモデルとLoRAアダプターの統合
```python
model = PeftModel.from_pretrained(model, adapter_id, token = HF_TOKEN)
```
#### 推論用データセットの読み込み
```python
datasets = []
with open("./elyza-tasks-100-TV_0.jsonl", "r") as f:
item = ""
for line in f:
line = line.strip()
item += line
if item.endswith("}"):
datasets.append(json.loads(item))
item = ""
```
#### 推論
```python
results = []
for data in tqdm(datasets):
input = data["input"]
prompt = f"""### 指示
{input}
### 回答
"""
tokenized_input = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt").to(model.device)
attention_mask = torch.ones_like(tokenized_input)
with torch.no_grad():
outputs = model.generate(
tokenized_input,
attention_mask=attention_mask,
max_new_tokens=1024,
do_sample=False,
repetition_penalty=1.2,
pad_token_id=tokenizer.eos_token_id
)[0]
output = tokenizer.decode(outputs[tokenized_input.size(1):], skip_special_tokens=True)
results.append({"task_id": data["task_id"], "input": input, "output": output})
```
#### Jsonlファイルの作成
```python
import re
jsonl_id = re.sub(".*/", "", adapter_id)
with open(f"./{jsonl_id}-outputs.jsonl", 'w', encoding='utf-8') as f:
for result in results:
json.dump(result, f, ensure_ascii=False) # ensure_ascii=False for handling non-ASCII characters
f.write('\n')
``` |