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

インストール手順

# 必要なライブラリのインストール
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. シンプルな使用方法

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. 詳細な設定による使用方法

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. メモリエラーが発生する場合:
# より少ないメモリ使用量の設定
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.float16  # bfloat16からfloat16に変更
)
  1. GPUが利用できない場合:
# 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を更新し、より簡単な使用方法を追加