File size: 2,847 Bytes
082b308 e70fdf8 9928e37 00114dc 082b308 312859c e70fdf8 91c518c 082b308 c5eb426 67aa07d acb6f01 67aa07d e42ab22 082b308 d9feb71 e8943cb e42ab22 082b308 b21390e 768a72e f530276 054b9f8 e42ab22 082b308 b409a85 15cb908 63570d8 4ea3d5d 60d56f3 e42ab22 082b308 e42ab22 7aaa4fe e42ab22 082b308 e42ab22 ee7271f 7aaa4fe ee7271f 7aaa4fe ee7271f 7aaa4fe ee7271f e70fdf8 0d37439 e70fdf8 9928e37 |
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 |
---
library_name: transformers
datasets:
- fukugawa/kamakura-tasks-100
license: gemma
---
## Overview
このモデルは、「[gemma-2-9b](https://huggingface.co/google/gemma-2-9b)」に対して、データセット「[kamakura-tasks-100](https://huggingface.co/datasets/fukugawa/kamakura-tasks-100)」の100件を用いてファインチューニングを実施し、指示応答できるようにしました。
## Demo
このモデルを使ったChatbotのデモをspaces上に公開しています。
* [Chatbotデモ](https://huggingface.co/spaces/fukugawa/gemma-2-9b-finetuned)
## Blog Post
* [自作データセットによるGemma2-9Bのファインチューニング](https://matsuolab-geniac.notion.site/Gemma2-9B-fukugawa-d2c52f881d324c6fbc37febe3d30d0c0)
## Usage
以下は、ELYZA-tasks-100-TV(100問)の回答を生成する推論コードです。
#### Requirements:
```bash
# python 3.10
pip install -U transformers
pip install -U accelerate
pip install -U peft
```
「[gemma-2-9b](https://huggingface.co/google/gemma-2-9b)」を利用するには、HFにログインし、利用規約に同意する必要があります。以下のコマンドでログインしてください(Notebookではfrom_pretrained()のtoken引数でも可)。
```bash
huggingface-cli login
```
#### Inference:
~~~~python
import json
import torch
from datasets import Dataset
from tqdm import tqdm
from transformers import AutoTokenizer, AutoModelForCausalLM
model_id = "fukugawa/gemma-2-9b-finetuned"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto", torch_dtype=torch.bfloat16)
datasets = Dataset.from_json("./elyza-tasks-100-TV_0.jsonl")
results = []
for data in tqdm(datasets):
input = data["input"]
prompt = f"### 指示\n{input}\n### 回答\n"
tokenized_input = tokenizer.encode(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
tokenized_input,
max_new_tokens=512,
do_sample=False,
)[0]
output = tokenizer.decode(outputs[tokenized_input.size(1):], skip_special_tokens=True)
results.append({"task_id": data["task_id"], "input": input, "output": output})
with open("./outputs.jsonl", 'w', encoding='utf-8') as f:
for result in results:
json.dump(result, f, ensure_ascii=False)
f.write('\n')
~~~~
ELYZAタスクTVのJSONLファイル(elyza-tasks-100-TV_0.jsonl)が必要です。
推論時に18〜19GBのGPUメモリが必要になります。Nvidia L4 24GBメモリで動作確認しています。
100問の推論時間は約15〜20分程です。
カレントディレクトリにoutputs.jsonlが出力されます。
## Dataset
* [kamakura-tasks-100](https://huggingface.co/datasets/fukugawa/kamakura-tasks-100) |