harataku's picture
Update README.md
edc0eef verified
|
raw
history blame
4.48 kB
# llm-jp-3-13b-finetune 使用方法ガイド
## モデル概要
このモデルは、llm-jp/llm-jp-3-13bをベースにLoRA (Parameter-Efficient Fine-Tuning)で学習された公開モデルです。
## 必要な環境
- Python 3.10以上
- CUDA対応GPU(推奨)
- 必要なライブラリ:
- transformers
- bitsandbytes
- accelerate
- torch
- peft
## インストール手順
```bash
# 必要なライブラリのインストール
pip install -U pip
pip install -U transformers
pip install -U bitsandbytes
pip install -U accelerate
pip install -U peft
pip install -U torch
```
## 基本的な使用方法
### 1. シンプルな使用方法
```python
from transformers import pipeline
# パイプラインの作成
generator = pipeline(
"text-generation",
model="harataku/llm-jp-3-13b-finetune",
device=0 # GPU使用
)
# テキスト生成
prompt = """### 指示
好きな食べ物について教えてください
### 回答
"""
response = generator(prompt, max_length=200, num_return_sequences=1)
print(response[0]['generated_text'])
```
### 2. 詳細な設定による使用方法
```python
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
BitsAndBytesConfig
)
import torch
# モデルの設定
model_id = "harataku/llm-jp-3-13b-finetune"
# 量子化の設定
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
)
# モデルとトークナイザーの読み込み
model = AutoModelForCausalLM.from_pretrained(
model_id,
quantization_config=bnb_config,
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
# 推論用の関数
def generate_response(input_text):
prompt = f"""### 指示
{input_text}
### 回答
"""
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]
response = tokenizer.decode(outputs[tokenized_input.size(1):], skip_special_tokens=True)
return response
# 使用例
input_text = "好きな食べ物について教えてください"
response = generate_response(input_text)
print(response)
```
## パラメータの説明
### モデル生成時のパラメータ
- `max_new_tokens`: 生成する最大トークン数(デフォルト: 100)
- `do_sample`: サンプリングを行うかどうか(デフォルト: False)
- `repetition_penalty`: 繰り返しを抑制するためのペナルティ(デフォルト: 1.2)
### 入力フォーマット
入力は以下の形式で行います:
```
### 指示
[入力テキスト]
### 回答
```
## トラブルシューティング
1. メモリエラーが発生する場合:
```python
# より少ないメモリ使用量の設定
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.float16 # bfloat16からfloat16に変更
)
```
2. GPUが利用できない場合:
```python
# CPUでの実行設定
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="cpu",
low_cpu_mem_usage=True
)
```
## 注意事項
- 4bit量子化を使用しているため、メモリ使用量は効率的ですが、推論速度とのトレードオフがあります
- GPU環境での実行を推奨します
- 長い入力テキストの場合は、`max_new_tokens`の値を適宜調整してください
## ライセンス
本モデルはベースモデル(llm-jp/llm-jp-3-13b)のライセンスを継承しています。また、学習データとして使用したichikara-instructionデータセットのライセンス(CC-BY-NC-SA)も適用されます。
## 引用
学習データについて:
```
関根聡, 安藤まや, 後藤美知子, 鈴木久美, 河原大輔, 井之上直也, 乾健太郎.
ichikara-instruction: LLMのための日本語インストラクションデータの構築.
言語処理学会第30回年次大会(2024)
```
## 更新履歴
- 2024/03/XX: モデルをpublic設定に変更
- 2024/03/XX: READMEを更新し、より簡単な使用方法を追加