File size: 4,141 Bytes
591d520 2e12470 75b850e 2e12470 75b850e 20a9b55 75b850e 20a9b55 4592c1c 2e12470 32cffe1 2e12470 4592c1c 2e12470 4592c1c 2e12470 4592c1c 2e12470 4592c1c 2e12470 4592c1c 2e12470 4592c1c 2e12470 4592c1c 2e12470 4592c1c 2e12470 4592c1c 2e12470 4592c1c 2e12470 4592c1c 2e12470 4592c1c 2e12470 4592c1c 2e12470 4592c1c 2e12470 4592c1c 2e12470 4592c1c |
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 |
---
base_model: llm-jp/llm-jp-3-13b
tags:
- text-generation-inference
- transformers
- unsloth
- llama
- trl
license: apache-2.0
language:
- en
---
# Uploaded model
- **Developed by:** ppapppapppap
- **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)
# 概要
[松尾研大規模言語モデル講座2024](https://weblab.t.u-tokyo.ac.jp/lecture/course-list/large-language-model/)のコンペ用の提出モデル作成の一環として作成・公開しています。
Hugging Face上のモデル(llm-jp/llm-jp-3-13b)を4bit量子化したモデルです。
学習データ等の詳細については元モデルの概要をご確認ください。
以下に、上記のモデルを用いて入力データ(elyza-tasks-100-TV_0.jsonl)を推論し、その結果を.jsonlのファイル形式で出力するコードを記します。
# 前提条件
- Python環境があること(例:Google Colab)
- Hugging Faceのアクセストークン (HF_TOKEN) が取得済みであること
# セットアップ
1. 必要なライブラリのインストールを行います。
```bash
!pip install -U bitsandbytes
!pip install -U transformers
!pip install -U accelerate
!pip install -U datasets
!pip install ipywidgets --upgrade
```
# 使用方法
以下は、Google Colabにて実行する際のモデルの基本的な使用例です
```python
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
BitsAndBytesConfig,
)
import torch
from tqdm import tqdm
import json
# Hugging Faceで取得したTokenをこちらに貼る。
HF_TOKEN = "your-token"
# 自分の作成したモデルのIDをこちらに貼る。
model_name = "your_HuggingFace_username/llm-jp-3-13b-your_model_name"
# QLoRA用の設定
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=False,
)
# モデルの読み込み
model = AutoModelForCausalLM.from_pretrained(
model_name,
quantization_config=bnb_config,
device_map="auto",
token = HF_TOKEN
)
# トークナイザの読み込み
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True, token = HF_TOKEN)
```
# 入力データの準備
`./elyza-tasks-100-TV_0.jsonl`というファイルからデータセットをロードします。
```
# データセットの読み込み。
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 = ""
```
# 推論の実行
```
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)
with torch.no_grad():
outputs = model.generate(
tokenized_input,
max_new_tokens=100,
do_sample=False,
repetition_penalty=1.2
)[0]
output = tokenizer.decode(outputs[tokenized_input.size(1):], skip_special_tokens=True)
# 結果を保存
results.append({"task_id": data["task_id"], "input": input, "output": output})
```
# 出力の保存
最後に、model_nameをベースにしたファイル名で.jsonl形式の出力ファイルを保存します。
```
import re
model_name = re.sub(".*/", "", model_name)
with open(f"./{model_name}-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')
```
以上の手順で、`{model_name}-outputs.jsonl`というファイルに推論結果が書き出されます。 |