File size: 3,335 Bytes
99a3803 e0303ec 99a3803 e0303ec 99a3803 |
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 |
---
base_model: llm-jp/llm-jp-3-13b
library_name: peft
---
# モデルカード: llm-jp/llm-jp-3-13b
## モデル概要
このモデルは、松尾研LLM講座の終了課題の提出用のモデルです。
- **開発者:** [masakiai]
- **ファインチューニング元モデル:** [llm-jp/llm-jp-3-13b]
- **対応言語:** 日本語
- **ライセンス:** [apache-2.0]
## モデルソース
- **リポジトリ:** [https://huggingface.co/masakiai/llm-jp-3-13b-finetune]
---
## 使用方法
### 以下は、elyza-tasks-100-TV-0.jsonlの回答のためのコードです
```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
import json
from tqdm import tqdm
import os
import re
# 環境変数の設定
HF_TOKEN = os.getenv("HF_TOKEN")
model_name = "masakiai/llm-jp-3-13b-finetune"
ELYZA_TASKS_100_TV_0_JSONL_PATH = "./elyza-tasks-100-TV_0.jsonl"
# 8ビット量子化の設定
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
)
# モデルの読み込み
model = AutoModelForCausalLM.from_pretrained(
model_name,
quantization_config=bnb_config,
device_map="auto"
)
# トークナイザーの読み込み
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
# データセットの読み込み
datasets = []
with open(ELYZA_TASKS_100_TV_0_JSONL_PATH , "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)
attention_mask = torch.ones_like(tokenized_input)
with torch.no_grad():
outputs = model.generate(
tokenized_input,
attention_mask=attention_mask,
max_new_tokens=100,
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_id = re.sub(".*/", "", model_name)
with open(f"./{jsonl_id}-outputs.jsonl", 'w', encoding='utf-8') as f:
for result in results:
json.dump(result, f, ensure_ascii=False)
f.write('\n')
```
### 直接的な使用
このモデルは以下のような日本語タスクに使用できます:
- テキスト生成
- 質問応答
- 翻訳
- 要約
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
import os
HF_TOKEN = os.getenv("HF_TOKEN")
model_name = "masakiai/llm-jp-3-13b-finetune"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
text = "日本の文化について教えてください。"
input_ids = tokenizer(text, return_tensors="pt").input_ids
output = model.generate(input_ids, max_length=50)
print(tokenizer.decode(output[0], skip_special_tokens=True))
```
---
|